向量检索不是唯一手段
向量检索擅长"意思相近但用词不同",但它有几类明显短板:精确匹配(型号、编号、代码符号)、
短查询(一个词)、结构化条件(时间/类别筛选)、精确计数。这些场景下关键词或规则往往更好。
四种手段,各自的强项
| 手段 | 强在哪 | 弱在哪 |
|---|---|---|
| 向量检索 | 同义、跨语言、句子级语义 | 精确词、短查询、稀有词 |
| 关键词(BM25) | 精确词、专有名词、缩写 | 同义改写、口语化提问 |
| 结构化筛选 | 时间、类别、权限、数值范围 | 语义相似 |
| 规则/正则 | 编号、格式、枚举值 | 自然语言变化 |
结论:真实系统里通常是组合,而不是二选一。混合检索(关键词 + 向量)在多数场景的召回都优于单路。
怎么组合(三种常见做法)
- 并行召回 + 合并:两路各取 N 条,去重后统一排序(最常用、最稳);
- 先规则过滤再向量:用结构化条件把候选集缩小,再走向量(提升精度、降低计算量);
- 按查询类型路由:短查询/含编号 → 关键词优先;长句/口语 → 向量优先。
第 3 种收益大但需要可判定的路由规则(见多模型路由那篇 ✔ 同理:判据必须代码可判定)。
什么时候"不该用检索"
- 能算的不要检索:统计、计数、聚合 → 走 SQL/代码;
- 能查枚举的不要检索:状态码、分类字典 → 查表;
- 能规则判断的不要检索:格式校验、白名单 → 正则。
把检索留给"语义相似"这一件事 ✔,系统会简单很多。
怎么验证该加哪一路
- 拿 30 个真实问题,标注每题"理想片段";
- 分别测:仅向量 / 仅关键词 / 混合 → 比召回率;
- 按查询类型分组看(短查询、含编号、长句)→ 差异通常集中在某一组;
- 只对表现差的那一组加手段(别全量上混合,避免无谓的复杂度与成本)。
一条经验
如果你发现"关键词那路永远没被用到",说明路由规则写错了;
如果"两路结果几乎总是一样",说明你的语料区分度低 —— 这时先把切分与解析弄对(见文档解析那篇),
加更多检索手段是治标。
落地顺序
- 先做关键词 + 向量并行召回(改动小、收益明确);
- 加结构化过滤(尤其是时间与权限,往往比语义更能提升"有用率");
- 最后才做按查询类型的路由。