RRF 排序融合,混合检索如何统一 BM25 和向量搜索
做混合检索时,会碰到一个很朴素的问题。 BM25 说某篇文档得了 18.6 分,向量检索说另一篇文档的相似度是 0.83。到底谁应该排在前面? 18.6 看起来比 0.83 大得多,但这两个数字根本不在同一把尺子上。直接相加没有意义,随手归一化又会受到查询、模型和数据分布影响。 RRF 提供了一个很省心的思路。 既然各路分数不好比较,那就不比较分数,只比较排名。 为什么混合检索需要结果融合 关键词检索和向量检索擅长的事情并不一样。 BM25 根据词项出现情况计算相关性,遇到错误码、产品型号和专有名词时很有优势。查询里明确出现 ERR_CONNECTION_RESET,包含同一字符串的文档通常应该优先返回。 向量检索比较的是语义表示。用户问「服务突然连不上了怎么办」,即使文档里没有完全相同的句子,只写了「连接被远端重置」,它也有机会把内容召回。 两路结果放在一起,覆盖面通常比单一路径更好。麻烦在于,它们返回的原始分数没有统一含义。 BM25...
