Raudaschl/rag-fusion
RAG-Fusion: multi-query generation + Reciprocal Rank Fusion for better retrieval-augmented generation. Includes evaluation harness with NFCorpus/BEIR.
RAG-Fusion: 빠른 설명
개요 – RAG-Fusion은 검색 증강 생성(RAG)을 기반으로 하는 연구 수준의 검색 파이프라인입니다. 이 파이프라인은 다음과 같은 방식으로 고전적인 "어휘 불일치" 문제를 해결합니다:
- 대체 쿼리 생성: 소형 LLM을 사용하여 사용자 질문당 4개의 재작성 쿼리를 생성합니다.
- 각 쿼리 이중 실행: 키워드 기반 BM25 인덱스와 밀집 벡터 인덱스를 사용하여 각각 검색을 수행합니다.
- 10개 결과 목록 통합: Reciprocal Rank Fusion (RRF)을 사용하여 여러 목록에서 상위에 나타나는 문서에 높은 점수를 부여합니다.
- 선택적 재순위화: 교차 인코더나 결정 모델(예: Jev, OpenAI Decisions API)을 사용하여 통합된 후보 풀을 재평가한 후, 상위 5~10개의 결과를 생성 답변 모델에 전달합니다.
중요성 – 추가적인 재작성과 BM25 + 벡터 혼합 검색으로 인한 지연 시간 증가는 미미하며(재작성 호출 시 약 ≈1.5초), API 비용도 매우 저렴합니다(1,000 쿼리당 약 ≈$0.06). 의료 분야 NFCorpus 벤치마크 실험에서 전체 Hybrid + Diverse + Rerank 구성은 NDCG@10을 약 +0.05(단순 벡터 베이스라인 대비 약 19% 향상), MRR을 +0.09 향상시켰습니다. 이러한 이점은 다음과 같은 경우에 특히 두드러집니다:
- 사용자의 표현이 말뭉치의 용어와 다른 경우,
- 정밀도보다 재현율이 더 중요한 경우,
- 하위 시스템이 짧은 검색 결과 목록을 처리할 수 있는 경우(예: 합성 LLM 또는 여러 후보를 보여주는 UI).
사용을 피해야 할 때 – 1초 미만의 지연 시간이 필요하거나, 엄격하게 관리된 FAQ 스타일의 지식 베이스를 가지고 있거나, 정확한 일치가 중요한 코드/식별자를 검색하는 경우에는 추가적인 계산 비용이 가치가 없습니다.
사용 방법 – 저장소를 복제하고 Python 의존성을 설치한 후, OpenAI 키(선택적으로 Jev 키)를 추가하고 다음을 실행하십시오:
python main.py # demo end-to-end
python evaluate.py # run the quantitative benchmark
eval/ 폴더에는 전체 평가 도구(데이터셋 로더, IR 지표, 검색 변형, 재순위화 도구, 지연 시간/비용 벤치마크, 부트스트랩 신뢰 구간 유틸리티)가 포함되어 있습니다. experiments/ 하위 폴더에는 각 재순위화 도구(Jev, OpenAI Decisions, Microsoft-Decision-1)에 대한 상세 보고서와 원시 결과, 그리고 arXiv 논문의 재현 실험이 포함되어 있습니다.
결론 – RAG-Fusion은 저~중 처리량의 지식 집약적 검색 시나리오에서 검색 품질을 향상시키기 위한 구체적이고 재현 가능한 레시피입니다. 저렴한 LLM 기반 쿼리 확장 단계와 무료 BM25 + 벡터 혼합 검색, 그리고 적절한 재순위화를 결합하여 표준 RAG 파이프라인 대비 통계적으로 유의미한 향상을 달성할 수 있음을 보여줍니다.
관련
- 프로젝트
- 프로젝트
- Dispatch
- 프로젝트
- 프로젝트