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