搜索引擎中广泛使用的文档排序算法——BM25(Best Matching 25)

在搜索场景中,BM25能计算每个文档与查询的匹配度,从中找出最相关的文档,并按相关性高低排序展示。

要理解BM25,需要掌握以下几个关键概念:

  1. 词频(Term Frequency, TF):某关键词在文档中出现的次数。关键词出现越频繁,通常表示文档与查询的相关性越高。

  2. 逆文档频率(Inverse Document Frequency, IDF):衡量某关键词在整个文档集合中的稀有程度。稀有关键词的区分度更高,对评分贡献大,其计算公式为:【图1】

  3. 文档长度归一化(Document Length Normalization):调整文档长度对相关性评分的影响。避免长文档因为包含更多关键词而获得不公平的高分。

  4. 参数 k1 和 b

  • k1:控制词频对评分的影响程度。值越高,词频权重越大。

  • b:控制文档长度归一化的强度。b=0时忽略文档长度,b=1时完全考虑。

BM25结合上述概念,通过以下步骤计算每篇文档的相关性得分------

计算IDF,然后计算每个关键词的得分【图2】,再将各关键词的得分相加,得到文档的总相关性得分。

举个栗子,假设有以下三个文档,查询关键词"猫 养护":

  • 文档1:包含"猫"和"养护"各2次,总长度100个词。

  • 文档2:包含"猫"3次,总长度150个词。

  • 文档3:包含"养护"1次,总长度80个词。

计算两个关键词的IDF【图3】后,再计算各文档的BM25得分,最终得出:

  • 文档1:同时包含"猫"和"养护",得分较高。

  • 文档2:仅包含"猫",但词频较高。

  • 文档3:仅包含"养护",且词频低,得分最低。

详细内容:

Understanding the BM25 full text search algorithm | Evan Schwartz

相关推荐
Elastic 中国社区官方博客5 小时前
使用 Elasticsearch 和神经模型为复杂语言提供更好的文本分析
大数据·人工智能·elasticsearch·搜索引擎·ai·全文检索
m0_488913015 小时前
新手小白也能学会的Dify本地部署教程(超详细)
人工智能·搜索引擎·云原生·eureka·开源·大模型·产品经理
Java后端的Ai之路6 小时前
【Solr搜索引擎】-Solr知识点内容很详细
搜索引擎·solr·lucene
LaughingZhu20 小时前
Product Hunt 每日热榜 | 2026-02-18
大数据·数据库·人工智能·经验分享·搜索引擎
分享牛21 小时前
大模型结合BPMN语言,下一代BPM产品的雏形
人工智能·搜索引擎·llm·bpmn
生瓜硬劈..1 天前
从写入到可查:Elasticsearch “近实时”查询原理详解
大数据·elasticsearch·搜索引擎
Elastic 中国社区官方博客1 天前
Elasticsearch 9.3 增加 bfloat16 向量 支持
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
Elastic 中国社区官方博客1 天前
Elasticsearch 用于词形还原的开源 Hebrew 分析器
大数据·elasticsearch·搜索引擎·ai·开源·全文检索·中文分词
LaughingZhu2 天前
Product Hunt 每日热榜 | 2026-02-17
大数据·数据库·人工智能·经验分享·搜索引擎
秃了也弱了。2 天前
elasticSearch之API:基础命令及文档基本操作
大数据·elasticsearch·搜索引擎