RRF (Reciprocal Rank Fusion) 상세 설명
RRF는 여러 개의 검색 결과 리스트를 하나의 통합된 순위로 융합하는 알고리즘입니다. 특히 서로 다른 검색 방식(예: 키워드 검색, 의미 기반 검색)의 결과를 결합할 때 매우 유용합니다.
핵심 원리
RRF의 기본 공식은 다음과 같습니다:
RRF(d) = Σ (1 / (k + rank_i(d)))
여기서:
d는 문서(document)
rank_i(d)는 i번째 검색 결과에서 문서 d의 순위
k는 상수 (일반적으로 60을 사용)
Σ는 모든 검색 결과 리스트에 대한 합
구체적인 예시
3개의 영화 추천 시스템이 있다고 가정해봅시다:
시스템 A (장르 기반):
1. 인셉션
2. 인터스텔라
3. 매트릭스
4. 블레이드 러너
5. 어라이벌
시스템 B (감독 기반):
1. 인터스텔라
2. 다크 나이트
3. 인셉션
4. 덩케르크
5. 프레스티지
시스템 C (평점 기반):
1. 쇼생크 탈출
2. 다크 나이트
3. 인셉션
4. 펄프 픽션
5. 포레스트 검프
RRF 점수 계산 (k=60 사용)
인셉션:
- 시스템 A: 1/(60+1) = 1/61 = 0.0164
- 시스템 B: 1/(60+3) = 1/63 = 0.0159
- 시스템 C: 1/(60+3) = 1/63 = 0.0159
- 총점: 0.0482
인터스텔라:
- 시스템 A: 1/(60+2) = 1/62 = 0.0161
- 시스템 B: 1/(60+1) = 1/61 = 0.0164
- 시스템 C: 없음 = 0
- 총점: 0.0325
다크 나이트:
- 시스템 A: 없음 = 0
- 시스템 B: 1/(60+2) = 1/62 = 0.0161
- 시스템 C: 1/(60+2) = 1/62 = 0.0161
- 총점: 0.0322
매트릭스:
- 시스템 A: 1/(60+3) = 1/63 = 0.0159
- 시스템 B: 없음 = 0
- 시스템 C: 없음 = 0
- 총점: 0.0159
최종 융합 결과
- 인셉션 (0.0482) - 모든 시스템에서 상위권
- 인터스텔라 (0.0325) - 2개 시스템에서 1-2위
- 다크 나이트 (0.0322) - 2개 시스템에서 2위
- 매트릭스 (0.0159)
- 쇼생크 탈출, 블레이드 러너 등...
RRF의 장점
- 점수 정규화 불필요: 각 시스템의 점수 스케일이 달라도 순위만 있으면 됩니다
- 간단한 구현: 복잡한 가중치 튜닝이 필요 없습니다
- 합의 중심: 여러 시스템에서 일관되게 높은 순위를 받은 항목이 우선됩니다
- 이상치에 강함: 한 시스템에서만 극단적으로 높은 점수를 받아도 과도하게 영향을 미치지 않습니다
실제 활용 사례
하이브리드 검색 (RAG 시스템):
- BM25 키워드 검색 결과
- Vector 의미 기반 검색 결과
- → RRF로 융합하여 최적의 문서 검색
추천 시스템:
- 협업 필터링 결과
- 콘텐츠 기반 필터링 결과
- 인기도 기반 결과
- → RRF로 균형 잡힌 추천 생성
k 값의 영향
k 값은 순위가 낮은 항목에 대한 페널티를 조정합니다:
- k가 작을수록 (예: k=10): 상위 순위의 영향력이 더 큼
- k가 클수록 (예: k=100): 중하위 순위도 더 많은 기회를 얻음
- 일반적으로 k=60이 경험적으로 좋은 성능을 보입니다
RRF는 특히 검색 시스템에서 서로 다른 특성을 가진 알고리즘들의 장점을 결합하여 더 robust한 결과를 만들어내는 데 매우 효과적입니다.