🦾 AI Agent 🟡 进阶 ⏱ 8 分钟

🔍 向量检索 vs 关键词检索 + 混合检索

BM25 靠字面精确命中,向量检索靠语义理解。互补关系,两路都跑用 RRF 融合。

1

两种「相关」的理解

🔤 字面相关

词汇重叠——查询词在文档里出现了几次?

对应关键词检索(BM25),靠词频统计,擅长精确命中。

🧠 语义相关

意思接近——换了种表达方式,还是同一个意思?

对应向量检索,靠语义空间距离,擅长模糊语义匹配。

🔤

关键词检索 BM25

字面匹配
靠词频统计
精确命中强

VS
🧠

向量检索

语义匹配
靠 embedding 距离
语义理解强

互补关系,不是谁替代谁
2

BM25:靠词频 + 稀缺度

🗂️ 倒排索引

记录「每个词出现在哪些文档里」,而不是「每篇文档有哪些词」。

是 Elasticsearch、Lucene 传统搜索引擎的核心。

⚖️ 打分看两点

• 词频 TF:这个词在这篇文档出现几次
• 稀缺度 IDF:这个词有多罕见——给常见词降权、给罕见词加权

BM25 在 TF-IDF 上加了饱和度限制,防止重复太多次权重无限叠加。

🎬 BM25 的优势与盲区
✅ 优势
产品型号、专有名词、缩写都能精准命中——「iPhone 15 Pro Max 256GB」直接匹配
❌ 盲区
遇到同义词就束手无策:「手机截图」vs「iPhone 截屏」——无词汇重叠,分数为零
3

向量检索:靠语义距离

🧮 先转向量

用 Embedding 模型把文本转成高维向量(语义空间的坐标),语义相近则坐标靠近。

「苹果手机怎么截图」和「iPhone 如何截屏」虽无一字相同,余弦相似度可达 0.95。

⚡ ANN 检索

用近似最近邻算法(ANN)在向量库找最近的 Top-K,百万量级几十毫秒返回。

优势:语义理解强,跨越同义词、近义词、不同表达方式。
劣势:对精确词汇不敏感——产品型号、人名在向量空间距离可能不近。

4

核心区别对比

维度🔤 关键词 BM25🧠 向量检索
匹配方式词汇重叠统计语义空间距离
索引结构倒排索引(稀疏)向量库(稠密)
同义词✗ 无法处理✓ 天然支持
精确词命中✓ 极好✗ 容易漏
计算方式基于统计,可解释黑盒,向量距离
适合场景专有名词、代码、精确查询语义问答、模糊表达
5

混合检索 + RRF 融合

🔤 BM25 召回精确词命中
➜
🧠 向量召回语义匹配
➜
🔀 RRF 融合按排名倒数打分
➜
🎯 合并排序两路都中的排最前
⚡ 两路可并行,延迟取两路最大值而非相加,几乎无额外时间代价

RRF(Reciprocal Rank Fusion,互倒排名融合):不看来路的原始分数(量纲不同没法直接加权),只看排名,用排名的倒数打分:

score = Σ 1/(rank + k)

两路都认为相关的文档排最前,只有一路相关的也不会被丢掉。

🎬 工程优势
单路向量
召回语义相关,但产品型号「iPhone 15」这类精确词容易漏
单路 BM25
精确命中型号,但「怎么截屏」和「如何截图」这种同义表达召不到
混合 + RRF
两路都跑,取长补短,召回质量和覆盖面明显更宽
一句话总结

关键词检索(BM25)靠词频+稀缺度做字面精确匹配,擅长专有名词/型号,但同义词没辙;向量检索靠 embedding 语义距离理解「换种说法同一个意思」,但精确词容易漏。两者互补,生产用混合检索——两路并行召回,用 RRF 按排名倒数融合排序,取长补短。

🎤 面试问答 · 口语化回答
检索技术是 RAG 面试的必考基础,这几问常被追问:
面试官向量检索和关键词检索有什么区别?
你

关键词检索靠 BM25,本质是词频统计,看查询词在文档里出现了多少次,擅长精确命中,产品型号、专有名词都能精准找到,但遇到同义词就没辙;向量检索靠 embedding 把文本转成高维向量,语义相近坐标就靠近,能理解换种说法同一个意思,比如「手机截图」和「iPhone 截屏」,但反过来对精确词汇不敏感,型号这种容易漏。

💡 加分点:用「手机截图 vs iPhone 截屏」这个例子很生动,一下就能讲清两种检索的本质区别。
面试官为什么 RAG 里要做混合检索?
你

因为两种检索各有盲区,是互补关系。向量检索擅长语义,但产品型号、人名这些精确词在向量空间里距离可能不近;BM25 擅长精确命中,但同义词完全没辙。生产里我一般两路都跑,向量和 BM25 各召回一批,再用 RRF 融合排序。RRF 不看原始分数因为量纲不同,只看排名,用排名的倒数打分,两路都相关的排最前,只有一路相关的也不会丢。

💡 加分点:提到「两路可并行,延迟取最大值而非相加」很加分,说明你考虑过工程成本。
面试官RRF 是什么?
你

RRF 是 Reciprocal Rank Fusion,互倒排名融合。它不看来路的原始分数,因为向量检索和 BM25 的分数量纲完全不同没法直接加权,它只看排名,用 1 除以排名加一个常数 k 来打分,然后把两路的分加起来排序。两路都认为相关的文档分最高排最前,只有一路相关的也不会被完全丢掉,这样取长补短。

💡 加分点:能主动说出「量纲不同所以只看排名」这个设计动机,说明你真理解 RRF 而不是背公式。
📝 读完打卡 · 写下你的收获 读完了?来打卡吧
用一句话写下你从这篇学到的最大收获,检验自己是否真的懂了 👇
⏱ 00:00 🔥0分