当前位置: 首页 > news >正文

RAG 混合检索:关键词 + 语义

《AI 知识卡片》第 11 期 · 一条抓字面,一条抓意思,再算最终排名

前面一期讲过语义检索:搜“番茄”也能找到“西红柿”。但它有个短板——该精确的时候不精确。你搜一个准确的产品型号、一个函数名,要的是一字不差那一条,它却给你一堆“长得很像”的。

怎么补这个短板?——再给它加一条腿“关键词检索”。

关键词检索

在向量检索火起来之前,搜索主要靠的是关键词匹配——把文档看成一袋子词,你搜的词在文档里出现得越多、越罕见,就越算命中。这类方法里最经典、常用的算法叫BM25

算一个词有多重要,主要看三件事:

  • 这个词罕见吗(越罕见越有区分度,“的”“是”这种词基本不算分);
  • 在这篇文档里出现了多少次(出现越多越相关,但有个饱和上限,不是出现 100 次就比 10 次重要 10 倍);
  • 这篇文档有多长(长文档天然词多,要打个折,不然长文占便宜);

关键词检索有向量给不了的两个好处:结果可解释(命中了哪个词一目了然),以及精确匹配特别硬——型号、函数名、专有名词、错误码,它能一字不差地咬住。

关键词检索的缺点:它完全不懂意思。比如:“番茄”和“西红柿”对它来说是两个毫不相干的词条。

两种检索方式对比

把两者摊开对比,能看出它们几乎是互补的:

关键词检索(BM25)语义检索(Embedding)
比什么字面重合意思远近
强项精确匹配:型号、函数名、专有名词换个说法也能懂:同义、近义、口语
弱项不懂同义词(词汇鸿沟)该精确时不精确,容易给近似货
可解释性高(命中了哪个词)低(一串数字,说不清)
要训练吗不用要(得有个 Embedding 模型)

根据提问内容各取所长,这正是“混合检索”的意义:谁也不能保证每次都对,但两条腿一起走,摔倒的概率小得多。

两份结果怎么合成一份?

两种检索各自返回一个排好序的列表,现在得合成一份最终排名。听起来简单,但有个坎:

两边的分数没法直接相加。BM25 的得分可能是十几、几十(没有上限),语义相似度是 0 到 1 之间的小数。把 15.3 和 0.72 加在一起,得到的数字毫无意义——量纲根本不一样

有个很巧的办法绕开了它,叫RRF(Reciprocal Rank Fusion,倒数排名融合)。它的核心思路是:不看分数,只看排名

不管你原始分多少,我只看你在各自榜单里排第几。名次是两边统一、可比的。然后按这个公式给分、把各榜的分加起来

RRF(d)=∑i=1n1k+ri(d),k=60 RRF(d) = \sum_{i=1}^{n} \frac{1}{k + r_i(d)}, \quad k = 60RRF(d)=i=1nk+ri(d)1,k=60

公式解释:d是一条候选内容,r_i(d)是它在第i个榜单里的名次,n是榜单的个数。

名次越靠前,分越高(第 1 名 1/61 ≈ 0.0164,第 2 名 1/62 ≈ 0.0161),在多个榜单都上榜的,分数会累加。

来看一个实测数据。某个查询下,有一块内容同时被两种检索捞到了:

语义检索里排第 1 → 1 / (60 + 1) = 0.01639 关键词检索里排第 3 → 1 / (60 + 3) = 0.01587 累加 = 0.03226 ← 最终得分

而其它内容大多只在其中一种检索结果里出现,只能拿一份分(0.016 上下)。结果这块“两边都认可”的内容,以接近两倍的分数稳稳排到了第一。

这就是 RRF 的精髓:奖励共识——被多个检索共同认可、且名次靠前的内容,最值得信任。

至于那个k=60,它的作用是削峰。这里举个便于理解的例子:你问两个朋友,下午茶点哪家奶茶,各自给了一份榜单:

朋友甲的榜单:① 喜茶 ② 奈雪的茶 ③ 蜜雪冰城 朋友乙的榜单:① 霸王茶姬 ② 古茗 ③ 蜜雪冰城

两份榜单里,只有蜜雪冰城被两个人同时推荐,可它在两边都只排第 3,喜茶和霸王茶姬各自是某一个人的首选,但另一个人压根没提。谁该排最前面?这就取决于 k,我们来对比计算一下:

不加 k(得分 = 1/名次): 喜茶 = 1/1 = 1.0 蜜雪冰城 = 1/3 + 1/3 = 0.67 ← 一个人的头名,压过了两个人的共识 k = 60: 喜茶 = 1/61 = 0.0164 蜜雪冰城 = 1/63 + 1/63 = 0.0317 ← 共识胜出,接近两倍

同一份榜单,只换了个 k,最终的排名就不一样了。原因在于1/名次这条曲线太陡——第 1 名的分是第 3 名的三倍;加上 60 之后曲线被拍平,第 1 名和第 3 名只差 3% 左右。名次的权重被压小,“上榜次数”的权重被放大。

所以这个旋钮的方向很清楚:k 越小,单榜头名越霸道;k 越大,越接近“只数上榜次数”。这里 60 是最常见的默认值。

混合检索并非十全十美

瑕疵 1:不保证每次都更好。如果是纯语义型的查询,单用语义检索,前五名干干净净;混合之后,关键词那路带进来的两条无关内容反而稀释了纯度。混合的价值是平均更稳、覆盖更全

瑕疵 2:成本翻倍。两套索引都要建、都要维护、都要查。

瑕疵 3:参数要调。RRF 的 k、加权融合的权重,都得拿自己的数据试出来。

也正因为融合之后排名仍然不够精细,工程上还会在后面加一道重排,把最贴题的那条真正顶到第一,后面会再单独开一期来讲。

一句话总结

关键词检索抓字面,语义检索抓意思,两种检索的盲区正好互补,这就是混合检索出现的意义。

http://www.jsqmd.com/news/1301273/

相关文章:

  • 终极Mac窗口管理神器:5个手势彻底提升你的多任务效率指南
  • 2026 年国内本土人力资源管理咨询机构选型指南|十大本土人力咨询公司专业能力对比分析 - 东方大成管理咨询
  • 基于plc的物料分拣11123(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • 物联网网关助力智慧商超综合体节能管控
  • 3步掌握B站数据爬取:用Python API解锁视频分析与弹幕挖掘
  • 迁安室内除异味攻略:装修味道散不掉?迁安本地除甲醛公司深度对比测评 - 专注室内空气检测治理
  • File-Based App架构:快速开发MVP的高效方案
  • Java并发编程:CountDownLatch核心原理、使用场景与实战解析
  • ncmppGui:3分钟解锁网易云音乐NCM加密文件的终极解决方案
  • 解密智能温控:FanControl如何解决PC散热系统的三大技术难题
  • Input Overlay终极指南:让直播操作可视化,提升观众互动体验
  • 2026采购管理系统怎么选?关键评估维度解析 - 资讯综合
  • Agent 避坑指南:别什么都用多 Agent 模式
  • STM32启动文件深度解析:从复位向量到C语言main函数的幕后功臣
  • 51单片机智能遮阳篷窗户帘衣架蓝牙APP光雨滴检测41-31(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_
  • 遥感技术分类、特点与应用实战:从数据获取到信息提取全解析
  • 如何用Three.js构建下一代室内3D地图体验?探索indoor3D的架构奥秘
  • C++停车场收费系统实战:面向对象设计、STL容器与文件持久化
  • OPC超级员工和传统客服机器人有什么区别? - 产品推荐官
  • 计算机毕业设计之基于SpringBoot+vue的监狱罪犯管理系统
  • 直流照明|商超地下车库智能感应节能照明方案
  • 基于西门子PLC的智能物流/快递分类设计11123(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • 【推广】长鑫科技登陆科创板,国产存储破局时代,这本 AI 芯片制造实战书必看
  • AI角色对话生成技术:从提示词工程到批量生成实践
  • Java Stream流深度解析:从核心概念到性能优化的实战指南
  • 单片机毕设选题推荐:基于 STM32F103C8T6 的定时烹饪控制器设计与实现 基于单片机继电器的智能煮饭模拟控制系统开发(016001)
  • 医院处方翻译流程是什么?如何办理处方翻译? - 点办通
  • 基于ACM数字图书馆的检索增强生成系统构建与实践
  • 大功率步进电机驱动系统设计:从H桥电路到STM32控制实战
  • Godot 4动画系统深度对比:AnimatedSprite2D与AnimationPlayer实战选型指南