전체 그래프
RAG

Document Augmentation

ai-mlrag

상위: Advanced RAG Techniques

문서의 각 내용에 대해 다양한 '예상 질문'을 LLM으로 미리 생성하고, 이를 원본 텍스트와 함께 벡터 DB에 저장하여 사용자의 어떤 질문 스타일에도 대응할 수 있도록 검색 대상을 '증강'하는 기법

  • 작동방식
    1. 문서 분할 및 질문 생성: 문서를 적당한 크기의 '상위 문서(parent document)'로 나누고, 각 상위 문서에서 LLM을 이용해 사용자가 할 법한 여러 개의 '예상 질문'을 생성
    2. 통합 인덱싱 (Unified Indexing): 원본 문서 조각과 여기서 생성된 모든 예상 질문들을 하나의 벡터 데이터베이스에 함께 저장(인덱싱). 이때, 각 예상 질문은 자신이 어떤 원본 문서 조각에서 나왔는지 출처(메타데이터)를 기억
    3. 질문 기반 검색 (Question-to-Question Search): 사용자가 실제 질문을 하면, 벡터 DB에서 의미적으로 가장 유사한 대상을 찾음. 이때 사용자의 질문은 DB에 저장된 원본 텍스트보다는 미리 생성해 둔 '예상 질문'과 일치할 확률이 높음.
    4. 원본 문맥 참조 및 답변 생성: 가장 유사한 '예상 질문'을 찾았다면, 그 질문이 가리키고 있는 '원본 상위 문서' 전체를 최종 컨텍스트로 가져옴. 이 풍부한 컨텍스트를 바탕으로 LLM이 최종 답변을 생성.
  • 장점
    • 검색 강건성(Robustness) 향상: 사용자가 어떤 표현으로 질문하더라도, DB에 저장된 다양한 스타일의 '예상 질문'과 매칭될 확률이 높아져 검색 실패율을 줄임.
    • 고품질 컨텍스트: 최종적으로는 작은 조각이 아닌, 더 크고 풍부한 '상위 문서'를 컨텍스트로 사용하므로 답변의 질이 향상
    • HyPE (Hypothetical Prompt Embedding)와 유사하지만, 검색된 대상의 부모 문맥을 활용한다는 점에서 한 단계 더 나아간 접근법
  • 구현
    • LLM으로 각 문서 단위의 '예상 질문'들을 생성
    • 원본 문서 조각과 생성된 질문들을 모두 Document 객체로 만들어 하나의 리스트에 통합
    • 통합 리스트를 FAISS 벡터 저장소에 인덱싱하며, 이때 메타데이터에 원본 상위 문서의 전체 텍스트를 저장
    • 검색 후에는 반환된 Document 객체의 metadata['text']를 참조하여 답변 생성의 최종 컨텍스트로 활용