BM25(Best Matching 25)是一种经典的检索排序算法,用于计算「查询文本」与「文档」的相关性得分,广泛应用于搜索引擎、问答系统等场景。
- Okapi BM25 是 BM25 的最常用变体(由伦敦城市大学的 Okapi 项目提出),核心基于 TF-IDF 思想,但优化了文档长度归一化等问题,效果更优。
- 核心公式(简化版):
tf(q_i, D):词 qi 在文档 D 中的词频;
IDF(q_i):词 qi 的逆文档频率(衡量词的稀有度);
k1/b:可调参数(k1 控制词频饱和,b 控制文档长度影响,默认 k1=1.5,b=0.75);
|D|:文档 D 的长度,avgdl:语料库平均文档长度。
- 对语料库预计算统计信息(文档长度、词频、IDF 等);
- 输入查询文本,快速计算查询与每个文档的相关性得分;
- 支持按得分排序,返回 Top-N 最相关文档。
首先安装依赖: