상호 순위 융합(RRF)이란? AI에서 여러 검색 결과의 순위를 하나로 합치는 방법
TL;DR
상호 순위 융합(Reciprocal Rank Fusion, RRF)은 여러 검색기가 만든 순위 목록을 하나의 결과로 합치는 알고리즘입니다. 문서가 각 목록에서 몇 위인지 확인해 1/(k+순위)를 더합니다. 서로 단위가 다른 키워드 점수와 벡터 점수를 직접 섞지 않아도 됩니다. 다만 검색 후보가 빠졌거나 권한 필터가 잘못됐다면 순위를 합치는 것만으로 답의 근거를 바로잡지는 못합니다.
핵심 3줄 요약
- 핵심 1
점수보다 순서를 봅니다. 검색기마다 다른 점수의 절댓값은 버리고 각 문서의 목록 내 순위로 기여도를 계산합니다. - 핵심 2
여러 목록에 오른 문서를 모읍니다. 각 목록에서 받은 역순위 기여도를 더해 통합 순서를 정합니다. 나타나지 않은 목록은 기여도가 없습니다. - 핵심 3
입력 후보와 설정을 따로 점검합니다. 순위 상수, 검색별 후보 수, 동점 처리와 권한 필터가 최종 결과에 영향을 줍니다.
이 글에서 다룰 내용
- 상호 순위 융합의 한 문장 정의
- 키워드 검색과 벡터 검색을 합치는 쉬운 예시
- AI 검색에서 순위 융합이 필요한 이유
- 순위의 역수, 상수 k, 후보 창의 작동 방식
- 하이브리드 검색·점수 결합·리랭킹과의 차이
- RAG 검색에서의 사용처와 검증 순서
- 놓친 문서·중복 문서·권한 필터 주의점
- AI 초보자가 자주 묻는 질문
상호 순위 융합을 한 문장으로 정의하면 무엇인가요?
상호 순위 융합(RRF)은 여러 검색 결과 목록에서 같은 문서가 차지한 순위의 역수를 합해 최종 목록을 만드는 순위 결합 방법입니다.
원 논문은 여러 정보 검색 시스템의 순위를 합치는 학습 데이터가 필요 없는 방법으로 RRF를 제시합니다. 텍스트 검색과 벡터 검색을 결합할 때도 쓸 수 있지만 두 방식만 결합해야 하는 알고리즘은 아닙니다. 서로 다른 질의의 결과나 여러 벡터 검색 목록에도 적용됩니다.
여기서 역수는 목록의 1위가 20위보다 더 많이 기여한다는 뜻입니다. 한 문서가 여러 목록의 위쪽에 함께 나타나면 기여도를 더 받습니다. RRF는 새 문서를 생성하거나 원문을 읽고 내용을 판단하는 모델이 아닙니다.
한 줄 정리: RRF는 각 검색기의 점수를 같은 척도로 맞추는 대신, 각 검색기가 문서를 몇 위에 놓았는지를 합쳐 한 줄로 세웁니다.
쉬운 예시로 이해해 볼까요?
사내 정책을 찾는 AI가 같은 질문으로 키워드 검색과 벡터 검색을 실행했다고 가정해 보겠습니다. 키워드 결과는 A 문서가 1위, B 문서가 2위입니다. 벡터 결과는 B 문서가 1위, A 문서가 2위입니다. 두 목록에는 같은 문서 식별자를 사용합니다.
- 키워드 목록: A 1위, B 2위, C 3위
- 벡터 목록: B 1위, A 2위, D 3위
- A의 기여: 1/(k+1)과 1/(k+2)를 더합니다. B도 순서가 바뀌었을 뿐 기여의 합이 같습니다.
- C와 D는 각각 한 목록의 3위 기여만 받습니다. 다른 목록에 없다면 그 목록에서는 0을 더합니다.
이 경우 A와 B의 RRF 값은 같습니다. 실제 서비스는 동점 처리 규칙이나 기존 순서에 따라 둘의 표시 순서를 정해야 합니다. C와 D는 한 목록에만 있으므로 두 목록에 동시에 오른 A·B보다 낮게 놓입니다. 이 예시는 계산 구조를 설명할 뿐 모든 실제 검색 결과의 품질을 보장하지 않습니다.
쉬운 예시: 두 심사위원의 점수표에서 점수 단위가 서로 다를 때 점수 숫자를 합하지 않고 각자 매긴 순위를 참고해 통합 명단을 만드는 방식에 가깝습니다.
왜 AI를 사용할 때 상호 순위 융합이 중요한가요?
서로 다른 점수의 단위를 맞추지 않아도 됩니다
BM25 같은 단어 검색 점수와 벡터 검색 점수는 범위와 의미가 다릅니다. 원점수를 그대로 더하면 숫자가 큰 쪽이 실제 관련성보다 과하게 반영될 수 있습니다. RRF는 점수의 크기가 아니라 순위를 쓰므로 점수 척도 정규화 없이 후보를 합칩니다.
단어가 정확히 맞는 결과와 의미상 가까운 결과를 함께 볼 때 이 특성이 유용합니다. 다만 점수 간격도 버립니다. 1위와 2위의 점수 차이가 아주 크든 작든 순위 기여의 계산에는 그 간격이 들어가지 않습니다.
같은 문서가 여러 검색에서 발견되면 기여를 모읍니다
하나의 문서가 키워드 검색과 벡터 검색에서 모두 상위에 오르면 두 순위의 역수를 더합니다. 한 검색 방식에서만 우연히 높게 나온 후보와 다른 검색 방식에서도 확인된 후보를 구별할 수 있습니다. 원 논문 역시 여러 결과 목록의 다양성을 함께 활용하는 순위 융합을 설명합니다.
RAG의 검색 단계를 나눠 진단하기 좋습니다
RAG에서는 생성 모델에 넘길 근거 문서를 먼저 찾습니다. RRF의 역할은 그 전 단계에서 여러 검색 결과를 합치는 것입니다. 상위 문서가 틀렸다면 먼저 각 검색기의 후보, 통합 순위, 모델에 건넨 근거를 따로 살펴야 합니다. 답변의 사실성까지 RRF가 대신 검증하지는 않습니다.
핵심 인사이트: RRF 점수가 높다는 말은 여러 입력 목록에서 순위상 좋은 위치를 차지했다는 뜻이지, 내용이 사실이라는 검증 결과가 아닙니다.
상호 순위 융합은 어떻게 작동하나요?
검색기마다 상위 문서 목록을 받습니다
먼저 검색기가 각자의 규칙으로 문서 ID와 순위를 내놓습니다. 같은 문서의 식별자가 목록마다 일치해야 기여도를 합칠 수 있습니다. 결과에 같은 파일의 여러 조각이 따로 들어온다면 문서 단위로 합칠지 조각 단위로 유지할지 먼저 정합니다.
상위 후보의 개수를 어디서 자르느냐도 중요합니다. 한쪽 목록의 깊이가 너무 얕으면 그 아래에 있던 문서는 결합 단계에 들어올 기회가 없습니다. Elasticsearch 문서는 각 입력 목록의 크기를 정하는 rank_window_size를 별도 설정으로 둡니다.
각 문서의 순위를 역수 기여도로 바꿉니다
문서가 어느 목록에서 r위라면 그 목록의 기여는
1/(k+r)
입니다. r은 1부터 시작하는 순위이고, k는 상위 몇 문서의 기여도가 얼마나 급하게 달라지는지를 조절하는 순위 상수입니다. 문서가 목록에 없으면 그 목록에서 기여는 없습니다.
2009년 원 논문은 k를 60으로 정해 실험했으며, Elasticsearch와 OpenSearch 문서도 기본값 60을 안내합니다. 그러나 모든 검색 시스템에서 60이 최적이라는 뜻은 아닙니다. Azure 문서는 이 상수를 벡터 검색이 돌려받을 최근접 이웃의 개수 k와 구별합니다.
같은 문서의 기여를 더해 최종 순서를 정합니다
모든 목록에서 한 문서가 얻은 역수 기여도를 더하고 합계가 큰 순서로 정렬합니다. 예를 들어 문서가 두 목록에서 각각 1위와 2위라면 두 항을 더합니다. 같은 문서가 세 목록에 있다면 세 항을 더할 수 있습니다. 서로 다른 검색 목록의 수가 바뀌면 합계의 크기도 달라집니다.
RRF 값은 해당 질의와 입력 목록에 의존하는 정렬용 수치입니다. 서로 다른 검색 요청 사이의 값을 확률처럼 비교하거나 문서의 절대적인 신뢰도로 읽지 마세요. 동점이라면 검색 서비스의 명시된 규칙을 확인하는 편이 안전합니다.
작동 순서: 각 목록에서 후보를 받고 → 문서 ID로 일치 항목을 찾고 → 순위의 역수 기여를 더하고 → 통합 결과를 정렬합니다.
상호 순위 융합과 헷갈리는 용어는 무엇이 다른가요?
하이브리드 검색과 RRF의 차이
하이브리드 검색은 키워드 검색과 의미 검색처럼 다른 방법으로 문서를 함께 찾는 구성입니다. RRF는 그 결과 목록을 결합하는 한 가지 알고리즘입니다. 이미 공개된 하이브리드 검색 설명은 검색 방식을 함께 쓰는 이유에 초점을 맞춥니다. 이 글은 순위 결합 공식을 중심으로 읽으면 됩니다.
점수 정규화 결합과 RRF의 차이
점수 결합은 각 검색기의 점수 범위를 조정하고 그 수치를 더하거나 평균 내는 방식입니다. RRF는 점수의 크기와 간격을 쓰지 않습니다. OpenSearch 문서는 순위 기반 score-ranker-processor와 점수 기반 normalization-processor를 별도로 비교합니다. 점수 차이의 정보가 꼭 필요하면 정규화 기반 결합도 함께 평가하세요.
BM25와 RRF의 차이
BM25는 단어의 반복·희소성·문서 길이를 보고 한 검색 목록의 점수를 만듭니다. RRF는 그 목록을 다른 목록과 합칠 때 각 문서가 차지한 위치를 읽습니다. BM25 결과를 입력으로 사용할 수 있어도 둘은 서로 바꿔 쓰는 같은 개념이 아닙니다.
리랭킹과 RRF의 차이
리랭킹은 상위 후보의 순서를 더 정밀하게 다시 매기는 단계 전반을 가리킵니다. RRF도 순서를 새로 만드는 방식이지만 원문과 질문을 함께 읽는 교차 인코더 같은 리랭커와 계산 원리가 다릅니다. RRF 뒤에 별도의 리랭커를 둘 수도 있습니다.
다수결과 RRF의 차이
RRF는 몇 개의 목록에서 등장했는지만 세는 다수결이 아닙니다. 등장한 위치에 따라 각 목록의 기여가 달라집니다. 원 논문은 Condorcet 방식의 쌍별 순위 비교와 RRF를 별개 방법으로 실험했습니다. 어느 한 방법이 모든 데이터와 질의에서 항상 이긴다는 결론으로 바꾸어 읽지 않습니다.
비교 정리: 하이브리드 검색은 입력 검색 방법의 구성이고, BM25는 한 목록의 점수 계산이며, RRF는 여러 목록의 순위 결합입니다. 정규화 결합은 점수를 쓰고 리랭커는 후단에서 후보를 다시 평가합니다.
실전에서는 어디에 쓰이나요?
사내 지식 문서 검색
직원이 제품 코드나 정책 번호를 정확히 입력하기도 하고 뜻만 묻기도 합니다. 키워드 검색과 의미 검색의 상위 목록을 만든 뒤 RRF로 통합하면 두 종류의 후보를 한 화면에서 검토할 수 있습니다. 문서의 공개 범위와 사용자의 권한은 통합 전후에 별도로 적용해야 합니다.
RAG 답변의 근거 후보 선택
AI가 답하기 전에 검색한 여러 목록을 결합해 근거 후보를 정합니다. 검색 단계에서 RRF를 썼다고 해서 모델이 모든 근거를 정확히 인용하는 것은 아닙니다. 답에 실제로 사용된 문서 ID와 본문 조각을 추적하고, 최종 답에서 근거를 다시 확인합니다.
여러 벡터 검색 결과의 결합
같은 질문을 여러 벡터 필드나 질의로 검색하면 각 목록의 순위가 다를 수 있습니다. Azure AI Search 문서는 병렬로 실행된 여러 검색의 결과를 RRF로 합치는 경우를 설명합니다. 결합 대상이 꼭 텍스트 점수와 벡터 점수의 한 쌍으로 제한되는 것은 아닙니다.
검색 설정을 바꿀 때 비교 기준
기존 키워드 검색, 벡터 검색, RRF 통합 검색을 같은 평가 질문에서 비교합니다. 정답 문서가 상위 몇 개에 드는지와 첫 관련 문서가 얼마나 일찍 나오는지 기록하고, 오류 코드·동의어·고유명사처럼 질문 유형도 나눕니다. 클릭 수만 높다고 관련 근거가 맞는 것으로 단정하지 않습니다.
실전 팁: 결합 방식의 우열은 이름으로 판단하지 말고, 동일한 후보 집합·필터·평가 질문에서 결과 품질과 지연을 함께 비교합니다.
상호 순위 융합을 적용할 때 어떤 순서로 확인하나요?
1. 검색 질문과 정답 문서를 정합니다
실제 사용자가 찾는 질문을 모으고 정답 문서의 ID를 기록합니다. 누가 볼 수 있는 문서인지까지 표시해 검색 품질 평가와 권한 점검을 분리합니다.
2. 각 검색기의 단독 결과를 남깁니다
키워드 목록과 벡터 목록의 순위·문서 ID·원래 점수를 별도로 보관합니다. RRF 최종 순위만 저장하면 잘못된 결과가 어느 단계에서 들어왔는지 알기 어렵습니다.
3. 같은 문서 ID와 후보 창을 확인합니다
문서 식별자를 통일하고 각 목록에서 몇 위까지 결합하는지 확인합니다. 한쪽 후보 수가 달라지면 비교 실험에서는 그 조건도 기록합니다.
4. 순위 상수와 결합 결과를 확인합니다
제품의 기본 k와 입력 목록 수를 확인하고 동일 문서가 여러 목록에 어떻게 기여하는지 살펴봅니다. 동점과 중복 조각이 많으면 합치는 단위와 동점 규칙을 함께 살핍니다.
5. 최종 답변과 지연을 다시 봅니다
상위 문서가 정답을 실제로 담는지 검토하고, RAG라면 인용까지 추적합니다. 통합 전후의 품질을 비교할 때는 후보 깊이와 필터, 검색 시간을 고정하거나 차이를 적어 둡니다.
한 줄 정리: 입력 목록을 저장하고 같은 ID로 문서를 합친 다음 상위 근거, 권한, 시간 비용을 차례로 확인해야 순위 변화의 이유를 알 수 있습니다.
사용할 때 무엇을 주의해야 하나요?
첫째, 없는 문서를 RRF가 찾아 주지는 않습니다. 입력 목록에서 필요한 문서가 모두 빠졌다면 합칠 순위가 없습니다. 검색어 분석, 청킹, 인덱싱과 후보 수부터 확인합니다.
둘째, 상수 60을 성능 보증처럼 쓰지 않습니다. 원 논문에서 사용했고 몇몇 제품이 기본값으로 택했지만 검색별 후보 깊이, 질의 분포와 중복 정도가 다릅니다. 쓰는 제품의 설정을 확인하고 검증 질문으로 비교합니다.
셋째, 점수의 차이가 사라지는 비용을 기억합니다. 원점수 1위와 2위가 큰 차이로 갈려도 RRF에는 순서만 들어갑니다. 점수 간격이 유용한 문제라면 점수 정규화 결합과 결과를 나란히 살핍니다.
넷째, 한 문서의 여러 조각을 중복 근거로 세지 않습니다. 중복된 조각의 ID와 통합 기준을 정하지 않으면 비슷한 본문이 상위를 차지할 수 있습니다. 문서·조각 단위의 평가를 구분하고 사람이 상위 내용을 읽어 봅니다.
다섯째, 권한과 개인정보를 순위로 대신 판단하지 않습니다. 제한 문서가 검색 후보에 들어왔다면 높은 RRF 점수도 공개 허가가 아닙니다. 검색과 응답 과정 모두에서 접근 권한을 적용하고 실제 노출을 테스트합니다.
주의: RRF는 검색 결과의 순서를 합치는 계산입니다. 문서의 사실성, 최신성, 사용 권한, 생성 답변의 정확성은 별도 검토 대상입니다.
자주 묻는 질문
Q1. RRF는 점수를 평균 내는 방법인가요?
아닙니다. 각 검색 결과에서 문서가 몇 위인지 보며, 그 순위를 상수와 합한 값의 역수를 더합니다. 검색기가 준 원점수의 평균은 계산하지 않습니다.
Q2. RRF와 하이브리드 검색은 같은 뜻인가요?
같지 않습니다. 하이브리드 검색은 여러 검색 방식을 함께 사용하는 구성이고 RRF는 그 목록을 합치는 방법 중 하나입니다. 벡터 검색만 여러 번 실행한 결과에도 적용할 수 있습니다.
Q3. RRF에서 k가 클수록 검색 결과가 무조건 좋아지나요?
그렇지 않습니다. k는 순위별 기여의 차이를 바꿉니다. Elasticsearch 등에는 기본값이 있지만 내 검색에 최적인지는 평가 질문과 후보 깊이를 맞춰 확인해야 합니다.
Q4. 키워드 검색에서만 나온 문서는 사라지나요?
아닙니다. 다른 목록에 없으면 그 목록의 기여만 0이고, 등장한 목록의 역순위 기여는 남습니다. 다른 문서와 합계를 비교해 최종 순위에 들어갈 수 있습니다.
Q5. RRF 값이 높으면 AI 답변의 사실성도 높나요?
아닙니다. RRF는 입력 검색 목록 안의 위치를 합산할 뿐 본문의 사실을 확인하지 않습니다. 원문과 인용, 최신성, 접근 권한을 따로 검토해야 합니다.
출처
- Cormack, Clarke & Büttcher, Reciprocal Rank Fusion outperforms Condorcet and individual Rank Learning Methods (SIGIR 2009)
- Microsoft Learn, Relevance scoring in hybrid search using Reciprocal Rank Fusion
- Elasticsearch Reference, Reciprocal rank fusion
- OpenSearch Documentation, Reciprocal rank fusion
마무리
상호 순위 융합은 여러 검색 결과에서 문서의 위치를 역수로 바꿔 합산하는 간단한 순위 결합 방법입니다. 키워드와 벡터의 원점수 단위를 통일하지 않고도 여러 목록을 합칠 수 있습니다. 같은 문서가 서로 다른 목록에서 어떤 위치를 차지했는지가 핵심입니다.
처음 적용한다면 각 검색의 후보 목록을 그대로 남기고, 문서 ID·후보 깊이·k 설정을 확인하세요. 결합 후에는 대표 질문의 정답 문서가 어디에 있는지, 권한이 맞는지, 생성된 답의 인용이 맞는지 따로 검토해야 합니다. 검색 순위가 좋아 보이는 것과 올바른 AI 답변을 얻는 것은 같은 검사가 아닙니다.
