하나의 검색 방식에 의존하지 않고, 서로 다른 장점을 가진 여러 독립적인 Retriever들을 동시에 활용한 뒤, 각 검색기가 반환한 결과 목록들을 지능적으로 종합하여 최종 순위를 결정하는 '집단 지성' 기반의 검색 기법
- 작동방식
- 다중 검색기 준비 (Multiple Retrievers Setup): 의미론적 검색, 키워드 검색, 계층적 검색 등 각기 다른 강점을 가진 여러 종류의 검색기를 독립적으로 준비
- 병렬 검색 실행 (Parallel Retrieval): 사용자 질문이 들어오면, 이 질문을 준비된 모든 검색기에게 동시에 전달하여 각각의 검색을 병렬로 수행
- 결과 수집 (Result Collection): 각 검색기는 자체 기준에 따라 평가한 문서 순위 목록을 반환
- 순위 융합 및 재정렬 (Rank Fusion & Re-ranking): 수집된 여러 개의 순위 목록을 RRF(Reciprocal Rank Fusion)와 같은 알고리즘을 사용하여 하나의 통합된 순위로 재조정. -> RRF는 여러 목록에서 일관되게 상위에 나타나는 문서에 더 높은 최종 점수를 부여하는 방식으로 작동. 이 최종 점수를 기준으로 문서들을 다시 정렬.
- 최종 결과 전달: 이렇게 종합적으로 평가된 최상위 문서를 LLM에게 컨텍스트로 전달
- 장점
- 높은 강건성(Robustness)과 포괄성: 특정 검색기가 놓칠 수 있는 정보를 다른 검색기가 보완해주므로, 어떤 유형의 질문에도 실패할 확률이 적고 안정적인 성능
- 재현율(Recall) 극대화: 여러 접근 방식을 동시에 사용하므로, 질문과 관련된 잠재적인 문서를 놓치지 않고 찾아낼 확률(재현율)이 크게 향상
- 모듈성 및 확장성: 시스템을 수정하지 않고도 새로운 검색기를 쉽게 추가하거나 기존 검색기를 제거하는 등 유연한 구성 가능
- 구현
- 여러 개의 독립적인
Retriever인스턴스(예: FAISS, BM25)를 각각 생성 - 각
Retriever로부터 반환된 여러 개의 문서 목록과 순위 정보를 입력받아, RRF(Reciprocal Rank Fusion)와 같은 융합 알고리즘을 적용하여 최종 순위를 계산 - LangChain에서는
EnsembleRetriever클래스를 통해 이러한 로직을 비교적 쉽게 구현할 수 있도록 지원.
- 여러 개의 독립적인
vs Fusion Retrieval
- Fusion Retrieval: 2개 축(의미 검색 ↔ 키워드 검색)의 점수를 정규화해 alpha 가중합 — 하이브리드 검색에 특화
- Ensemble Retrieval: N개 검색기의 순위 목록을 RRF로 융합 — 점수 스케일이 달라도 순위만으로 통합, 검색기 개수 확장이 자유로움