ToWow / ToWow 算法解读

RRF 排名融合:如何合并多路合作候选检索结果

从各路名次计算共同排序,并区分候选覆盖与前十名排序质量。

在合作发现中,同一项需求可以同时交给关键词检索、向量检索等方法。每一种方法都会返回一份候选排名。展示给用户之前,系统需要把这些结果合成一份名单:同一个候选在不同方法里排得不一样,最终应该放在哪里?

倒数排名融合(Reciprocal Rank Fusion,RRF)按候选在各份名单中的名次加分,再把贡献相加,得到共同排序。ToWow 发现前端的一轮诊断用它组合了五路检索。本文先演算融合规则与参数作用,再看一个实际结果:前一百名的召回率点估计上升了,前十名的排序质量却下降了。理解这个差别,才能判断融合究竟改善了哪一步。

融合规则:把不同分数尺度转换为名次贡献

一份需求送进关键词检索,某个候选可能得 12 分;送进向量检索,同一个候选可能得 0.8。把 12 和 0.8 直接相加,会让分数尺度更大的那一路占据主导。数字大并不说明那一路更可信。

一种做法是先校准各路分数,再学习怎样组合。这样能保留分差的信息,但也需要合适的数据和校准方法。RRF 选择了一种更容易开始的折中:只问候选排第几,把各路名单变成共同的名次尺度。

候选排第 r,这一份名单给它 1/(k+r) 分。把所有名单给它的分数加起来,再重新排序。当前实现用 k=60。

先用两份名单演示。候选甲在第一份里排名第 1,在第二份里第 100;候选乙在两份里都排第 10。

候选 名单一 名单二 RRF 分数,k=60
甲 1 100 1/61 + 1/160 ≈ 0.02264
乙 10 10 1/70 + 1/70 ≈ 0.02857

融合后,乙排在甲前面。一份名单给甲的冠军位置,并没有抵消另一份名单把它排到后面的影响。两边都稳定靠前的乙,获得了更多支持。

k 控制名次差别有多尖锐。如果在这个教学例中把它改成 1,甲得约 0.510,乙约 0.182,顺序就反过来了。第一名获得的优势大得多。因此,60 不是一个无关紧要的常数:它缓和了单一路径给出极高排名的影响。本地配置选择了这个常用值,没有据此证明它对合作发现最优。

RRF 由 Cormack、Clarke 和 Büttcher 在 2009 年提出。他们的论文给出了相同形式的公式,并在检索实验中比较了其他融合方法。它为我们提供的是可复用的算法,论文里的提升不能当作我们数据上的提升。原始论文

RRF 排名融合:教学机制图

多路融合的前提:候选身份一致,检索信号可能重复

本地 M1 实现组合了五路排序:BM25、稀疏与哈希特征的混合、一个编码器的稠密检索、两个编码器各在自己的空间里算出相似度后取平均的分数,以及岭变换后的跨空间分数。每一路先在同一案例中给候选排好名,再按公式相加。

这里容易被“融合”二字掩盖的是候选身份。两路说的必须是同一个候选,才能把支持加在同一张卡片上。反过来,同名但不同主体也不能混成一个人。当前算法靠明确的候选标识维持这种对应。

融合也不等于集合并集。并集解决“所有列表里出现过谁”,RRF 解决“这些人怎样排”。在这个实验里,各路对共同候选池评分,最后仍只取前一百名;某个方法单独放进前一百的人,融合后可能被挤出去。没有规则保证融合后的前一百,同时包含每一路原本的前一百。

还要留意名单之间的关系。如果五路都使用相近的文字和表示,它们可能只是以五种方式重复同一个偏好。RRF 会把五路支持加起来,但不会检查这些支持是否独立。一个错误偏好因重复获得高分,仍然是可能的。

M1 诊断:召回率点估计上升,前十名排序质量下降

在 M1 的诊断报告里,BM25 的 Recall@100 约为 0.538,RRF 约为 0.575。按有正例的 37 个案例平均,差值约为 3.67 个百分点。

这看上去是好消息,但按案例重新抽样得到的 95% 区间约为 −3.32 到 +11.50 个百分点,仍跨过零。现有样本没有给出足够证据,让我们断言这项召回改善可靠成立。

补注(2026 年 10 月):这次评测每个案例只有约 180 个候选,取前一百名时,随机排序的召回率期望约为 0.555;文中的 Recall@100 读数(BM25 0.538、五路融合 0.575)都在这个水平附近,不能单独说明哪种方法更好。这是一次实验室诊断:案例取自公开文本,标签由大模型裁判给出,不是正式结论,也不代表 ToWow 网络现在的发现路径。

另一边,前十名的 nDCG 点估计从约 0.155 降到 0.128。这个指标会考虑相关候选是否放得靠前:同样找到一个好候选,把它放在第一位和第十位,价值不同。两项读数合起来提醒我们,覆盖和顺序必须分别看。

这份诊断数据有部分标注和样本选择的限制,不能直接代替真实用户效果。它已经足够改变一项设计判断:增加检索来源以后,仍需要单独解决哪些候选值得先看。不能拿候选覆盖的好消息替第一页的质量交差。

后续设计因此尝试先确定前一百名的成员,再在这个固定集合内重排。如此,重排可以改变第一页的顺序,却不会把已经进入前一百的候选踢出去。这个约束保住的是集合成员,因此保住相同标签口径下的 Recall@100;它是否让第一页更好,还要另看结果。将一个指标固定住,能让下一次比较更容易解释,并不等于另一个指标已经改善。

RRF 的价值,是让多路检索有一个简单、透明的共同起点。它没有解决“哪一路值得相信”这个更难的问题。名单变多以后,我们获得了更多意见;怎样把意见变成值得行动的顺序,仍然需要观察真实候选、相关性和使用成本。


来源。 M1 融合实现(实现定位保留于编辑档案),M1 诊断决定(实现定位保留于编辑档案),后续固定成员重排规则(实现定位保留于编辑档案)。本例将五路缩为两路以显示参数作用;两路数值不是历史案例。

公众号排版与配图

本篇另备有明亮、适合手机连续阅读的公众号排版稿,配图按照本文机制单独绘制。查看公众号版,或下载 Markdown、HTML、PNG 与 SVG 配图包。

下一步

如果你的团队正在把 agent 放进真实业务,想了解 Flowness,或想聊企业 AI 落地怎么做,请在“联系我们”页写下行业和想解决的问题,我们按这些内容回复。 联系我们