news 2026/7/18 13:05:54

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/7/18 11:52:17

Java计算机毕设之基于javaweb的宠物托管系统宠物上门托管服务管理系统的设计与实现(完整前后端代码+说明文档+LW,调试定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/7/18 11:52:16

Java毕设选题推荐:基于JavaWeb的家装一体化平台基于SpringBoot+Vue的家装一体化平台【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/7/18 11:52:15

Java毕设选题推荐:基于JavaEE的电子印章申请下发管理系统的电子办公签章系统基于JavaEE的电子印章管理系统的设计与实现【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/7/18 11:52:14

【课程设计/毕业设计】基于Spring Boot框架的汽车配件销售管理系统基于JavaWeb的汽配销售管理系统【附源码、数据库、万字文档】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/7/17 14:29:09

深度剖析Dify PDF解密失败根源(附完整错误代码对照表)

第一章:深度剖析Dify PDF解密失败根源(附完整错误代码对照表)在使用 Dify 平台处理加密 PDF 文件时,用户频繁遭遇解密失败问题。该现象通常由加密算法不兼容、权限配置缺失或元数据校验异常引发。深入分析底层日志可发现&#xff…

作者头像 李华