五厂面经真题集腾讯面经高频百度面经高频[检索增强算法原理混合检索]速答 · 约 6 分钟更新 2026-09-28

BM25 对 TF-IDF 做了哪些核心优化?字面检索的原理是什么?

一句话结论

BM25 是 TF-IDF 的改良版,核心优化了词频饱和度与文档长度归一化。在 RAG 中作为字面检索通道,依赖分词抓取精确匹配,与向量检索形成互补。

先这样答

字面检索的底层原理是基于词袋模型统计词频与逆文档频率,BM25 是目前工业界字面检索通道的标准实现。相比于基础的 TF-IDF 模型,BM25 主要解决了两个问题:词频随出现次数线性增长导致的权重失衡,以及长文档因词汇量大带来的天然得分优势。

具体来说,BM25 做了三处核心优化。第一是引入词频饱和机制。在 TF-IDF 中,一个词出现十次的文档权重是出现一次的十倍,容易被恶意灌水干扰;BM25 让词频进入亚线性函数——词频越高权重增长越缓慢并最终封顶,饱和速度由超参 k1 控制。第二是加入文档长度归一化。BM25 将当前文档长度与语料库平均长度进行对比,用比值来惩罚长文档,使得长短文档的得分具有可比性,惩罚强度由超参 b 控制。第三是改进了 IDF 的计算公式,使其更加平滑,防止在特定极端词频下出现负值。

在 RAG 架构中,字面检索通常依托 Elasticsearch 或 OpenSearch 等搜索引擎内核,主要负责抓取精确命中,比如专有名词、编号、缩写或错字纠正后的关键词。对于中文场景,BM25 检索前必须先进行分词或使用二元组,分词质量直接决定了该通道的上限,同义词扩展通常也在这层完成。

总结来说,在面试官面前可以这样收束:BM25 本质上就是 TF-IDF 加上词频饱和与长度归一化,通过 k1 和 b 两个旋钮调节。在混合检索中,它与向量语义召回形成互补,最后两路结果常使用 RRF 算法进行融合。

面试官会怎么追问

  • 「在实际业务里,BM25 的 k1 和 b 参数通常怎么调?」 k1 控制词频饱和速度,如果业务场景中文本较短且关键词出现一次就足够说明相关性,可以调低 k1。b 控制对长文档的惩罚力度,如果语料库中文档长度差异很大且长文档往往包含较多冗余信息,需要调高 b 值增加惩罚。默认值通常能覆盖多数场景,调参需要结合具体的检索评测集来做。

  • 「既然有了向量检索,为什么 RAG 还需要保留 BM25 字面检索?」 向量检索擅长捕捉上下文语义和泛化表达,但对精确的实体、产品编号或特定的缩写不够敏感。字面检索通过精确匹配能兜底这些硬性条件,防止事实性偏离。两路召回结果互补,后续通过 RRF 等排名融合算法重新计算得分,能提供更稳定的检索质量。

  • 「中文场景下使用 BM25 检索,遇到召回效果不好,通常排查什么问题?」 首先检查分词器的切分粒度,分词过细会导致词义破碎,过粗会导致匹配召回率下降。其次排查同义词表是否完善,因为字面检索无法理解语义,同义词扩展需要在这一层补全。最后确认是否混用了繁简体或全半角字符,这会导致原本相同的词汇无法命中。

回答的坑

  • 误以为 BM25 是一种深度学习或词向量模型,应该明确指出它是基于词法统计的传统检索算法,不具备语义理解能力。
  • 答题时只罗列了 TF 和 IDF 的概念却漏掉超参数的作用,必须准确点出 k1 控制词频饱和、b 控制长度归一化这两个核心机制。
—— 本题完 ——