从概率到 BM25:信息检索的概率之路
一句话概括
第 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 的祖先。它的假设很简单粗暴:
- 二值表示:文档和查询都表示成词的出现/不出现向量(0 或 1),忽略词频
- 词项独立:词和词之间互不影响(就是朴素贝叶斯那个”朴素”假设)
推导过程(精华)
给定查询 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 为什么好用?
- 词频饱和:tf 越大权重越大,但有上限(不会无限增长),符合直觉——一个词出现 100 次不比 10 次有用 10 倍
- 长度归一化:长文档不会因为词多就天然占便宜
- 参数少且鲁棒:k₁、b、k₃ 就三个参数,而且经验值适用性很广
- 理论根基扎实:不是拍脑袋设计的,而是从概率模型一步步推导出来的
一张图总结
概率检索的思想
│
▼
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