ClooSearch powered by: Azure Search + Azure OpenAI + Bot Framework + Langchain + Azure SQL + CosmosDB + Bing Search API
본 Hands-on-Lab에는 다양한 위치에 흩어져 있는 다양한 종류의 데이터를 이해할 수 있는 Multi-Channel Smart Chatbot 및 검색 엔진이 필요하며, 또한 대화형 챗봇은 문의에 대한 답변과 함께 출처 및 답변을 얻을 수 있는 방법 및 위치에 대한 설명을 제공할 수 있어야 합니다. 즉, 귀사의 비즈니스 데이터에 대한 질문을 해석, 이해 및 답변할 수 있는 프라이빗 및 보안 ChatGPT 구축을 목표로 하고 있습니다.
이 Hands-on-Lab의 목표는
- Bot Framework로 구축되어 여러 채널(Web Chat, MS Teams, SMS, Email, Slack 등)에 동기화 할 수 있는 Backend Bot API 구성
- 검색과 봇 UI가 있는 프론트엔드 웹 애플리케이션 구성
이 두개지의 Goals을 통하여 사용자 자신만의 데이터를 구축된 ChatBot을 통해 보여주는 것 입니다.
For Microsoft FTEs: This is a customer funded VBD, below the assets for the delivery.
Item | Description | Link |
---|---|---|
VBD SKU Info and Datasheet | CSAM must dispatch it as "Customer Invested" against credits/hours of Unified Support Contract. Customer decides if 3 or 5 days. | ESXP SKU page |
VBD Accreditation for CSAs | Links for CSAs to get the Accreditation needed to deliver the workshop | Link 1 , Link 2 |
VBD 3-5 day POC Asset (IP) | The MVP to be delivered (this GitHub repo) | Azure-Cognitive-Search-Azure-OpenAI-Accelerator |
VBD Workshop Deck | The deck introducing and explaining the workshop | Intro AOAI GPT Azure Smart Search Engine Accelerator.pptx |
CSA Training Video | 2 Hour Training for Microsoft CSA's | POC VBD Training Recording |
Hands on Lab을 위한 사전 필수 항목
- 애저 구독 (Azure subscription)
- GPT-4를 포함한 Azure Open AI에 대한 신청 승인.
- 사용자는 해당 리소스 그룹에 대한 기여자 이상의 권한
- Resource Group 생성.
- 멀티 테넌트(Multi-tenant) 앱 등록(서비스 주체).
- 사용자가 질문을 입력합니다.
- 앱에서 OpenAI의 GPT-4모델은 LLM으로써 프롬프트를 사용하여 사용자의 질문을 기반으로 가장 적합한 답을 찾을 소스를 결정합니다.
- 네 가지 유형의 소스:
- 3a. Azure SQL Database
- 3b. Azure Bing Search API (인터넷 접근)
- 3c. Azure Cognitive Search
- 3c.1. OpenAI을 사용하여 상위 K개 문서 청크를 벡터화합니다.
- 3c.2. 벡터 기반 인텍스를 생성합니다.
- 3c.3. 벡터 기반 인덱스에 대해 벡터 검색을 수행하여 상위 N개 청크를 가져옵니다.
- 3d. CSV Tabular File
- 사용자 질문을 기반으로 앱은 소스로부터 결과를 검색하고 답을 생성합니다.
- 튜플(Question and Answer)은 CosmosDB에 저장되어 대화내용을 기억 및 추가 분석을 기록할 수 있습니다.
- 답변을 사용자 전달합니다.
https://gptsmartsearch.azurewebsites.net/
마이크로소프트 팀의 데모봇을 열려면 여기를 클릭하세요.
- Bot Framework 및 Bot Service를 사용하여 Bot API 백엔드를 호스팅하고 MS Teams를 포함한 여러 채널에 적용 가능합니다.
- 100% Python.
- Azure Cognitive Services를 사용하여 언어 탐지, OCR 이미지, 키 구문 추출, 개체 인식(인물, 이메일, 주소, 조직, URL) 등 비정형 문서를 색인화하고 풍부하게 만듭니다.
- Azure Cognitive Search의 벡터 검색 기능을 사용하여 가장 적합한 답변을 제공합니다.
- 사용자가 시스템과 상호 작용할 때 필요에 따라 벡터를 생성합니다.
- LangChain을 사용하여 Azure OpenAI와 상호 작용하고 프롬프트를 구성하여 에이전트를 만들기 위한 래퍼로 사용합니다.
- 다국어를 지원합니다.
- 멀티 인덱스를 지원합니다.
- CSV 파일 및 SQL Flavor 데이터베이스를 사용한 표 형태의 데이터를 지원합니다.
- Azure AI Document Intelligence SDK (former Form Recognizer)를 사용하여 복잡하고 규모가 큰 PDF 문서를 파싱할 수 있습니다.
- Bing Search API를 사용하여 인터넷 검색 및 공개 웹사이트 질의응답을 지원합니다.
- CosmosDB를 영구 메모리로 사용하여 사용자의 대화를 저장합니다.
- Streamlit을 사용하여 Frontend 웹 애플리케이션을 python으로 구축합니다.
Note: (Pre-requisite) You need to have an Azure OpenAI service already created
- Fork this repo to your Github account.
- Azure OpenAI 스튜디오에서 다음 모델을 배포합니다. ** 배포 이름이 모델 이름과 동일한지 확인합니다.**
- "gpt-35-turbo"
- "gpt-35-turbo-16k"
- "gpt-4"
- "gpt-4-32k"
- "text-embedding-ada-002"
- Create a Resource Group where all the assets of this accelerator are going to be. Azure OpenAI can be in different RG or a different Subscription.
- Hands-on-Lab 실행에 필요한 Azure Infrastructure(Azure Cognitive Search, Cognitive Services 등)를 모두 만들려면 아래를 클릭하십시오:
Note: 만약 사용자의 구독에 'Cognitive services multi-Service account'가 없는 경우, 수동으로 azure portal에 만들고 Responsible AI를 읽고 동의하시기 바랍니다.
-
Clone your Forked repo to your AML Compute Instance. If your repo is private, see below in Troubleshooting section how to clone a private repo.
-
Python 3.10 conda 환경에서 코드를 실행해야 합니다.
-
Conda 환경을 새로 만들고, activate 시켜줍니다. 그런 다음 conda 환경에 필수 라이브러리들을 설치시켜 줍니다.
conda create -n <환경명> python=3.10
conda activate <환경명>
pip install -r ./common/requirements.txt
설치할때, 일부 라이브러리가 dependancies 오류를 보여줄 수도 있습니다. 하지만 오류에 관계없이 올바르게 설치되었으니 안심하시고 넘어가시면 됩니다.
- 4단계에서 생성된 Azure Infrastructure 서비스들을 사용하여 'credentials.env'파일을 사용자 자신의 값으로 편집합니다.
- 노트북을 순서대로 실행합니다. 노트북은 서로 상호작용을 하기 때문에 꼭 순서대로 실행을 해주세요.
-
AOAI 소개
-
사전 준비
- 사전 필요 Azure 서비스 배포
- Conda 환경 생성 및 배포
- 필수 패키지 설치
- Smart Search Process
- 01-Load-Data-ACogSearch
- Cognitive Search에 데이터 적재 및 검색 엔진을 로드합니다.
- Azure blob Storage의 데이터를 로드 하고 Skillset을 생성합니다.
- 이 단계에서는 뉴스 출판물이 업로드 되어 있는 Azure Blob Storage Container를 사용할 예정입니다. (DOCX/DOC, XSLX/XLS, PPTX/PPT, MSG, HTML, XML, ZIP 및 일반 텍스트 파일 등 다양한 파일 형식을 지원)
- Cognitive Search에서 Skillset, Search Index, Indexer를 생성합니다.
- 02-LoadCSVOneToMany-ACogSearch
- Cognitive Search에 CSV 파일 적재 및 검색 엔진을 로드합니다.
- CSV파일을 인덱싱하는 단계를 생성하고, 실행하여 각 행을 Azure Cognivie Search에서 검색 가능하게 만듭니다.
- Text Splitter, Language, Detection - Skillset을 생성합니다.
- 벡터 기반 인덱스를 생성합니다.
- 03-Quering-AOpenAI
- 검색엔진을 사용하여 쿼리는 통해 데이터 검색합니다.
- 이 단계에서의 Multi-Index 데모는 회사가 서로 다른 유형의 문서와 완전히 다른 주제를 로드하고 검색 엔진이 가장 연관성이 높은 결과로 응답해야 하는 시나리오를 따릅니다.
- 04-Complex-Docs
- 크고 복잡한 파일의 처리 방법에 대해 알아보겠습니다.
- PyPDF Library와 Azure AI Document를 비교합니다.
- 벡터 기반 인덱스에 문서의 청크와 벡터를 업로드합니다.
- 05-Adding-memory
- 메모리를 포함한 LLM을 효과적으로 처리할 수 있는 방법에 대해 알아봅니다.
- GPT 모델에 Memory를 추가하여 GPT Smart Search 엔진에 적용합니다.
- CosmosDB를 영구적인 Memory로 사용합니다.
- 06-TabularDataQA
- 표 형태의 데이터 검색 및 처리 방법에 대해 실습합니다.
- LLM 모델을 사용하여 표 형태의 데이터를 이해하고 질문에 대답하기 위해서 CSV 파일 혹은 SQL Database에서 문맥을 얻어야 합니다.
- 이러한 소스를 다루는 방법을 이해하고, 데이터를 분석하여 답을 도출합니다.
- 07-SQLDB_QA
- GPT-4와 같이 뛰어난 LLM이 어떻게 인간의 질문을 이해하고, 이를 SQL 쿼리로 변환하여 답을 얻는지 확인합니다.
- 08-BingChatClone
- Langchain과 Azure Bing Search API 서비스를 활용하여 웹 검색 기능으로 GPT Smart Search Engine을 부스팅하는 방법에 대해 실습합니다.
- Bing Search API를 사용하여 Web Search Agent를 생성하는 과정을 확인합니다.
- Callback Handle와 사용법 및 봇 애플리케이션에서의 중요성을 확인합니다.
- 09-Smart_Agent
- 지금까지 진행한 노트북들을 GPT Smart Seach Engine 챗봇에 결합합니다.