news 2026/5/6 20:48:34

RRF--Reciprocal Rank Fusion融合排序

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
RRF--Reciprocal Rank Fusion融合排序

文章目录

      • Reciprocal Rank Fusion 简介
      • 核心原理
      • 算法特点
      • 应用场景
      • 示例代码
      • 注意事项

Reciprocal Rank Fusion 简介

Reciprocal Rank Fusion (RRF) 是一种用于融合多个排序列表的算法,常用于信息检索、推荐系统或搜索引擎中。它通过结合不同排序结果的排名信息,生成一个更优的最终排序。RRF 的核心思想是利用排名的倒数加权求和,使得高排名项在融合结果中更具优势。

核心原理

RRF 的公式如下:

RRFscore ( d ) = ∑ i = 1 k 1 r i ( d ) + c \text{RRFscore}(d) = \sum_{i=1}^{k} \frac{1}{r_i(d) + c}RRFscore(d)=i=1kri(d)+c1

其中:

  • d dd表示待排序的文档或项。
  • k kk表示参与融合的排序列表数量。
  • r i ( d ) r_i(d)ri(d)表示文档d dd在第i ii个排序列表中的排名(从 1 开始)。
  • c cc是一个常数(通常设为 60),用于平滑低排名项的影响。

算法特点

  1. 无需归一化:RRF 直接利用排名信息,无需对原始分数进行归一化处理。
  2. 高排名优先:排名越靠前的项对最终分数的贡献越大,倒数加权强化了头部效应。
  3. 鲁棒性:对部分列表的噪声或偏差具有一定容错能力。

应用场景

  • 多模型融合:结合不同检索模型(如 BM25、深度学习模型)的结果。
  • 跨领域排序:合并来自文本、图像等多模态数据的排序列表。
  • 推荐系统:聚合用户历史行为、协同过滤等多种推荐策略的输出。

示例代码

以下是一个简单的 Python 实现:

defreciprocal_rank_fusion(rank_lists,c=60):scores={}forr,rank_listinenumerate(rank_lists):forrank,docinenumerate(rank_list,1):scores[doc]=scores.get(doc,0)+1/(rank+c)# 按分数降序排序sorted_docs=sorted(scores.keys(),key=lambdax:-scores[x])returnsorted_docs# 示例输入:两个排序列表list1=["docA","docB","docC"]list2=["docB","docC","docA"]result=reciprocal_rank_fusion([list1,list2])print(result)# 输出融合后的排序

注意事项

  • 常数 (c) 的选择会影响低排名项的权重,需根据实际场景调整。

  • 若某些列表未包含全部项,缺失项的排名可按固定值(如列表长度 +1)处理。

  • RRF 更关注排名相对位置,而非绝对分数,适合异构排序列表的融合。

  • 示例

defrrf_rescore(lists,k=60):rrf_scores={}forrank_listinlists:forrank,iteminenumerate(rank_list,start=1):rrf_scores[item]=rrf_scores.get(item,0)+1/(k+rank)sorted_items=sorted(rrf_scores.items(),key=lambdax:x[1],reverse=True)return[{"score":score,"document":item,"index":i}fori,(item,score)inenumerate(sorted_items)]if__name__=="__main__":lists=[["a","b","c","d"],["b","c","e"],["c","f"],["a","c","g"]]result=rrf_rescore(lists)print(result)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/30 23:49:31

Multi-Agent与LangGraph框架 简介篇

文章目录Multi-Agent系统概述LangGraph框架简介实现Multi-Agent系统的关键方法构建天气查询Agent的步骤输出示例Multi-Agent系统概述 Multi-Agent系统(MAS)是由多个自主智能体组成的分布式系统,智能体通过协作或竞争完成复杂任务。其核心特点…

作者头像 李华
网站建设 2026/5/5 14:38:29

面试官问MyBatis/OpenFeign的原理?我手搓了个MyHttp怼回去!(反八股版)

一、前言 自从有了AI、大模型、DeepSeek、豆包、GPT......,就再也没写过技术文章了。毕竟,在它们面前写什么内容都是多余的。我甚至问过AI“AI 时代写技术博客还有意义吗”这个问题,它给出了如下结论: 结论:AI 时代&a…

作者头像 李华
网站建设 2026/5/1 0:40:08

企业数字化转型中,小程序商城成线上线下关键连接点

在当下企业朝着数字化转型迈进的历程当中,小程序商城已然变成了连通线上流量跟线下服务的关键连接点。这样一种轻量级的应用形式,依靠它不需要进行下载、使用完马上就能离开的便利特点,以及借助微信、支付宝等超级应用既有所属的庞大用户根基…

作者头像 李华