想象一下,你问两个朋友:"哪家餐厅最好吃?" 他们分别给你推荐了不同的餐厅,并且都排了名次。 RRF 算法就是用来把这两个排名合并成一个最终排名的方法!
朋友A的推荐(按好吃程度排名):
1. 披萨店 🍕
2. 汉堡店 🍔
3. 寿司店 🍣
朋友B的推荐(按好吃程度排名):
1. 寿司店 🍣
2. 披萨店 🍕
3. 汉堡店 🍔
RRF 的作用:把两个朋友的推荐综合起来,找出大家都认为好吃的餐厅!
在信息检索中,我们经常有多个"检索器"(就像多个朋友),它们用不同的方法找答案:
擅长找关键词匹配
擅长理解语义相似
每个检索器都有自己的排名,RRF 帮我们把它们融合成一个更准确的最终排名!
这个公式的意思是:
假设"披萨店"在两个检索器中的排名分别是:
那么披萨店的 RRF 分数 = 0.5/(60+1) + 0.5/(60+2) = 0.0082 + 0.0081 = 0.0163
从每个检索器获取文档的排名
对每个文档,把所有检索器的贡献加起来
分数越高,排名越靠前
选择分数最高的几个文档作为最终结果
假设我们搜索"机器人与人工智能",有两个检索器返回了不同的结果:
| 文档 | 检索器1排名 | 检索器2排名 | RRF分数 | 最终排名 |
|---|---|---|---|---|
| 机器人学结合机械工程与人工智能 | 1 | 2 | 0.0164 | 🥇 1 |
| 深度学习通过神经网络取得突破 | 2 | 1 | 0.0164 | 🥈 2 |
| 美食点评:这家餐厅的川菜很正宗 | 3 | - | 0.0079 | 🥉 3 |
| 旅游攻略:云南大理的风景非常美丽 | - | 3 | 0.0079 | 4 |
说明:"机器人学"文档在两个检索器中排名都很靠前,所以最终排名第一!
试试调整参数,看看结果如何变化!
RRF 算法在搜索引擎、推荐系统、问答系统等地方都有广泛应用。 它帮助我们结合不同算法的优势,得到更准确、更全面的搜索结果!