混合检索:关键词与向量如何一起用

纯向量召回擅长语义,关键词召回擅长专有名词。多数业务需要二者协作。

语义检索在同义改写上表现好,却常漏掉错误码、函数名、工单号这类「必须字面命中」的查询。关键词(BM25 等)正好互补。

常见融合方式

  • 双路召回再合并:各自取 Top-K,按文档 ID 去重后送重排。
  • 分数加权α · dense + (1-α) · sparse,先做分数归一化。
  • 倒数排名融合(RRF):不依赖原始分数尺度,实现简单、稳健。

归一化别省

余弦分与 BM25 分不在同一量纲。直接相加会让某一路永久主导。可用 min-max、z-score,或干脆改用 RRF。

实务建议

  1. 专有名词多的语料:提高稀疏权重或强制关键词必现。
  2. 口语化问法多:提高稠密权重,并保留重排模型兜底。
  3. 用黄金集分别看「只稠密 / 只稀疏 / 混合」的召回,再调 α。
混合检索的目标不是两路都更大,而是让失败模式彼此覆盖。

小结

先双路召回,再用 RRF 或归一化加权,最后重排。评估时拆开看每一路的贡献,调参才有依据。