从概率到 BM25:信息检索的概率之路

2026/4/18
信息检索IRBM25概率模型RAG

一句话概括

第 11 章回答了一个根本问题:能不能用概率论来算一篇文档跟查询有多相关? 答案是能,而且比你想的优雅。

为什么需要概率模型?

前面的章节讲过布尔模型和向量空间模型。布尔模型太死板(要么匹配要么不匹配),向量空间模型虽然好用,但它的理论基础——余弦相似度——更像是一个几何直觉,不是从”相关性”这个概念本身推导出来的。

概率模型换了个角度:我不问”这篇文档和查询有多像”,我问”这篇文档是用户想要的,概率有多大?”

这个转换很关键。它把检索问题变成了一个分类问题:给定查询 q,文档 d 属于”相关”类的概率是多少?

Probability Ranking Principle(概率排序原则)

Robertson 提出的 PRP 是整章的哲学基石:

按文档相关的概率从高到低排列,就是最优排序。

听起来像废话,但它有严格的数学证明。核心假设只有一个:一篇文档的相关性与另一篇无关(独立性假设)。在这个假设下,按概率降序排列能最小化期望损失。

PRP 还有个带成本的版本:返回一篇相关文档的收益是 R,返回一篇不相关文档的代价是 C,那最优策略是按 P(相关) × R - P(不相关) × C 排序。实际中 R 和 C 通常设为 1 和 0,退回到简单版。

Binary Independence Model(BIM)

BIM 是概率检索的第一个具体模型,也是 BM25 的祖先。它的假设很简单粗暴:

  1. 二值表示:文档和查询都表示成词的出现/不出现向量(0 或 1),忽略词频
  2. 词项独立:词和词之间互不影响(就是朴素贝叶斯那个”朴素”假设)

推导过程(精华)

给定查询 q,要对文档 d 排序,等价于排序:

O(R|d, q) = P(R=1|d,q) / P(R=0|d,q)

用贝叶斯公式展开,取对数,利用独立性假设把联合概率拆成连乘,最后得到一个简洁的打分函数——Retrieval Status Value (RSV)

RSV(d) = Σ_{t∈q∩d} log [p_t / (1-p_t)] - log [u_t / (1-u_t)]

其中:

  • p_t:词 t 在相关文档中出现的概率
  • u_t:词 t 在不相关文档中出现的概率

这就是一个对数似然比。每个查询词贡献一个权重,权重取决于这个词在相关文档中比不相关文档中多出现了多少。文档得分就是它包含的查询词的权重之和。

实际中的估算

问题来了:p_t 和 u_t 怎么算?你不知道哪些文档相关啊!

没有相关反馈时,经典近似是:

  • p_t ≈ 0.5(常数,所有相关文档的概率一样)
  • u_t ≈ df_t / N(文档频率除以总文档数)

代入后 RSV 退化为 IDF 权重

RSV(d) ≈ Σ_{t∈q∩d} log [(N - df_t) / df_t]

看,IDF 就这样从概率论里自然长出来了。

BM25:从理论到实战之王

BIM 有个明显缺陷:只用二值(出现/不出现),不考虑词频和文档长度。对于短文档(书目记录、摘要)还行,对现代全文搜索就不够了。

BM25(也叫 Okapi BM25,因首次实现在 Okapi 系统中而得名)在 BIM 基础上做了关键扩展。

逐步构建 BM25

第一步:IDF 基础分

score(d) = Σ_{t∈q∩d} IDF(t)

就是 BIM 的简化版。

第二步:加入词频和文档长度

score(d) = Σ_{t∈q} IDF(t) × [tf_{td} × (k₁ + 1)] / [tf_{td} + k₁ × (1 - b + b × |d|/avgdl)]

这是 BM25 的核心公式。三个关键组件:

  • tf_{td}:词 t 在文档 d 中的词频
  • |d|/avgdl:文档长度除以平均文档长度(长度归一化)
  • k₁:控制词频饱和度的参数。k₁=0 退化为二值模型,k₁ 越大越接近原始词频。经验值 1.2~2.0
  • b:控制长度归一化强度。b=1 完全归一化,b=0 不归一化。经验值 0.75

第三步:查询词频(长查询时用)

对段落级别的长查询,还可以加入查询词频:

score(d, q) = Σ_{t∈q} IDF(t) × [tf_{td} × (k₁ + 1)] / [tf_{td} + k₁ × (1 - b + b × |d|/avgdl)] × [(k₃ + 1) × tf_{tq}] / [k₃ + tf_{tq}]

k₃ 是查询词频的缩放参数。

第四步:带相关反馈的完整版

如果有用户标注的相关/不相关文档,IDF 部分可以用更精确的相关性权重替代(基于 Robertson-Spärck Jones 公式),这就是 BM25 的完整形态。

BM25 为什么好用?

  1. 词频饱和:tf 越大权重越大,但有上限(不会无限增长),符合直觉——一个词出现 100 次不比 10 次有用 10 倍
  2. 长度归一化:长文档不会因为词多就天然占便宜
  3. 参数少且鲁棒:k₁、b、k₃ 就三个参数,而且经验值适用性很广
  4. 理论根基扎实:不是拍脑袋设计的,而是从概率模型一步步推导出来的

一张图总结

概率检索的思想


Probability Ranking Principle(按相关概率排序最优)


Binary Independence Model(朴素贝叶斯 → RSV → IDF)
    │  问题:只看"出现/不出现"

BM25(加入词频 + 文档长度 + 饱和曲线)
    │  核心:tf 饱和 + 长度归一化 + IDF

实战之王(TREC 评测中广泛胜出,至今仍是基线)

对 RAG 的启示

如果你在做 RAG 系统,BM25 不是历史遗产,而是混合检索的必备组件

  • 向量检索擅长语义理解,但精确词匹配弱
  • BM25 擅长精确词匹配,特别是专业术语、ID、缩写等
  • 两者结合(hybrid search + rerank)是目前召回率最高的方案

你的轨道交通知识库项目如果只用向量检索,70% 的召回率很正常。加上 BM25 做混合检索,预期可以提升 12-15%。

推荐阅读

  • 《Introduction to Information Retrieval》第 11 章(在线 HTML 版
  • Spärck Jones et al. (2000) — BM25 的原始论文
  • Robertson & Zaragoza (2009) — The Probabilistic Relevance Framework: BM25 and Beyond

📝 文章反馈