两种检索各自擅长什么
向量检索把文本压成向量,比的是**语义距离**:问「怎么压缩图片体积」,它能召回讲「减小图片文件大小」的段落,即使两者没有一个字相同。
代价是:它对**精确字面**不敏感。查产品编号、错误码、罕见专有名词时,向量可能把「长得像」的内容排在前面,而把真正包含那个编号的段落漏在后面。
关键词检索(BM25 一类)恰好相反:它统计词频与逆文档频率,**字面命中权重高**,查编号、查术语一次就中;但它不理解同义改写,问「减小文件大小」就找不到只写「压缩图片体积」的段落。
混合检索的做法
1. **两路召回**:同一个查询分别走向量与关键词检索,各取前 N 条(例如各 50 条);
2. **分数归一化**:两路分数量纲不同,必须先归一化(或改用排名倒数 RRF),否则一路会凭数值大小压倒另一路;
3. **合并去重**:按文档 ID 合并,同一篇被两路都召回的,通常更可信;
4. **重排(可选)**:用更贵的模型对合并后的候选做精排,取最终前 K 条。
三种合并方式的取舍
常见坑
什么时候不必上混合
如果查询几乎都是自然语言长问句、语料里也少有编号与专有名词,纯向量检索通常够用。**先看真实查询日志再决定**,不要因为「混合听起来更强」就默认加上——多一路就多一份索引维护与延迟成本。