跳到主内容
快讯直播
AI智模界
AI 词典

倒数排名融合(RRF):把多路召回的名次加起来

一句话定义:倒数排名融合(Reciprocal Rank Fusion,RRF)是一种把多路检索结果合并成同一份排名的算法——它不看各路给出的分数,只看每个文档在各路榜单上排第几名,然后把“名次的倒数”相加。

为什么需要它

一个搜索或 RAG 系统常常同时跑好几路召回:一路用关键词(BM25),一路用向量语义检索,也许还有第三路用别的模型。问题在于,各路给出的分数根本不在一个尺度上:BM25 的分数没有上界,可以是十几也可以是几十;向量检索的AI 词典:余弦相似度">余弦相似度通常在 -1 到 1 之间。把这两类数字直接加权求和,就像一个评委打 98 分、另一个打 4.7 分,加起来没有任何意义。强行归一化到同一区间又会丢掉原始分布的信息。

RRF 的偷懒办法是:既然分数不可比,那就只比名次。

怎么算

对每一路结果,文档 d 的贡献是 $\frac{1}{k + rank_i(d)}$,其中 $rank_i(d)$ 是它在第 i 路里的名次(从 1 开始计)。把各路贡献加总:

$$\text{score}(d) = \sum_i \frac{1}{k + rank_i(d)}$$

k 是一个平滑常数,常见取几十(60 是流传较广的默认值,具体以所用组件的官方文档为准)。它的作用是别让第 1 名和第 2 名之间拉得太开。

打个比方:选秀节目请了三位评委,各自按自己的标准排出榜单。节目组不去比较他们的原始打分,而是规定——谁榜单上的第 1 名得 1 分,第 2 名得 1/2 分,第 3 名得 1/3 分……把同一位选手在三张榜单上拿到的名次分相加,谁高谁就排前面。名次越靠前,得分越接近 1;掉到几十名开外,贡献就趋近于 0,几乎可以忽略。

和相邻概念的区别

方案输入是否需要训练主要短板
加权分数融合各路原始分数权重常需调分数尺度不可比
RRF各路名次不需要丢弃分数置信度
交叉编码器重排序(Rerank)query + 文档原文需模型计算成本高,只适合小候选集

RRF 通常作为“融合层”用在召回之后、重排序之前:先把多路结果合成一份几十到几百条的候选,再交给更贵的重排序模型精排。留意一个细节——RRF 会忽略“某一路非常确信”这种信息,某路的第一名和另一路勉强挤进的第一名,在它眼里权重相同。

对实际工作的意义

对工程师来说,RRF 几乎是混合检索(Hybrid Search)的默认选择:免训练、可并行、实现只有十几行代码,而且对某一路召回质量波动有天然的鲁棒性。做 RAG 时,关键字检索兜住专有名词和编号,向量检索兜住同义改写,两者用 RRF 合起来,通常比只调一路更稳。

对普通职场人,它的启示更朴素:当几个来源的评分标准不一致、又都“看起来有道理”时,别急着把分数相加,退一步只排名次、再投票,往往更可靠。评审打分、供应商比选、多轮面试评价,都是同一个道理。

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。