기능 설명
RAG의 생성 파트에서 retrieve된 데이터를 잘 활용하는 기법들 도입
배경/동기
현재 RAG 파이프라인은 검색된 문서를 단순 연결(concatenate)하여 LLM에 전달하고 있어 다음 문제가 있다:
- 출처 불명확: 답변이 어떤 문서를 근거로 생성되었는지 추적 불가
- Lost in the Middle: 문서 5개 중 중간에 위치한 문서는 LLM이 무시할 확률 30%+ (Liu et al., 2024)
- 응답 비일관성: plain text 응답이라 신뢰도 판단 불가, 후처리 어려움
제안하는 해결 방법
추가 API 호출 없이(비용 0) 프롬프트/코드 수정만으로 3가지 기법 도입:
- Citation + 문서 번호 태깅: 문서에 [문서1], [문서2] 태그를 부여하고, 프롬프트에서 출처 명시를 강제
- Lost in the Middle 재배치: 관련도 1위 문서를 맨 앞, 2위를 맨 뒤에 배치하여 LLM 주의력 분산 방지
- 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
기능 설명
RAG의 생성 파트에서 retrieve된 데이터를 잘 활용하는 기법들 도입
배경/동기
현재 RAG 파이프라인은 검색된 문서를 단순 연결(concatenate)하여 LLM에 전달하고 있어 다음 문제가 있다:
제안하는 해결 방법
추가 API 호출 없이(비용 0) 프롬프트/코드 수정만으로 3가지 기법 도입:
각 기법은 configs/config.yaml에서 on/off 가능하도록 모듈화하여 구현한다.
대안
추가 정보
RAG 생성 단계.md