两路检索的差别
向量检索把文本编码成向量比语义相似度,擅长同义改写、口语化提问与跨表述的语义匹配;关键词检索(BM25 等)按词频与逆文档频率打分,擅长专有名词、型号、错误码、人名等需要精确命中的内容。两者失败的方式不同:向量容易在专名上漂移,关键词容易在换一种说法时漏掉。
基本信息
| 向量路 | embedding 模型 + 向量库,语义近似召回 |
|---|
| 关键词路 | 倒排索引,Elasticsearch / OpenSearch / pg 全文检索均可 |
|---|
| 中文前提 | 必须选好分词器:IK、jieba(结巴分词)等,分词粒度直接影响效果 |
|---|
| 评估重点 | 分别统计两路在自有问题集上的召回率,确认互补再融合 |
|---|
维度对比
| 维度 | 向量检索 | 关键词 / BM25 |
|---|
| 匹配方式 | 语义相似 | 字面命中 |
| 同义改写 | 表现好 | 容易漏 |
| 专名 / 编号 / 错误码 | 可能漂移 | 稳定 |
| 索引更新 | 需重新向量化 | 倒排更新 |
| 冷启动 | 依赖 embedding 质量 | 直接依赖词频统计 |
症状与对策
- 用户换一种说法就搜不到:加向量路,关键词路的字面依赖太强
- 问「ERR-5021 怎么处理」命中一堆无关文档:加关键词路并提高其权重
- 同一份文档的新旧版本同时被召回:靠元数据过滤解决,与检索方式无关
- 关键词路结果噪声高:先检查分词器与停用词表,再考虑降低该路权重
- 两路结果高度重叠:说明语料表述统一,此时融合增益有限,可只保留一路降低成本
组合方式
| 组合 | 做法 | 代价 |
|---|
| 并行融合 | 两路各取候选后按排名合并(如 RRF) | 多一次查询与融合逻辑,延迟略增 |
| 串行兜底 | 向量为主,命中不足时补关键词路 | 实现简单,但关键词路的优势发挥不充分 |
| 引擎内混合 | Elasticsearch 等在一次查询内做混合打分 | 运维集中,权重与归一化受引擎约束 |
中文场景 BM25 的效果强依赖分词器,分词粒度要兼顾召回与噪声;把业务专名加入自定义词典,通常比调权重更有效。