跳到主要内容

K3.2 混合检索:两路一起上,各补盲区

最朴素、也最有效的主意​

上一节的结论是:关键词擅长精确匹配,语义擅长理解意思,两者各有各的盲区。

那最朴素的主意就是——两个一起用,取长补短。用户查「东西想退掉」,语义那路命中;用户查「X9-2000」,关键词那路命中;用户的问题横跨两者,就靠两路合力。这就是 2026 年生产 RAG 的标配:混合检索。

它做的事很直白:同一个查询,关键词检索跑一遍、语义检索跑一遍,各出一个排名,再把两个排名融合成最终的一个。

融合的拦路虎:两把尺子刻度不同​

「把两个排名合起来」听着简单,真做却有个拦路虎。

关键词那路给的是 BM25 分(可能是 12.7、8.3 这种数),语义那路给的是相似度(0 到 1 之间的小数)。这两把尺子刻度完全不同,没法直接相加——就像一个按「分数」算、一个按「百分比」算,硬加起来毫无意义。你也不能简单归一化,因为两路的分数分布形状差很远,归一化后还是会一头重一头轻。

RRF:干脆不看分数,只看名次​

RRF(Reciprocal Rank Fusion,倒数排名融合)用一个绝妙的偷懒办法绕开了这道坎:

别看分数了,只看名次。 每条结果在各路排行榜里排第几名,名次越靠前,给的分越多(第 1 名给最多,往后递减)。把它在两个榜里的「名次分」加起来,重新排序。

为什么这招高明?因为名次是通用货币——不管你原来的分是 BM25 的 12.7 还是相似度的 0.83,「排第 1」就是排第 1。这样两把不同刻度的尺子,就都被翻译成了同一种语言(排名),可以直接相加了。RRF 简单到几行代码就能写完,效果却出奇地好,是工业界的默认选择(公式见深入层)。

上手:看混合怎么兜住单路会漏的那一半​

前两个查询你已经见过——语义的主场、关键词的主场。现在看第三个,真正体现混合价值的:

🎮 动手实验
三路检索擂台:关键词 vs 向量 vs 混合
同一个查询,三条检索通道并排跑。绿框 = 这条查询「真正该命中」的资料。看哪一路捞得全、哪一路会漏。(基于中篇共享知识库,命中为真实计算)
🧑‍💻 东西收到不满意,想退掉(该命中:退货政策、换货流程)
💡 要点:没有一路检索是全能的。关键词擅长精确匹配(型号、专名、术语),但换个说法就抓瞎;语义擅长「懂意思」,却对精确词不敏感、还会被强势话题带偏。所以生产 RAG 几乎都用混合检索:两路一起上、各补盲区,再用 RRF 把两个排名融合(RRF 只看名次、不看分数,绕开了「两路分数没法直接比」的难题)。混合不是更花哨,是更少漏。

实验:跨话题的查询。 选查询「生鲜的运费和退货政策」,点「三路开跑」。这条查询横跨两个话题:运费 + 退货。看仔细每一路——

  • 语义检索被「配送」那一带吸住了:它把运费相关的段落排在前面,却把「退货政策」挤到了边缘,还混进了无关的「配送时效」。它只顾住了一半。
  • 关键词检索靠「生鲜」「退货」这些精确词,兜住了退货那一半。
  • 只有混合检索同时抓住了运费和退货——两个都命中(✅ 全部命中)。

这就是混合的全部价值:一路会漏的,另一路补上。 单路检索总有它照不到的角落,混合把两路的视野叠起来,漏得最少。

2026 的生产共识​

到 2026 年,业界对 RAG 检索这一步的共识已经相当统一:纯语义不够,纯关键词也不够,「混合检索 + 重排」是标配。 混合检索负责「别漏」(尽量把相关的都捞回来),重排负责「排对」(把最相关的顶到最前)——重排就是下一章 K4 的主题。

混合检索也不是银弹

两点提醒。其一,混合不是无脑叠加:两路的相对权重、RRF 的常数、各召回多少条,都是要拿真实查询调的参数(回扣 K2 的「评测驱动调参」,也预告 K6)。其二,也是最根本的——混合检索救不了「知识库里根本没有答案」。它只能在已有的资料里尽量捞全;库里缺了、写错了,两路一起上也变不出正确答案(回扣 K0:查不到照样答不好)。检索技术再花哨,也盖不过知识库本身的质量。

小结​

本节要点
  • 混合检索 = 关键词 + 语义两路一起跑,各补盲区,再融合——2026 年生产 RAG 的标配。
  • 融合的难题:两路分数刻度不同、没法直接加。RRF 的解法是只看名次不看分数,把不可比的分数翻译成通用的排名。
  • 混合的价值在「少漏」:跨话题、单路会漏一半的查询,两路合力才能都命中。
  • 它救不了「库里没答案」,两路权重也要调——检索技术盖不过知识库本身的质量。
📝 动手自测0/3
1. 「混合检索」具体指的是什么?
2. RRF(倒数排名融合)为什么「只看名次、不看分数」?
3. 在「生鲜的运费和退货政策」这个跨话题查询上,为什么只有混合检索两个话题都命中?

延伸阅读​