关键词检索(稀疏检索):
向量检索(稠密检索):
一句话:
关键词检索:字面匹配。
向量检索:语义匹配。
优点:
缺点:
优点:
语义匹配强:同义、改写、跨语言都能召回。
处理口语化 query:用户怎么问都能找到语义相关文档。
泛化好:不依赖词重叠。
多模态扩展:文本、图像、语音都能编码到同一空间。
缺点:
| 维度 | 关键词检索 | 向量检索 |
|---|---|---|
| 匹配方式 | 字面 | 语义 |
| 表示 | 稀疏高维 | 稠密低维 |
| 精确匹配 | 强 | 弱 |
| 语义匹配 | 弱 | 强 |
| 可解释性 | 强 | 弱 |
| 冷启动 | 好 | 差 |
| 成本 | 低 | 高 |
| 多语言 | 弱 | 强 |
| 代表 | BM25 | Embedding + ANN |
混合检索 = 关键词检索 + 向量检索,取长补短。
必须用混合检索的场景:
(1)query 里既有语义需求,又有精确实体
比如:“2023 年 iPhone 15 的电池续航怎么样?”
“电池续航”是语义,“iPhone 15”是精确实体。
纯向量可能把其他手机混进来,纯关键词可能漏掉语义相关文档。
混合检索能同时保证实体准确和语义相关。
(2)垂直领域,专有名词多
法律、医疗、金融、代码、电商。
大量术语、编号、型号、法规条款。
向量模型对专有名词区分弱,必须靠关键词兜底。
(3)用户 query 多样化
有的用户用精确词,有的用口语。
纯关键词漏语义,纯向量漏精确。
混合能覆盖更多 query 类型。
(4)召回率要求高
比如法律检索、医疗检索,漏掉一条可能很严重。
混合检索多路召回,召回率更高。
后续用重排序精排。
(5)跨语言或同义词多
向量负责跨语言和同义。
关键词负责精确术语。
两者互补。
(6)冷启动 + 领域适配
新领域,Embedding 没适配好,向量效果差。
关键词检索不依赖训练,能兜底。
混合更稳。
一句话:当 query 同时包含语义需求和精确匹配需求,或者对召回率要求高时,混合检索基本是必须的。
常见方法分两类:分数融合 和 结果融合(排名融合)。
(1)分数融合(Score Fusion)
思路:把两路检索的分数归一化后加权求和。
final_score = α · score_dense + (1 - α) · score_sparse
关键问题:
两路分数尺度不同,BM25 分数无界,向量相似度在 [-1, 1] 或 [0, 1]。
必须先归一化:Min-Max、Z-Score、Softmax。
α 需要调参,通常用验证集。
不同 query 可能需要不同 α。
优点:简单,可调。
缺点:归一化敏感,α 难调,跨 query 不稳定。
(2)排名融合(Rank Fusion)
思路:不融合分数,只融合排名。
最常用的是 RRF(Reciprocal Rank Fusion):
RRF_score(d) = Σ_r 1 / (k + rank_r(d))
rank_r(d) 是文档 d 在第 r 路检索中的排名。
k 是平滑常数,通常 60。
只依赖排名,不依赖分数尺度。
优点:
不需要归一化,鲁棒。
实现简单,效果稳定。
对分数尺度不敏感。
缺点:
丢失分数信息。
对排名靠后的文档区分度低。
(3)其他融合方法
加权 RRF:不同路给不同权重。
学习融合:用模型学习融合权重。
级联融合:先一路召回,再另一路补充。
去重合并:两路结果去重后统一重排序。
(4)实践建议
先用 RRF 做 baseline:简单、鲁棒、效果好。
需要精细控制时用分数融合:但要做好归一化和调参。
最终都要重排序:融合后接 Cross-Encoder 精排。
用评估数据验证:Recall@K、MRR、NDCG。
关键词检索强在精确匹配、可解释、冷启动好,弱在语义;向量检索强在语义、泛化、多语言,弱在精确匹配和可解释。当 query 同时有语义和精确需求、垂直领域专有名词多、召回率要求高时,必须用混合检索。融合方法分分数融合和排名融合,RRF 是最常用的排名融合,简单鲁棒;分数融合需要归一化和调参。最终通常接重排序精排。
结构完整:优缺点 → 何时必须用 → 怎么融合,逻辑闭环。
区分度好:
初级:能说关键词精确、向量语义。
中级:能说混合场景、RRF。
高级:能说分数归一化、α 调参、学习融合、级联融合。
贴近工程:混合检索是 RAG 的核心优化点,必考。
有追问空间:可以追问 RRF 的 k、归一化方法、重排序、评估指标。
第三问偏细:分数融合和结果融合是工程细节,没做过的人可能答不上。
容易背结论:可能只答“关键词精确,向量语义,混合用 RRF”。
缺少场景:没问“你实际项目怎么选 α?怎么评估?”
没覆盖学习融合、级联融合:这些是进阶方法,题目没提。
质量:上。 适合中高级岗位,能有效区分“知道两种检索”和“真正做过混合检索调优”的人。建议追问:
“RRF 的 k 怎么选?为什么是 60?”
“分数归一化用哪种?为什么?”
“α 怎么调?不同 query 要不要不同 α?”
“混合后怎么评估效果?”
“学习融合怎么实现?”
先给本质:关键词字面,向量语义。
分点说优缺点:精确、可解释、冷启动 vs 语义、泛化、多语言。
说清必须混合的场景:语义 + 精确、垂直领域、高召回。
讲融合方法:分数融合 vs 排名融合,重点 RRF。
主动提进阶:学习融合、级联融合、重排序。
结合实践:说“我们用 RRF + Cross-Encoder”。
“关键词检索是字面匹配,代表 BM25;向量检索是语义匹配,基于 Embedding。”
“关键词检索强在精确匹配、可解释、冷启动好、成本低,弱在语义、同义词、跨语言。向量检索强在语义、泛化、多语言,弱在精确匹配、可解释、冷启动、领域适配。”
“必须用混合检索的场景:query 同时有语义和精确实体,比如‘iPhone 15 续航’;垂直领域专有名词多,比如法律、医疗、代码;召回率要求高;query 类型多样;跨语言或同义词多;冷启动领域适配。”
“融合方法分两类。分数融合是归一化后加权求和,需要处理尺度差异和调 α。排名融合最常用 RRF,公式是 Σ 1/(k+rank),只依赖排名,不需要归一化,鲁棒。k 通常取 60。”
“实践上,我们先用 RRF 做 baseline,再根据评估调权重。融合后接 Cross-Encoder 重排序,精排到 Top 5。评估用 Recall@K、MRR、NDCG。如果效果不够,会考虑学习融合或级联融合。”
提到 BM25、词汇鸿沟、精确匹配、语义匹配。
提到 RRF 公式、k=60、分数归一化、α 调参。
提到 学习融合、级联融合、Cross-Encoder 重排序。
提到 Recall@K、MRR、NDCG 评估。
结合真实调优经验。
只说“关键词精确,向量语义”,不展开。
不知道 RRF。
不知道分数归一化问题。
不知道混合后要重排序。
说“混合一定比单路好”(不一定,要看场景和调参)。
评论专区
评论加载中...登录后即可发表评论