BM25 的前世今生:读 Robertson & Zaragoza 2009 有感
这篇论文是什么?
Robertson 和 Zaragoza 在 2009 年发表的长篇综述《The Probabilistic Relevance Framework: BM25 and Beyond》,是 BM25 的「家谱正史」。Robertson 本人就是 BM25 的发明者之一,这篇论文把 BM25 从哪里来、怎么推导的、有哪些扩展、跟其他模型什么关系,讲得清清楚楚。
如果你做 RAG 或搜索引擎,这篇论文值得精读。下面是我的梳理。
核心思想:概率相关性框架(PRF)
整篇论文围绕一个问题展开:
给定查询 q,文档 d 与 q 相关的概率是多少?
这不是修辞——是字面意义上的概率论问题。Robertson 认为检索的本质就是估计 P(相关 | d, q),然后按这个概率从高到低排列文档。
这个框架叫 Probabilistic Relevance Framework(PRF),有几个关键前提:
- 相关性是二值的:一篇文档要么相关,要么不相关(作者承认这是简化,但实践中够用)
- 相关性是相对于信息需求而言的,不是简单的”话题匹配”
- PRP(概率排序原则)成立:按相关概率降序排列就是最优排序
BM25 的推导路径
论文最精彩的部分是 Section 2-3,展示了一个从抽象概率到具体打分函数的完整推导链。
第一步:从概率到对数似然比
贝叶斯翻一下,去掉查询常量,得到这个形式。
第二步:词项独立假设
假设词与词之间条件独立(朴素贝叶斯假设)。联合概率变成连乘,取对数后变成连加:
关键洞察:每个查询词独立贡献一个权重,总分就是权重之和。这个形式决定了 BM25 天然支持增量计算,工程上非常友好。
第三步:2-Poisson 模型 → 词频饱和
这是 BM25 区别于简单 IDF 模型的关键。
论文引入了 “Eliteness”(精英性) 的概念:一篇文档对于某个词 t,要么是”精英”的(深入讨论了这个话题),要么不是。在这个假设下,词频的分布可以用两个 Poisson 分布的混合来建模:
- 精英文档的词频分布:参数较大(高频)
- 非精英文档的词频分布:参数较小(低频)
从这个模型推导出来的词频权重函数有一个重要特性:饱和(saturation)——词频越高权重越大,但增长越来越慢,趋于一个上限。
这就是 BM25 那个经典公式的来由:
- 当 tf → ∞ 时,权重趋近 k₁ + 1
- k₁ 控制饱和速度:k₁ 越大饱和越慢,原始词频的影响越大
直觉:一个词出现 100 次不比出现 10 次有用 10 倍。第一次出现最有价值,之后递减。
第四步:文档长度归一化
长文档天然有更多词,会在打分中占便宜。BM25 的处理方式:
- b = 0:不做长度归一化
- b = 1:完全按长度归一化
- 经验最优值:b ≈ 0.75
完整的 BM25 公式
把所有部分拼在一起:
其中 IDF 有几种变体,最常用的是:
关键扩展:不只是 BM25
论文的一大贡献是展示了 PRF 框架的扩展性。BM25 不是终点,而是一个起点。
BM25F:结构化文档的 BM25
现实中的文档是有结构的——标题、正文、摘要、锚文本……同一个词出现在标题里和出现在正文里的价值完全不同。
BM25F 的思路:
- 先做字段级词频加权求和(线性组合):
- 然后把 tf’ 代入标准的 BM25 饱和函数
关键区别:BM25F 在饱和函数之前做字段融合,而不是之后。这意味着标题中一个词的高频不会被饱和函数压平——因为融合发生在饱和之前。
对 RAG 的启示:如果你的文档有结构(标题、章节、表格),BM25F 比普通 BM25 更合理。可以在检索前把字段级词频加权合并,然后用标准 BM25 打分。
多特征融合
PRF 框架不局限于文本特征。任何可以计算 P(feature | 相关) / P(feature | 不相关) 的特征都可以融入打分:
- PageRank / 文档权威性
- 点击率
- 文档新鲜度
- 文档长度本身(独立于词频归一化)
方法很简单:把非文本特征的对数似然比加到总得分上。
位置信息和邻近度
论文还讨论了查询词在文档中的位置关系对相关性的影响——两个查询词靠得越近,相关性越高。这可以通过在打分函数中添加 proximity 项来实现。
参数调优的实践建议
论文 Section 5 专门讨论参数优化,有几个实用结论:
- k₁ 和 b 可以在开发集上用网格搜索优化。典型搜索范围:k₁ ∈ [0, 3],b ∈ [0, 1]
- BM25F 的字段权重可以用贪心法或梯度下降优化
- 参数对效果的影响是平滑的,不需要精确到小数点后几位
- 经验默认值(k₁=1.2, b=0.75)在大多数场景下已经是不错的起点
与其他模型的关系
论文把 BM25 放在了更大的图景中:
- vs 语言模型(LM):LM 是生成式思路(“文档多大可能生成查询”),PRF 是判别式思路(“文档多大可能相关”)。两者在实践中效果接近,但 PRF 更容易融入非文本特征
- vs DFR(Divergence from Randomness):DFR 也有概率基础,但从不同的随机性模型出发。BM25 的 2-Poisson 模型可以看作 DFR 的一种特例
- vs 深度学习模型:论文发表时(2009)深度学习还没兴起,但 PRF 框架的”特征加权”思路与现代 Learning-to-Rank 是兼容的
我的收获
读这篇论文最大的感触是:BM25 不是拍脑袋设计的,每一步都有概率论的推导支撑。
- 词频饱和 → 来自 2-Poisson 模型的自然结果
- 文档长度归一化 → 来自对词频期望的修正
- IDF → 来自无相关反馈时的对数似然比近似
- 字段权重 → 来自对文档结构化特征的建模
理解了这个推导链,你就不会把 BM25 当黑盒。遇到效果不好的时候,你能知道该调哪个参数、为什么调。
对 RAG 系统的具体建议
- 混合检索的 BM25 部分:用标准 BM25 就行,k₁=1.2, b=0.75 是安全起点
- 如果你的文档有明确的标题/正文结构:考虑 BM25F,给标题字段更高权重
- 专业术语、ID、缩写的精确匹配:BM25 远强于向量检索,这是混合检索的核心价值
- 参数调优:在你的验证集上做个小规模网格搜索,通常能比默认值好 2-5%
- 加入非文本特征:如果文档有元数据(时间、来源、质量评分),可以像 BM25F 那样融入打分
论文信息:Robertson, S., & Zaragoza, H. (2009). The Probabilistic Relevance Framework: BM25 and Beyond. Foundations and Trends in Information Retrieval, 3(4), 333-389.