실전 RAG 정복하기

동기

2023년 7월 우아한형제들을 시작으로 시작된 4일짜리 프롬프톤 오프라인 행사를 2시간짜리로 압축하여 LLM 기반의 App을 만드는 방법을 설명하고 데모를 시연합니다.

2022년 11월, OpenAI의 ChatGPT가 등장한 이래로 Large Language Model(LLM)을 이용하여 많은 기업들이 자사 데이터 기반의 챗봇 서비스를 만드는 프로젝트를 진행하였습니다. 이 세션은 LLM을 이용하여 우리가 소유한 데이터로부터 원하는 답변을 만들 수 있는 검색 증강 생성(RAG) 아키텍처 기반으로 솔루션을 만드는 방법과 프롬프트엔지니어링 기법을 소개합니다. 해당 행사에 참석하신 분들은 LLM App을 만들 수 있는 무료 동영상 강좌와 실습용 GitHub Repository를 제공해 드립니다.

설명:

우리가 소유한 데이터로부터 필요한 정보를 추출하는 강력한 도구를 만드는 방법을 설명하고 데모를 시연합니다. 데이터를 청킹하여 검색 엔진에 색인화하고, 나의 의도에 맞는 데이터를 검색하고 OpenAI LLM으로 원하는 결과를 만들 수 있습니다. 더 빠르고 쉽게 아이디어를 만들고, 테스트하고, 배포할 수 있도록 LLMOps를 활용하는 방법도 함께 소개합니다. 이 워크샵을 통해 당신도 RAG 마스터가 될 수 있습니다!



2시간 이내에 다룰 수 있는 범위는 다 다뤄 보는게 목표. 설명이랑 실습이 자연스럽게 연계되어야 함. 시간 관계를 고려해서 실습 데모는 영상으로 미리 만들어서 재생하는 것으로 시간 맞춤.

아젠다 - 2시간

  1. RAG가 필요한 이유
    1. RAG의 장점으로는 답변을 생성하는 과정에서 외부 정보 활용이 가능하다는 점(확장성),
    2. 사용자에게 더 맞춤화된 답변을 제공할 수 있다는 점(유연성 및 확장성),
    3. 그리고 검증 가능한 출처를 기반으로 답변을 제공해 할루시네이션을 최소화할 수 있는 점(정확성) 등이 있습니다.
  2. RAG 구성하는 방법
  3. 단계별 실전 데모
    1. 데이터 수집 및 색인화 
      1. 샘플 데이터 수집
      2. 색인화
      3. 테스트 - API 테스트하기
    2. 심화 과정 - 데이터에 따라서 접근 방법: https://github.com/HyounsooKim/azure-openai-samples-kr/blob/main/quick_start/09_LLM_rag_demo.ipynb
      1. 외부 사이트로부터 검색 방법 - Bing Search API 활용
      2. 데이터가 있을 때 색인화 방법
      3. PDF로부터 색인화 방법
      4. Prompt Flow를 활용한 Function Calling 기능
    3. LLMOps
      1. 서비스 만들기
      2. 대량 테스트
    4. 심화 과정 - DevOps
      1. 도커 생성
      2. 도커 배포
    5. 원모어 씽
      1. 청킹 전략!
      2. 살아있는 정보를 기반으로 실시간 업데이트는 어떻게?


시나리오

1안. Wikipedia의 내용을 기반으로 질의 응답하는 챗봇 서비스

  • Embedding 되어져 있는 데이터 기반으로 시작하는 방법
    • 데이터 업로드
    • 색인화 (키워드 + 벡터 = 하이브리드)
    • 조회 및 검색 On your data
    • 나만의 LLM API를 만드는 방법
    • App으로 활용하는 방법

2안. Founders Hub의 내용을 기반으로 질의 응답하는 챗봇 서비스 (외부 사이트)

  • Prompt Flow를 통한 대량 데이터 수집
  • Few-shot을 통한 데이터 청킹

3안. PDF가 있을 때, 

  • Document intelligence
  • 레이블 없음

1 개의 댓글

  1. pip uninstall -y promptflow promptflow-core promptflow-devkit promptflow-azure # uninstall promptflow and its sub-packages

    pip install -r requirements.txt

    promptflow[azure]>=1.10.0
    promptflow-tools
    python-dotenv
    bs4
    keyrings.alt
    promptflow-vectordb==0.2.3


    curl https://fuzzy-meme-wrr5w67x47w3vgvq-8080.app.github.dev/score --data '{"url":"http://studydev.com/me"}' -X POST  -H "Content-Type: application/json"