跳转到内容

Maron-Kuhns 1960 — 检索不是匹配,是猜"对你有用的概率"

是什么

这篇 1960 年的论文做了一件后来影响所有搜索引擎的事——把”找文档”重新定义成”按概率排序”

在他们之前,检索是这样:你输关键词 machine learning,系统去文档库里找贴了这两个标签的文档,找到就返回,找不到就空。这是布尔检索(boolean retrieval),结果非黑即白。

Maron 和 Kuhns 说:等一下,“这篇文档对你有没有用”本质上是个概率——P(对用户有用 | 文档内容, 用户问题)。系统该做的不是机械匹配,而是把所有文档按这个概率从高到低排个序返回。

日常类比:旧办法像图书馆按书脊上的标签分类——书脊贴了”机器学习”才进框。Maron-Kuhns 的办法像有经验的图书管理员——你说”我想入门 ML”,他不查标签,他凭经验猜哪本书帮到你的可能性最大,按可能性从高到低推给你。

这个看起来”哲学化”的转向,是过去 60 年所有 IR 研究——BM25 / 语言模型 IR / 神经检索——共同的祖宗。

为什么重要

不理解这篇论文,下面这些事都没法解释:

  • 为什么 Google 搜索结果是”排序的”而不是”匹配的”——这个排序范式 1960 年就立好了
  • 为什么 BM25 公式里都是概率(P(term | relevant)),不是简单的关键词计数
  • 为什么 ChatGPT 的检索增强(RAG)也用 dense retrieval 打分排序,而不是关键词过滤
  • 为什么 1960 年的论文 60 年后还在每篇 IR 论文的引言里被引

核心要点

论文做的三件事,每一件都开了一条河:

  1. 把相关性写成概率:以前的检索假设”文档要么相关要么无关”。Maron-Kuhns 说不对——相关是个程度,可以用概率 P(rel | q, d) 表达。这是从二值逻辑到概率论的范式跃迁。

  2. 概率索引(probabilistic indexing):以前一个词要么”是文档关键词”要么不是。他们改成给每个 (term, document) 配一个权重——这个词代表这篇文档主题的概率。这是后来所有 term weighting(TF-IDF / BM25 / embedding)的源头。

  3. 按概率排序返回(ranked retrieval):检索结果不是”满足条件的集合”,而是”按 P(rel | q, d) 降序的列表”。这条原则后来被 Robertson 1977 正式定理化为 概率排序原理(Probability Ranking Principle, PRP)。

三件事合起来:检索 = 估计概率 + 按概率排序。这就是今天所有搜索引擎的骨架。

论文里的那个公式(看意思就好,不必背)

P(rel | q, d) ∝ P(q | rel, d) · P(rel | d)

读法:给定查询 q 和文档 d,文档相关的概率,正比于”如果文档相关,用户会发出这个查询的概率”乘以”文档相关的先验概率”。这是贝叶斯在 IR 里的第一次正式登场

关键点:估这个概率需要假设——他们假设 term 之间独立、用户的查询行为可建模。这些假设后来被一一挑战、改良,但范式没变。

实践案例

案例 1:今天的 Lucene / Elasticsearch 怎么继承这个思想

你在 Elasticsearch 里搜 kafka tutorial,默认排序用的是 BM25——它本质就是估计 P(rel | "kafka tutorial", document_i),然后降序排。

GET /docs/_search
{ "query": { "match": { "content": "kafka tutorial" } } }

返回的 _score 字段就是这个概率(的某种代理)。Maron-Kuhns 60 年前定义的”按概率排序”,今天每天有几十亿次调用在执行。

案例 2:BM25 公式里能看到 1960 年的影子

BM25 给一个文档打分,关键项是:

IDF(qi) = log((N - df + 0.5) / (df + 0.5))

这里 N 是总文档数,df 是含该词的文档数。这个 log 不是凑出来的——它是从 P(rel | q, d) / P(¬rel | q, d) 取对数推出来的概率比值。1960 年定的”用概率”,1976 年 Robertson 才把这个概率展开成可算公式,1994 年 BM25 才用它打榜 TREC。30 多年的链条。

案例 3:RAG 也是 PRP 的徒孙

LLM 的 RAG(检索增强生成)流程:

  1. 把用户问题和所有文档都过 BERT,得到向量
  2. 算余弦相似度 cos(q_vec, d_vec)
  3. 取 top-K 喂给 LLM

第 2 步的余弦相似度,本质就是在估 P(rel | q, d)——只是用神经网络估而不是概率公式估。模型变了,范式没变

案例 4:为什么布尔检索还活着但只在边角料

今天 SQL 的 WHERE name LIKE '%kafka%'、grep、正则——本质都是 1960 年之前的布尔检索。它们没死是因为有些场景就需要精确匹配(找特定文件、合规审计、日志告警)。

但凡是”用户问一个模糊问题、系统给若干候选”的场景,几乎全部走概率排序。这条分水岭就是 Maron-Kuhns 1960 划下的。

踩过的坑

  1. 相关性是主观的,但模型当成可估计的概率:A 觉得相关 B 觉得不相关怎么办?论文当时没解——后续工作靠用户点击日志、众包标注、A/B 测试才补上。

  2. term 独立性假设太强:Maron-Kuhns(以及后续 BIM / BM25)都假设词之间独立——P(t1, t2 | rel) = P(t1|rel) · P(t2|rel)。这明显不真(“machine learning” 两词高度相关),但能简化估计。神经检索才打破这个假设。

  3. 概率怎么估:论文给了框架但没说怎么从语料估 P(term | relevant)——因为 1960 年根本没有大规模相关性标注。这个洞要等 1976 年 Robertson-Sparck Jones 用二值近似,才有可操作版本。问题本质是:理论说要估什么,没说怎么估

  4. 被引的频率远大于被读的频率:很多人引这篇当祖师爷,但论文本身用 1960 年的术语写,有些表述今天看起来很费劲。读 Robertson-Zaragoza 2009 综述比啃原文更高效。

适用 vs 不适用场景

适用

  • 任何”把候选项按相关性排序”的系统:搜索、推荐、问答检索、RAG
  • 想理解 BM25 / 语言模型 IR 为什么长那样——必须先懂”概率排序”这个范式
  • 设计排序系统时——决定打分函数前先问”我估的是哪个概率”

不适用

  • 严格的精确匹配场景(SQL / 正则)——不是排序问题
  • 完全用规则的检索(早期图书馆系统)——概率框架反而过度复杂
  • 不需要排序、只需要 yes/no 的场景(垃圾邮件过滤的硬阈值版本)
  • 候选数极少(< 10 个)的场景——直接展示比排序成本低

历史小故事(可跳过)

  • 1960 年的硬件:IBM 701 刚商用几年,整个内存几 KB;连关键词检索都属于”高级技术”
  • 作者背景:Maron 在 RAND 公司,研究核武年代的导弹文档检索;Kuhns 是数学家。两人合作把”检索”抬到概率论的高度
  • 同期对手:Luhn 1957 提出 TF(term frequency)权重,但还是”匹配范式”;Salton 1965 才造出向量空间模型,是另一条线
  • 领先了 30 年:1960 年提出”按概率排序”,但工业界(Google / Lucene)真用上是 1990s。理论早期得不像话
  • 冷遇期:1960 - 1976 这 16 年几乎没人接力——不是论文不好,是没数据没算力。Robertson-Sparck Jones 1976 重新点燃这条线,1990s TREC 评测年代才真正进入主流

学到什么

  1. 范式比公式重要:BM25 公式细节会过时,但”按相关性概率排序”这个范式 60 年没变
  2. 从二值到概率的跃迁:把硬判断(rel / ¬rel)改成软概率,几乎所有 ML 问题都受益于这一招
  3. 理论 → 算法 → 工程的时间尺度可以是 30 年:1960 提框架,1976 给算法,1994 调出 BM25,2010s 工业普及
  4. 看祖师爷论文不一定要读原文:思想已经被几十篇综述吸收过,读综述(Robertson-Zaragoza 2009)效率更高
  5. 原始论文常常”对但没用”:1960 年提出框架但缺可操作算法——这是好理论的常态。后续 30 年的工作不是推翻它,而是把它变成能跑的东西

延伸阅读

关联

  • okapi-bm25-1994 —— BM25 的概率框架直接继承自 Maron-Kuhns
  • salton-vector-space —— 同期对手范式(向量空间),后来与概率范式融合
  • shannon-1948 —— 信息论给”用概率描述消息”提供了数学基础
  • ponte-croft-lm-ir —— 1998 把”概率”换成”语言模型”,是这条线的 1990s 后裔
  • luhn-1957 —— 同期对手范式(词频统计),与 Maron-Kuhns 的概率范式相互补充
  • attention —— 注意力机制本质是给 query 和 key 打”相关性概率”,思想同源

反向链接