Skip to content

[FEAT] 검색된 문서 활용 개선 - Citation, 문서 재배치, 구조화 응답 #1

Description

@hwbae42

기능 설명

RAG의 생성 파트에서 retrieve된 데이터를 잘 활용하는 기법들 도입

배경/동기

현재 RAG 파이프라인은 검색된 문서를 단순 연결(concatenate)하여 LLM에 전달하고 있어 다음 문제가 있다:

  • 출처 불명확: 답변이 어떤 문서를 근거로 생성되었는지 추적 불가
  • Lost in the Middle: 문서 5개 중 중간에 위치한 문서는 LLM이 무시할 확률 30%+ (Liu et al., 2024)
  • 응답 비일관성: plain text 응답이라 신뢰도 판단 불가, 후처리 어려움

제안하는 해결 방법

추가 API 호출 없이(비용 0) 프롬프트/코드 수정만으로 3가지 기법 도입:

  1. Citation + 문서 번호 태깅: 문서에 [문서1], [문서2] 태그를 부여하고, 프롬프트에서 출처 명시를 강제
  2. Lost in the Middle 재배치: 관련도 1위 문서를 맨 앞, 2위를 맨 뒤에 배치하여 LLM 주의력 분산 방지
  3. Structured Output: with_structured_output으로 answer, confidence(0~1), sources를 JSON 구조로 반환

각 기법은 configs/config.yaml에서 on/off 가능하도록 모듈화하여 구현한다.

대안

  • CoT (Chain-of-Thought) 프롬프트: "단계별로 생각해보세요" 추가로 추론 품질 향상 가능하나, 이번에는 검색 문서 활용에 집중하기 위해 다음 이터레이션으로 보류
  • Context Compression (LLM 요약형): 문서를 LLM으로 요약 후 전달하면 노이즈 감소 효과가 크지만, 추가 API 호출(비용 1.5배)이 발생하므로 v0.3.0에서 검토
  • Query Rewriting: 질문을 검색 최적화 형태로 재작성하는 기법. 효과적이나 역시 추가 LLM 호출 필요하여 보류
  • Faithfulness Check: 생성 후 별도 LLM으로 환각 검증. 환각률 20~40% -> 5% 이하로 감소 (ConfRAG, 2025)하지만 비용 2배. v0.3.0+ 검토

추가 정보

RAG 생성 단계.md

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions