Skip to content

Latest commit

 

History

History
51 lines (35 loc) · 3.37 KB

File metadata and controls

51 lines (35 loc) · 3.37 KB

✅ RAG pipeline 고도화

rag-pipeline-ingest-query-flow-b-2048x960

RAG 파이프라인 구성 요소 개요: 수집 및 쿼리 흐름 (이미지출처)

1. RAG 란?

  • 검색 증강 생성 (Retrieval-Augmented Generation, RAG)
  • LLM 기반 AI 어플리케이션을 개발할 때, 비지니스 데이터로 LLM 의 생성 기능을 보강 (link)

2. RAG 성능 개선

LangGraph_RAG

  • RAG 기본형 설계의 단점

    • [검색단계] 대화이력 누락 현상
      • VDB 검색할 때, 이전의 대화이력은 누락되고 사용자가 입력한 질문만 반영되는 문제
      • 예시 (일자리 관련 txt 파일로 VDB 를 구성한 경우)
        • 👧 : "난 25살이야."
        • 🤖 : "안녕하세요, 무엇을 도와드릴까요?"
        • 👧 : "내 나이에 맞는 일자리 정보를 알려줄래?"
        • 🤖 : "사용자의 나이를 알 수 없으므로 제공된 문서에서 올바른 정보를 찾을 수 없습니다."
    • [검색단계] Lost in the middle
      • Relevant Context 위치와 LLM 성능 사이에 U자형 그래프가 그려진다는 사실이 밝혀짐
      • 처음과 마지막 위치의 문서들은 답변 생성에 잘 반영되는데 비해, 중간 정도의 위치에 있는 문서들은 LLM 으로부터 패싱되는 문제
      • 참고자료 : 1️⃣, 2️⃣, 3️⃣
    • [생성단계] Prompt, Context Window 사이즈가 지나치게 클 경우 답변 생성 시간이 오래 걸리고 Token 소진도 큼
  • RAG 기본형 설계의 단점을 극복하고 성능 개선할 수 있는 방법들

    • [검색단계] Standalone question
      • 가이드 : LLM 호출하여 (질문 + 대화이력) 을 독립형 질문으로 만들고, 이를 VDB 검색 단계에 전달
      • 효과 : VDB 검색 시, 대화이력 누락 현상 (간접적으로) 극복
    • [검색단계] Long-Context Reorder
      • LLM 이 우선적으로 처리해야 하는 문서를 Context Window 의 앞단에 배치하는 등 Long-Context 내 순서 구조를 재배열
      • 참고자료 : 🗂️
    • [생성단계] System Prompt 최적화
      • 가이드 : Prompt 에 넘기는 파라미터들을 어떤 포맷, 순서로 처리해야 하는지 간결한 명령문으로 전달
      • 효과 : 답변 생성 시간 단축, Token 소진 절약
      • 참고자료 : 🗂️
    • [검색/생성] LangGraph 적용
      • 가이드 : 각 노드의 작업이 끝날 때마다 처리결과를 전역의 State 객체에 업데이트하고, 모든 노드들이 State 객체를 파라미터로 받아 다음단계에 어떤 작업을 수행할 지 결정, ...
      • 효과 : 전체 프로세스 처리 시간 단축, ...