BM25 的原理是什么?

考查重点:词频饱和与长度归一化。BM25 累加查询词贡献:词频会饱和,稀有词权重更大,并用文档长度归一化避免长文天然占优

本题目录

参考答案

核心回答

BM25是一种基于词项统计的文档相关性打分方法。它把查询中各词的贡献相加,主要考虑三件事:词在当前文档出现多少次、在整个语料中是否稀有、文档相对平均长度有多长。词频贡献逐渐饱和,稀有词通常更能区分文档,长度归一化避免长文仅因更容易出现查询词而占优。

它通常结合倒排索引实现:先通过查询词找到可能命中的文档,再根据词频和语料统计打分排序,不需要先把文档编码成稠密语义向量。

公式怎样理解

一种常用形式是:

score(q,d) = Σ IDF(t) × f(t,d)(k1+1) / [f(t,d)+k1(1-b+b|d|/avgdl)]

对查询词t求和;f是它在文档中的出现次数,|d|是文档或字段长度,avgdl是对应语料的平均长度。k1控制词频饱和,b控制长度归一化强度;b=0不使用长度因素,b=1使用完整的相对长度归一化。

常见正IDF写法为 ln[1+(N-df(t)+0.5)/(df(t)+0.5)],N是统计范围内文档数,df是包含该词的文档数。不同实现存在IDF、字段统计和常数因子的差异,核对实际实现后再比较分数,不把公式当答案正确概率。

一个词的贡献如何变化

只看词频和长度部分,设k1=1.2、b=0.75、文档等于平均长度。词出现1次时该因子为1,出现3次为约1.571,出现6次为约1.833;出现次数翻倍并不会让贡献翻倍,极限趋近k1+1。

词只出现1次时,若文档长度变为平均值的2倍,因子约0.710。这里保持词频不变,长度变长会降低该词贡献;不能理解为所有长文都比短文分数低,因为实际还要看其他词及出现次数。

工程上哪些细节影响结果

中文分词、大小写、领域词典、停用词、字段选择都会改变词项和统计;错误码或产品型号被拆坏,算法再正确也可能匹配失败。标题、正文等字段可以采用不同权重,统计范围和切片粒度改变后也应重新评估。

BM25对精确术语有优势,但缺少同义词、改写或多跳语义推断能力,词项相同也不保证条件正确。可结合查询改写、语义检索和重排改善覆盖,具体组合由评测决定。

常见追问

为什么不直接用TF-IDF? BM25在词频非线性饱和和长度归一化上给出可调形式,能减少重复词堆积和文档长度差异的影响;效果仍依赖语料与任务。

k1和b取多少? 从所用实现默认值建立基线,在代表性查询上调参,不把一个库的默认值当业务最优值。

参考资料

相关面经

6 篇

小天才

AI 应用工程师(穿戴)
校招秋招一面
查看原面经 →
了解 BM25 和混合检索吗?

东方财富

AI 应用开发工程师
一面
查看原面经 →
BM25 的计算过程和主要考虑因素是什么?

长鑫存储

Agent 开发实习生
实习一面
查看原面经 →
我看你提到bm25,bm25的底层原理

虾皮

Agent 应用开发工程师
秋招一面
查看原面经 →
讲一下 BM25 的计算原理。

百度

AI 应用开发工程师
社招一面
查看原面经 →
BM25原理?(当时没答到逆文档频率这点)
展开剩余 1 篇面经

美团

后端开发工程师
暑期实习一面
查看原面经 →
BM25 的工作原理?

收录题集

1 个来源,共4 份题集

公司案例问答汇编

阿东玩 AI · AgentGuide · 1 条原题

查看题集 →

RAG与知识库

阿东玩 AI · AgentGuide · 1 条原题

查看题集 →

推荐搜索与广告

阿东玩 AI · AgentGuide · 1 条原题

查看题集 →

RAG 系统面试题

阿东玩 AI · AgentGuide · 1 条原题

查看题集 →

相关题目

4 题