Git Product home page Git Product logo

kor_ssa's Introduction

image

ClooSearch powered by: Azure Search + Azure OpenAI + Bot Framework + Langchain + Azure SQL + CosmosDB + Bing Search API

Open in GitHub Codespaces Open in VS Code Dev Containers

본 Hands-on-Lab에는 다양한 위치에 흩어져 있는 다양한 종류의 데이터를 이해할 수 있는 Multi-Channel Smart Chatbot 및 검색 엔진이 필요하며, 또한 대화형 챗봇은 문의에 대한 답변과 함께 출처 및 답변을 얻을 수 있는 방법 및 위치에 대한 설명을 제공할 수 있어야 합니다. 즉, 귀사의 비즈니스 데이터에 대한 질문을 해석, 이해 및 답변할 수 있는 프라이빗 및 보안 ChatGPT 구축을 목표로 하고 있습니다.

이 Hands-on-Lab의 목표는

  1. Bot Framework로 구축되어 여러 채널(Web Chat, MS Teams, SMS, Email, Slack 등)에 동기화 할 수 있는 Backend Bot API 구성
  2. 검색과 봇 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) 앱 등록(서비스 주체).

아키텍쳐

Architecture

Flow

  1. 사용자가 질문을 입력합니다.
  2. 앱에서 OpenAI의 GPT-4모델은 LLM으로써 프롬프트를 사용하여 사용자의 질문을 기반으로 가장 적합한 답을 찾을 소스를 결정합니다.
  3. 네 가지 유형의 소스:
    • 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
  4. 사용자 질문을 기반으로 앱은 소스로부터 결과를 검색하고 답을 생성합니다.
  5. 튜플(Question and Answer)은 CosmosDB에 저장되어 대화내용을 기억 및 추가 분석을 기록할 수 있습니다.
  6. 답변을 사용자 전달합니다.

Microsoft 데모

https://gptsmartsearch.azurewebsites.net/

마이크로소프트 팀의 데모봇을 열려면 여기를 클릭하세요.


🔧특성

  • Bot FrameworkBot 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으로 구축합니다.

Hands-On-Lab의 실행단계

Note: (Pre-requisite) You need to have an Azure OpenAI service already created

  1. Fork this repo to your Github account.
  2. Azure OpenAI 스튜디오에서 다음 모델을 배포합니다. ** 배포 이름이 모델 이름과 동일한지 확인합니다.**
    • "gpt-35-turbo"
    • "gpt-35-turbo-16k"
    • "gpt-4"
    • "gpt-4-32k"
    • "text-embedding-ada-002"
  3. 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.
  4. Hands-on-Lab 실행에 필요한 Azure Infrastructure(Azure Cognitive Search, Cognitive Services 등)를 모두 만들려면 아래를 클릭하십시오:

Deploy To Azure

Note: 만약 사용자의 구독에 'Cognitive services multi-Service account'가 없는 경우, 수동으로 azure portal에 만들고 Responsible AI를 읽고 동의하시기 바랍니다.

  1. 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.

  2. Python 3.10 conda 환경에서 코드를 실행해야 합니다.

  3. Conda 환경을 새로 만들고, activate 시켜줍니다. 그런 다음 conda 환경에 필수 라이브러리들을 설치시켜 줍니다.

conda create -n <환경명> python=3.10
conda activate <환경명>
pip install -r ./common/requirements.txt

설치할때, 일부 라이브러리가 dependancies 오류를 보여줄 수도 있습니다. 하지만 오류에 관계없이 올바르게 설치되었으니 안심하시고 넘어가시면 됩니다.

  1. 4단계에서 생성된 Azure Infrastructure 서비스들을 사용하여 'credentials.env'파일을 사용자 자신의 값으로 편집합니다.
  2. 노트북을 순서대로 실행합니다. 노트북은 서로 상호작용을 하기 때문에 꼭 순서대로 실행을 해주세요.

목차

  1. AOAI 소개

  2. 사전 준비

  • 사전 필요 Azure 서비스 배포
  • Conda 환경 생성 및 배포
  • 필수 패키지 설치
  1. 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 챗봇에 결합합니다.

kor_ssa's People

Contributors

yooglee avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.