混合检索:关键词与向量如何一起用
纯向量召回擅长语义,关键词召回擅长专有名词。多数业务需要二者协作。
语义检索在同义改写上表现好,却常漏掉错误码、函数名、工单号这类「必须字面命中」的查询。关键词(BM25 等)正好互补。
常见融合方式
- 双路召回再合并:各自取 Top-K,按文档 ID 去重后送重排。
- 分数加权:
α · dense + (1-α) · sparse,先做分数归一化。 - 倒数排名融合(RRF):不依赖原始分数尺度,实现简单、稳健。
归一化别省
余弦分与 BM25 分不在同一量纲。直接相加会让某一路永久主导。可用 min-max、z-score,或干脆改用 RRF。
实务建议
- 专有名词多的语料:提高稀疏权重或强制关键词必现。
- 口语化问法多:提高稠密权重,并保留重排模型兜底。
- 用黄金集分别看「只稠密 / 只稀疏 / 混合」的召回,再调 α。
混合检索的目标不是两路都更大,而是让失败模式彼此覆盖。
小结
先双路召回,再用 RRF 或归一化加权,最后重排。评估时拆开看每一路的贡献,调参才有依据。