검색 점수는 더할 수 없지만 순위는 합칠 수 있다
어휘 검색과 벡터 검색의 서로 다른 점수를 직접 더하지 않고 순위를 결합하는 RRF의 원리, 실무 경계, AKM 적용안을 살펴본다.

이 표지는 검색 결과의 결합 구조를 추상화한 생성형 개념 이미지이며 실제 시스템 화면이 아니다.
정확한 용어를 찾는 어휘 검색과 의미가 가까운 문장을 찾는 벡터 검색을 함께 쓴다고 검색 품질이 저절로 좋아지지는 않는다. 두 검색기는 같은 문서를 보고도 전혀 다른 단위의 점수를 낸다. BM25 점수 12.4와 벡터 유사도 0.87을 그대로 더하면 숫자의 크기가 근거처럼 보이지만, 둘은 같은 척도가 아니다.
하이브리드 검색에서는 점수를 합치기 전에 무엇을 보존할지 결정해야 한다. Reciprocal Rank Fusion(RRF)은 원점수 대신 각 결과 목록의 순위를 사용한다. 점수 보정 자료가 아직 없는 시스템에는 쓸 만한 기준선이다. 대신 순위를 택하는 순간 점수 차이가 담고 있던 정보는 버려진다.
서로 다른 점수 대신 결과의 자리를 읽는다
RRF의 계보는 2009년 Cormack, Clarke, Büttcher의 논문으로 거슬러 올라간다. 이 논문은 여러 정보 검색 시스템의 순위를 합치는 비지도 방식으로 RRF를 제시했고, 당시 TREC 실험과 LETOR 3 데이터에서 개별 순위와 다른 결합 방식들을 비교했다. 오늘의 벡터 검색보다 오래된 연구이므로, 이를 최신 하이브리드 검색 전체의 성능 보증으로 읽어서는 안 된다. 현재 제품들이 차용한 것은 특정 데이터셋의 우월성보다 순위 기반 결합 공식이다.
각 결과 목록에서 문서의 순위가 rank이고 완충 상수가 k라면, 한 목록이 주는 기여도는 1 / (rank + k)다. 여러 목록에 나타난 문서는 기여도를 합산한다. Azure AI Search의 현재 문서는 전문 검색과 벡터 질의를 병렬로 실행한 뒤 이 방식으로 결합한다고 설명하며, k의 작은 고정값 예로 60을 든다. OpenSearch 2.19 문서도 기본 rank_constant를 60으로 두고, BM25 점수와 벡터 유사도가 서로 다른 척도여도 1위라는 위치는 비교할 수 있다고 설명한다.
RRF는 어떤 문서가 양쪽 검색에서 꾸준히 상위에 나타나는지를 본다. 어휘 검색 1위지만 벡터 목록에는 없는 문서와 두 목록에서 각각 2위와 3위인 문서가 있다면, 후자가 결합 순위에서 앞설 수 있다. 한 신호의 큰 점수보다 여러 검색기의 합의를 보상하는 방식이다.
RRF가 버리는 정보도 설계 대상이다
순위만 남기면 각 목록 안의 점수 간격은 사라진다. OpenSearch 문서는 1위와 2위의 원점수 차이가 아주 작든 크든 RRF에서는 연속된 순위 차이로만 처리된다고 명시한다. 한 검색기가 압도적으로 확실한 1개 결과를 내고 나머지는 매우 약하게 반환하는 업무라면, 점수 분포를 정규화해 결합하는 방식이 그 간격을 더 잘 보존할 수 있다.
결합 깊이도 결과를 바꾼다. 각 검색기에서 상위 1개만 가져오면 두 목록에서 함께 높게 나온 문서가 융합 단계에 도달하지 못할 수 있다. OpenSearch는 반환 개수와 별도로 pagination_depth를 설정해 결합 후보의 깊이를 확보하라고 안내한다. 깊이를 늘리면 더 많은 후보를 메모리에 보관하고 처리해야 한다. 품질과 자원 비용을 함께 재야 하는 이유다.
RRF 점수 자체를 검색어 간 품질 척도로 쓰는 것도 피해야 한다. 그 값은 원래의 관련도 점수가 아니라 결과 목록 수, 순위, rank_constant로 만든 합계다. 같은 RRF 점수라도 한 질의에서는 좋은 일치이고 다른 질의에서는 약한 일치일 수 있다. Azure AI Search가 의미 재순위 점수를 RRF 결합 점수와 별도 필드로 돌려주는 이유도 두 층의 판단이 다르기 때문이다.
AKM에서는 결합과 검증을 분리한다
AKM에 하이브리드 검색을 적용한다면, RRF는 사실 판정기가 아니라 후보 조합기로 두는 편이 낫다. 현재 구현을 설명하는 것이 아니라 설계를 제안하는 대목이다. 어휘 검색은 정확한 이름, 약어, 파일 식별자에 강하고 벡터 검색은 표현이 달라진 유사 문맥을 찾는 데 유리하다. 두 목록을 RRF로 합친 뒤에도 문서의 출처, 작성 시점, 적용 범위, 주장에 필요한 근거가 모두 갖춰졌는지는 별도로 확인해야 한다.
운영 기록에는 최종 순위만 남기지 말고 각 검색기가 준 순위와 결합 후보 깊이를 함께 남길 수 있다. 특정 답이 실패했을 때 검색기 하나가 후보를 놓쳤는지, 후보는 있었지만 너무 얕게 잘렸는지, 결합 뒤 검증 단계에서 잘못 채택했는지를 구분하기 위해서다. 이 기록은 RRF 공식을 복잡하게 만드는 일이 아니라 실패 위치를 다시 찾을 수 있게 하는 최소한의 관측 정보다.
처음부터 가중치를 정교하게 조정하기보다 작은 평가 질문 묶음으로 기준선을 만들 수 있다. 어휘 검색만 쓴 결과와 벡터 검색만 쓴 결과를 동일한 깊이에서 RRF로 합친 결과와 비교한다. 문서가 상위 k개 안에 들어왔는지만 보면 부족하다. 답에 필요한 근거 묶음이 함께 회수됐는지도 확인해야 한다. 그 뒤에 특정 검색기에 가중치를 줄지, 점수 기반 정규화로 바꿀지 판단한다.
단순한 결합을 기준선으로 남기는 이유
RRF는 점수 보정 자료가 없어도 시작할 수 있고, 서로 다른 검색기의 결과를 같은 형식으로 결합한다. 그래서 기본값으로 고르기 쉽다. 점수 간격이 중요한 업무, 매우 얕은 후보 목록, 검색기마다 다른 반환 개수, 의미 재순위가 추가된 파이프라인에서는 이야기가 달라진다. 순위 결합의 제약이 검색 품질을 제한할 수 있다.
실무의 질문은 RRF가 좋은 알고리즘인지가 아니라 어떤 실패를 허용할 것인지에 가깝다. 원점수의 척도를 맞추지 못한 채 더하는 오류를 피하는 대신, 점수 간격을 버리는 비용을 받아들인다. 이 교환을 평가 질문과 실패 기록으로 확인할 수 있다면 RRF는 하이브리드 검색의 합리적인 출발점이 된다. 확인할 수 없다면 단순함은 근거 없는 편의에 머문다.
참고 자료
- Gordon V. Cormack, Charles L. A. Clarke, Stefan Büttcher, Reciprocal Rank Fusion outperforms Condorcet and individual Rank Learning Methods, SIGIR 2009. RRF의 계보와 원래 실험 범위.
- Microsoft Learn, Relevance scoring in hybrid search using Reciprocal Rank Fusion, 2025년 10월 2일 갱신 문서. 병렬 질의, 결합 공식, 점수 범위와 의미 재순위 경계.
- OpenSearch Documentation, Reciprocal rank fusion, OpenSearch 2.19 도입 기준. 순위 기반 결합,
rank_constant, 후보 깊이, 점수 기반 정규화와의 선택 경계.