首页/AI/RAG 与向量库速查/BM25 排序算法
Embedding 与检索50 条

BM25 排序算法

BM25 基于词频与逆文档频率打分,含词频饱和(k1)与文档长度归一(b)两个参数;是关键词检索的常用算法,也是混合检索中的一路召回。

RAG 与向量库速查AI更新于 2026-10-12

BM25 单查询词打分公式

BM25 单查询词打分公式
score(q_i, d) =
  IDF(q_i) · [ f(q_i,d)·(k1+1) ] / [ f(q_i,d) + k1·(1 - b + b·|d|/avgdl) ]

Lucene 系默认:k1 = 1.2,b = 0.75
k1 增大让词频收益更持久;b=0 关闭长度归一,b=1 完全归一。调参前先固定分词器。

易错点

  • 中文不分词直接按字切,BM25 与向量检索效果都会失真
  • 忽略长度归一对短文档的偏置,长文档总结类需求排序吃亏

数据来源与参考

  • Robertson & Zaragoza, The Probabilistic Relevance Framework: BM25 and Beyond
  • Elasticsearch 官方文档(Practical BM25)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌