尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

RAG文档明明检索到了,为什么还是排不到前面?RRF 排名算法一次讲清楚

RAG文档明明检索到了,为什么还是排不到前面?RRF 排名算法一次讲清楚 RRF 倒数排名融合算法在 RAG 系统中我们通常不会只使用一种检索方式。为了尽可能找到正确文档很多系统会同时使用•BM25 关键词检索•向量语义检索BM25 擅长匹配关键词、产品型号和专业术语向量检索更擅长理解语义找到表达方式不同但含义相近的内容。两种检索方式结合确实能够召回更多相关文档。但新的问题也随之出现两路检索都返回了一批文档最终应该按照什么顺序排列这正是 RRF 要解决的问题。一、为什么不能直接合并检索分数假设用户搜索手机无法充电怎么办BM25 检索后文档 A 的相关性分数是12.6向量检索后文档 B 的相似度是0.86。那么12.6 和 0.86 哪个更高从数字上看12.6 显然更大但这并不代表文档 A 一定更加相关。因为这两个分数来自完全不同的计算方式• BM25 分数衡量关键词匹配程度• 向量相似度衡量语义相似程度• 两者的取值范围和计算标准并不一样这就像两场考试• 第一场满分是 100 分• 第二场满分是 10 分一个人考了 80 分另一个人考了 9 分。只看数字大小80 大于 9但不能因此判断前者表现一定更好。同样BM25 的 12.6 分和向量检索的 0.86也不能直接比较或相加。于是多路检索面临一个关键问题不同检索器的原始分数没有统一标准应该怎么融合RRF 给出了一种非常直接的解决思路。二、RRF 是什么RRF 的全称是Reciprocal Rank Fusion中文通常叫作倒数排名融合。它是一种用于融合多个检索结果的排序算法。RRF 的核心思想只有一句话不比较不同检索器给出的原始分数只比较文档在每一路检索结果中排第几。也就是说RRF 不关心• BM25 到底给了多少分• 向量相似度具体是多少• 不同检索器的分数范围是否一致它只看文档的名次。例如同一篇文档• 在 BM25 中排第 1• 在向量检索中排第 3RRF 会根据这两个排名分别给文档加分再把分数累加起来。可以把多路检索理解成多位评委给文档排名• BM25 是评委一• 向量检索是评委二• 每位评委都会给出一份榜单• RRF 根据文档在不同榜单中的名次综合计分计分规则也很简单排名越靠前获得的分数越高排名越靠后获得的分数越低同一篇文档出现在多路结果中分数可以累加因此一篇文档如果在多个检索结果中都排名靠前最终通常也会排在前面。RRF 寻找的并不是某一路检索中分数最高的文档而是被多路检索共同认可的文档。三、RRF 是怎么计算的RRF 的计算公式如下其中• 表示某一篇文档• 表示文档在第 路检索结果中的排名• 是平滑参数• 同一篇文档在多路检索中的得分会累加公式看起来有些抽象但整个过程只有四步假设参数 。如果文档 A• 在 BM25 中排第 1• 在向量检索中排第 3那么它的 RRF 分数就是也就是如果文档 B• 在 BM25 中排第 2• 在向量检索中排第 1那么它的 RRF 分数就是也就是最后将每篇文档在所有检索结果中的得分相加再按照总分从高到低重新排序。四、用一个完整案例讲清楚假设用户搜索手机无法充电怎么办BM25 关键词检索返回排名文档1文档 A充电接口故障排查2文档 B手机无法充电处理方法3文档 C电池保养说明向量语义检索返回排名文档1文档 B手机无法充电处理方法2文档 D设备无法正常供电3文档 A充电接口故障排查可以看到• 文档 A 在两路检索中分别排第 1 和第 3• 文档 B 在两路检索中分别排第 2 和第 1• 文档 C 只出现在 BM25 结果中• 文档 D 只出现在向量检索结果中假设 分别计算每篇文档的 RRF 分数。文档 A文档 B文档 C文档 C 只出现在 BM25 结果中并且排第 3文档 D文档 D 只出现在向量检索结果中并且排第 2最终融合排序为最终排名文档RRF 分数1文档 B0.032522文档 A0.032273文档 D0.016134文档 C0.01587为什么文档 B 排到了第一因为它在两路检索中分别排第 2 和第 1两边的排名都很靠前。文档 A 虽然在 BM25 中排第一但它在向量检索中只排第三所以融合总分略低于文档 B。文档 C 和文档 D 只出现在一路检索结果中只能获得一次加分因此最终得分相对较低。这就是 RRF 的排序逻辑一篇文档不一定要在某一路检索中排第一只要它在多路检索中都表现稳定最终就可能排到前面。五、参数 有什么作用RRF 公式中还有一个参数 常见设置是它的作用是让不同排名之间的分数变化更加平缓。假设公式中没有 直接计算排名的倒数排名得分第 1 名1第 2 名0.5第 3 名0.333可以看到第 1 名和第 2 名之间的分数差距非常大。这意味着只要某篇文档在某一路检索中排第一就可能对最终结果产生过大的影响。加入 后排名得分第 1 名第 2 名第 3 名此时不同名次之间的分数差距明显变小。可以简单理解为• 越小越强调前几名的优势• 越大不同名次之间的得分越接近因此加入 后可以避免某一路检索中的第一名过度主导最终结果让融合排序更关注一篇文档是否被多路检索共同认可。需要注意的是 是常见设置并不代表所有场景都必须固定使用 60。六、RRF 的完整执行过程把前面的内容连起来RRF 的执行过程就是BM25 返回一份文档榜单 向量检索返回一份文档榜单 ↓记录每篇文档在各个榜单中的排名 ↓使用 1 ÷k 排名计算单路得分 ↓累加同一篇文档的多路得分 ↓按照总分从高到低重新排序RRF 不需要比较 BM25 分数和向量相似度也不需要先把两种分数强行调整到同一个范围。只要每一路检索能够给出文档排名RRF 就可以完成融合。总结多路检索融合最麻烦的问题是不同检索器的原始分数通常不在同一套标准下。BM25 的 12.6 分和向量检索的 0.86并不能直接比较。RRF 的解决办法很直接既然分数不好比较那就不比较分数只比较排名。它会把文档在每一路检索中的排名转换成倒数分数再累加多路得分最终得到统一排序。排名越靠前获得的分数越高被多路检索同时召回并且在多个榜单中都排名靠前的文档最终更容易排在前面。学AI大模型的正确顺序千万不要搞错了2026年AI风口已来各行各业的AI渗透肉眼可见超多公司要么转型做AI相关产品要么高薪挖AI技术人才机遇直接摆在眼前有往AI方向发展或者本身有后端编程基础的朋友直接冲AI大模型应用开发转岗超合适就算暂时不打算转岗了解大模型、RAG、Prompt、Agent这些热门概念能上手做简单项目也绝对是求职加分王给大家整理了超全最新的AI大模型应用开发学习清单和资料手把手帮你快速入门学习路线:✅大模型基础认知—大模型核心原理、发展历程、主流模型GPT、文心一言等特点解析✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑✅开发基础能力—Python进阶、API接口调用、大模型开发框架LangChain等实操✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经以上6大模块看似清晰好上手实则每个部分都有扎实的核心内容需要吃透我把大模型的学习全流程已经整理好了抓住AI时代风口轻松解锁职业新可能希望大家都能把握机遇实现薪资/职业跃迁这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
返回列表