Robertson-Walker 1994 — 把 2-Poisson 压成一行能算的公式
是什么
这篇论文把当时一个理论很美但算不出来的检索模型(2-Poisson),近似成一个只有两三个参数、能在工业语料上直接跑的打分公式。这个公式后来被叫做 BM25(Best Match 25,因为是 Okapi 系统里第 25 版方案)。
日常类比:你有一条很复杂的曲线方程,里面 4 个变量都得现场估,估不出来;Robertson-Walker 干的事是——画出这条曲线长什么样,发现它就是个”开头线性、后面饱和”的 S 形,于是直接拿一个简单分式 tf / (k1 + tf) 去 fit 这个形状,参数从 4 个砍到 2 个,效果一样好。
工程意义:从这一刻起,理论检索模型才真的能跑。
为什么重要
不理解这篇论文里发生的近似,下面这些事都没法解释:
- 为什么 BM25 公式里有个看起来”凭空冒出来”的
tf/(k1+tf)分式——它不是拍脑袋,是 fit 一条概率曲线 - 为什么 IDF 项的形式是
log((N-df+0.5)/(df+0.5)),不是简单的log(N/df)——这是 PRP 推出来的概率 - 为什么参数只有 k1 和 b 两个——别的参数都被”近似掉”了
- 为什么 1994 年之后,30 年没有更好的字面打分公式——这个近似稳到离谱
核心要点
论文要解决的难题:1976 年 Robertson-Sparck Jones 证明”按 P(相关|文档) 排序最优”(PRP,Probability Ranking Principle)。但是 P(相关|文档) 怎么估?把它展开后,关键在于”一个词在相关文档 vs 不相关文档里的出现分布”。
1975 年 Harter 的 2-Poisson 模型:假设每个词有两类文档——精英文档(elite,真讲这个主题的)和非精英(顺带提一下)。词在两类里都服从泊松分布,但参数 λ(精英)远大于 μ(非精英)。理论很美。
问题:每个词要估 4 个参数(两个泊松均值 + 两个先验),语料里估不出。30 年没人能把它落地。
Robertson-Walker 1994 的两步近似:
- 观察 2-Poisson 的得分曲线:把词频 tf 画在横轴、得分画在纵轴,曲线是一条 S 形——tf=0 时 0 分,开头快速上升,到一定程度趋于饱和。
- 用一个简单分式 fit 这条曲线:发现
tf · (k1+1) / (tf + k1)这个分式形状几乎一样,但只有一个参数 k1(控制饱和速度)。
第二个独立贡献——长度归一化:长文档天然会让 tf 更大,对短文档不公平。引入 dl/avgdl(这篇文档长度 / 平均长度),用参数 b 控制归一强度。把分母里的 k1 替换成 k1 · (1-b+b·dl/avgdl)。
IDF 项:从 PRP 推导出来,形式是 log((N-df+0.5)/(df+0.5)),N 是总文档数,df 是含该词的文档数。+0.5 是 Robertson-Sparck Jones 1976 加的概率平滑项。
最终公式骨架(不背,看意思就好):
score(Q, D) = Σ IDF(qi) · ((k1+1) · tf) / (k1·(1-b+b·dl/avgdl) + tf) qi∈Q典型参数:k1 ∈ [1.2, 2.0],b = 0.75。这两个值不是后人调的,是 1994 论文本身在 TREC-2 数据上跑出来的范围。
实践案例
案例 1:S 形曲线长什么样
把 tf 从 0 到 50 喂进 tf·(k1+1)/(tf+k1),k1=1.5:
tf=0 → 0tf=1 → 1.0 (前几次命中加分快)tf=5 → 1.92tf=10 → 2.17tf=20 → 2.33tf=50 → 2.43 (后面基本不动了)直觉:第 1 次命中和第 5 次命中差别大;第 20 次和第 50 次差别小。这就是”提 50 次和提 5 次差别大、提 500 次和提 50 次差别不大”的数学版。
案例 2:长度归一化做了什么
两篇文档同样命中 发酵 5 次:
- 文档 A:80 词的小品(dl=80, avgdl=400),
dl/avgdl = 0.2 - 文档 B:800 词的长文(dl=800, avgdl=400),
dl/avgdl = 2.0
代入 b=0.75 的归一项 1-b+b·dl/avgdl:
- A:
1-0.75+0.75·0.2 = 0.4 - B:
1-0.75+0.75·2.0 = 1.75
分母里 k1 被乘以这个值——A 的分母变小(得分高),B 的分母变大(得分低)。短文档命中等于”密度高”,得分上调;长文档命中可能”顺带提一下”,得分下调。
案例 3:IDF 项的概率推导是什么意思
log((N-df+0.5)/(df+0.5)) 这个奇怪形式,本质是:
df / (N-df)大致是”含该词的文档比例 / 不含的比例”- 取倒数取对数 → “罕见词的几率比”
- +0.5 是为了 df=0 或 df=N 时不爆炸(拉普拉斯平滑思想)
直觉:含 the 的文档占 100%,IDF ≈ log(0.5/N) → 负数或接近 0;含某个生僻词的文档占 0.1%,IDF ≈ log(N/0.001N) ≈ 6-7 分。罕见词主导排序,停用词被概率自动压低。
案例 4:为什么 30 年没被超越
后来的尝试——neural ranker、BERT cross-encoder——在标准 TREC / BEIR 上确实能赢 BM25,但代价是:
- 训练数据需求:BM25 零训练,BERT 要监督数据
- 推理成本:BM25 一次倒排表查询,BERT 每对 query-doc 都要前向
- 冷启动:新语料 BM25 立刻可用,BERT 需要重训或迁移
结论:BM25 的”无训练 + 极低成本 + 强 baseline”三角组合,让它至今还守在第一道闸门——大量系统是先 BM25 召回 top-1000,再用 BERT rerank top-10。
踩过的坑
- 把 BM25 公式当魔法:里面每一项都是有推导来历的,看见
(k1+1)·tf / (tf+k1)不是凑的,是 fit 2-Poisson 的 S 曲线。 - 以为 IDF 项是 log(N/df):那是 1972 年 Sparck Jones 的原版。BM25 用的是带 +0.5 平滑、形式更复杂的概率版。
- k1 和 b 是论文给的:很多人以为是 Lucene 默认参数,其实 1994 原文就给了 1.2-2.0 / 0.75 这个范围。
- 2-Poisson 不是被推翻:是被”近似掉”了。理论上仍然站得住,工程上换成更简单的 fit。
- 长度归一可以关掉:b=0 等于不归一。在所有文档长度差不多的语料(短问答、商品标题),b=0 反而更稳。
适用 vs 不适用场景
适用:
- 任何字面命中型检索(产品库、代码搜索、日志、文档库)
- 作为更复杂模型的 baseline——任何检索新方法都要先打过 BM25
- 召回阶段(top-1000)配 BERT rerank(top-10)的两段式架构
不适用:
- 跨语言(不同 token 集)→ 需要翻译或多语言 dense
- 同义词替换(卡车 vs 货车)→ BM25 看不见
- 超短查询 + 超长文档不平衡的语料 → 长度归一项可能误伤
历史小故事(可跳过)
- 1972 年:Sparck Jones 提出 IDF。
- 1975 年:Harter 写 2-Poisson 模型——理论好看但算不出来。
- 1976 年:Robertson + Sparck Jones 把 PRP 形式化。
- 80 年代末:City University London 开 Okapi 项目,BM1、BM11、BM15 一路试。
- 1994 年:Robertson + Walker 发本论文,BM25 定型。
- 1995 年:TREC-3 评测里 BM25 压倒一切,成新 baseline。
- 2009 年:Lucene 把默认排序从 TF-IDF 改成 BM25;Robertson 写综述《Probabilistic Relevance Framework: BM25 and Beyond》。
- 2020s:RAG 兴起,BM25 + dense 的 hybrid 重新主流化。
学到什么
- “理论很美但算不出来”是个真问题——本论文的全部价值就是把 2-Poisson 的不可算压缩成可算
- fit 一条曲线 是工程化理论模型的常见手段,远比”重新发明一个”务实
- 30 年不被换掉的不是公式,是 trade-off——零训练 + 低成本 + 强 baseline 这三个一起难复刻
- 每个看起来奇怪的项都有来历——读 1994 这篇会发现 BM25 不是拼凑而是逐步推出来的
- 基线优先于新方法:任何号称”我比 BM25 强”的检索方案,先在同一数据集上跑过 BM25 才有说服力——这条规矩从 TREC 一路传到今天的 BEIR
延伸阅读
- 论文 PDF:Robertson & Walker SIGIR 1994
- 综述:Robertson 2009 — Probabilistic Relevance Framework: BM25 and Beyond
- 互补笔记:bm25-okapi —— BM25 工程视角(参数调优 / hybrid 检索 / 踩坑)
- 前置:salton-vsm-1975 —— 向量空间模型,BM25 之前的主流方法
关联
- bm25-okapi —— 同主题工程视角;本篇是论文推导视角,互补不重复
- salton-vsm-1975 —— Salton 1975 把检索建模成几何问题;BM25 走概率路线
- rrf-cormack-2009 —— BM25 召回 + dense 召回常用倒数排名融合