Repolode
Raudaschl

Raudaschl/rag-fusion

LLM 쿼리 재작성, BM25 및 벡터 검색, Reciprocal Rank Fusion을 결합해 검색 성능을 높이는 RAG-Fusion의 Python 레퍼런스 구현으로, NFCorpus 평가 하네스를 제공합니다.

스타
960
포크
113
열린 이슈
0
마지막 커밋
27일 전

어떤 프로젝트인가요?

RAG-Fusion은 검색 증강 생성에 사용하는 검색 방식입니다. LLM이 사용자의 쿼리를 여러 관점의 표현으로 다시 작성하고, 각 표현을 BM25 키워드 검색과 벡터 검색으로 각각 검색한 뒤, Reciprocal Rank Fusion으로 순위 목록을 병합합니다. 여러 목록에 반복해서 등장하는 문서일수록 상위에 오릅니다. 단일 쿼리 표현으로는 관련 자료를 찾지 못할 수 있는 경우, 예를 들어 사용자의 어휘와 코퍼스의 색인 용어가 다른 상황을 겨냥합니다.

저장소에는 ChromaDB와 OpenAI를 사용하는 벡터 검색 기본 파이프라인인 main.py와, BEIR의 NFCorpus 데이터셋에서 baseline, hybrid, RAG-Fusion, hybrid-diverse 변형을 비교하는 eval/ 평가 하네스가 포함되어 있습니다. 또한 cross-encoder 재순위화 단계와 함께, 구성별 비용 및 지연 시간 측정과 NDCG, precision, recall, MRR을 비교한 실험 결과도 제공합니다.

저장소의 측정 결과에 따르면 hybrid fusion 뒤에 재순위기를 추가하면 작지만 통계적으로 유의미한 성능 향상을 얻을 수 있습니다. 반면 강력한 재순위기가 이미 있는 경우 벡터 검색만 사용하는 fusion의 이점은 크지 않습니다.

핵심 기능

  • 01서로 다른 표현을 반영하도록 사용자 쿼리를 LLM으로 여러 번 재작성합니다.
  • 02각 쿼리 변형에 BM25 키워드 검색과 벡터 검색을 함께 적용합니다.
  • 03Reciprocal Rank Fusion으로 순위가 매겨진 검색 결과를 병합합니다.
  • 04병합된 후보 풀에 cross-encoder 및 다른 재순위화 단계를 적용할 수 있습니다.
  • 05IR 지표와 부트스트랩 신뢰 구간을 사용해 NFCorpus 데이터셋에서 검색 방식별 성능을 평가합니다.
  • 06LLM 쿼리 재작성 결과를 디스크에 캐시하고 ChromaDB 임베딩을 로컬에 저장합니다.

활용 사례

  • 용어가 다양한 의료·과학 논문 등 전문 문헌을 검색할 때.
  • 관련 문서를 놓치는 비용이 큰 검색 파이프라인에서 재현율을 높일 때.
  • RAG 시스템에 도입하기 전에 쿼리 재작성과 순위 융합을 실험할 때.

빠른 시작

  1. 1

    핵심 종속 항목을 설치하세요

    pip install openai chromadb python-dotenv tqdm tabulate rank_bm25
  2. 2

    템플릿에서 .env 파일을 만드세요

    cp .env.example .env
  3. 3

    OpenAI API 키를 .env에 추가한 다음 데모를 실행하세요

    python main.py

사용 전 알아둘 점

  • 데모를 실행하고 리라이트하려면 유료 OpenAI API 키가 필요합니다.
  • main.py의 데모는 벡터 검색만 사용합니다. 성능이 가장 뛰어난 hybrid-plus-rerank 구성은 eval/에 있으며 추가 패키지가 필요합니다.
  • 실험은 특정 LLM과 결정 모델에 의존하며, 그중 일부는 서비스가 종료되었거나 사용할 수 없을 수 있습니다.

토픽

#rag#information-retrieval#vector-search#reciprocal-rank-fusion#query-expansion#reranking#chromadb#openai#python#rag-fusion

자주 묻는 질문

rag-fusion은(는) 무엇인가요?
LLM 쿼리 재작성, BM25 및 벡터 검색, Reciprocal Rank Fusion을 결합해 검색 성능을 높이는 RAG-Fusion의 Python 레퍼런스 구현으로, NFCorpus 평가 하네스를 제공합니다. RAG-Fusion은 검색 증강 생성에 사용하는 검색 방식입니다. LLM이 사용자의 쿼리를 여러 관점의 표현으로 다시 작성하고, 각 표현을 BM25 키워드 검색과 벡터 검색으로 각각 검색한 뒤, Reciprocal Rank Fusion으로 순위 목록을 병합합니다. 여러 목록에 반복해서 등장하는 문서일수록 상위에 오릅니다. 단일 쿼리 표현으로는 관련 자료를 찾지 못할 수 있는 경우, 예를 들어 사용자의 어휘와 코퍼스의 색인 용어가 다른 상황을 겨냥합니다.
rag-fusion은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
rag-fusion은(는) MIT 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
rag-fusion은(는) 아직 유지보수되고 있나요?
활발히 유지보수 중. rag-fusion의 마지막 커밋은 2026년 10월 10일입니다.
rag-fusion은(는) 어디에 사용할 수 있나요?
용어가 다양한 의료·과학 논문 등 전문 문헌을 검색할 때. 관련 문서를 놓치는 비용이 큰 검색 파이프라인에서 재현율을 높일 때. RAG 시스템에 도입하기 전에 쿼리 재작성과 순위 융합을 실험할 때.
rag-fusion는 어떻게 설치하나요?
핵심 종속 항목을 설치하세요: pip install openai chromadb python-dotenv tqdm tabulate rank_bm25 템플릿에서 .env 파일을 만드세요: cp .env.example .env OpenAI API 키를 .env에 추가한 다음 데모를 실행하세요: python main.py
rag-fusion은(는) 어디서 받을 수 있나요?
소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/Raudaschl/rag-fusion

요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.

관련 프로젝트