当前位置: 首页 > news >正文

深入理解 BM25:原理篇

  1. BM25 解决的到底是什么问题?

全文检索首先需要回答两个不同的问题:

  1. 哪些文档匹配查询词?
  2. 匹配的文档应该如何排序?

倒排索引解决第一个问题。对于查询词database,搜索引擎可以直接找到包含该词的文档列表。

BM25 主要解决第二个问题:同样包含database的文档,哪一篇更相关?

直觉上,一个合理的词项相关性模型至少应考虑三件事:

  • 查询词在当前文档中出现得越多,文档通常越相关;
  • 一个词在整个语料库中越少见,它越有区分度;
  • 同样出现三次,短文档中的三次通常比超长文档中的三次更重要。

BM25 正是把这三种信号组合起来:

  • TF(Term Frequency):词频信号,表示查询词在当前文档中出现了多少次。
  • IDF(Inverse Document Frequency):稀有度信号,表示一个查询词在整个语料库中有多稀有。
  • 字段长度归一化:长文档天然更容易包含查询词,不能仅因为篇幅长,就获得更高分数。

不过 BM25 并不是语义模型。它不知道“数据库”和“DBMS”语义相近,也不理解句子的真实含义。它做的是一种非常高效、可解释、面向词项匹配的相关性估计。

  1. BM25 公式拆解

对于查询 中的每个词项 ,文档 的 BM25 得分通常写成:

其中:

符号含义
查询词 在文档 中的出现次数,即 term frequency
当前文档该字段的 token 数
avgdl所有文档该字段的平均 token 数
文档总数
包含词项 的文档数,即 document frequency
控制词频饱和速度
控制字段长度归一化强度

Tantivy 0.26.1 中固定使用:

const K1: Score = 1.2;const B: Score = 0.75;

这也是常见的默认参数组合。

2.1 IDF:越少见的词,区分度越高

Tantivy 使用的 IDF 为:

当一个词几乎出现在所有文档中时,它没有多少区分能力,IDF 较低。

当一个词只出现在少量文档中时,它更可能代表用户真正关心的主题,IDF 较高。

例如,在技术文档库中:

  • theisdata可能很常见;
  • MVCCDiskANNfieldnorm可能更稀有。

因此,后者通常能给文档带来更高的相关性增量。

公式中的+0.5和外层1+是平滑处理,使 IDF 在极端数据分布下仍保持稳定且为正。

2.2 TF 不是线性增长,而是逐渐饱和

假设当前字段长度正好等于平均长度,即:

BM25 的词频部分可以简化为:

使用 Tantivy 的 :

词频TF 部分
11.000
21.375
41.692
101.964
趋近无穷2.200

第一次命中很重要;从一次增加到两次仍然有明显收益;但从一百次增加到一百零一次,几乎不会改变排序。

这就是“词频饱和”。

如果词频完全线性增长,一篇反复堆砌关键词的文档会轻易压过正常文档。BM25 用 抑制了这种行为。

2.3 字段长度归一化

BM25 的长度归一化项为:

当 时,完全不考虑字段长度。

当 时,完整地按照字段长度相对平均长度进行归一化。

Tantivy 使用 ,意味着长度是重要因素,但不会完全主导评分。

假设查询词在文档中都出现三次,平均字段长度为 100:

当前字段长度不含 IDF 的 TF 得分
501.760
1001.571
2001.294

同样出现三次,短字段中的命中更集中,因此得分更高。

这里有一个容易被忽略的关键点:

BM25 归一化的是“字段经过 analyzer 后得到的 token 数”,不是原始字符串长度,也不是整篇文档所有字段长度的总和。

分词器、停用词过滤、N-gram 参数都会改变 token 数,因此也会间接改变 BM25 分数。

  1. 落地 BM25 需要哪些数据?

把公式翻译成存储引擎语言,需要四类数据:

范围数据Tantivy 中的来源
当前文档、当前词项词项出现次数 ,即 term frequencypostings 中记录的 term frequency
当前文档、当前字段字段长度 ,即该字段分词后的 token 数fieldnorm /FieldNormReader
全局字段统计该字段的总 token 数,以及索引文档总数各 segment 的倒排索引元数据
当前查询词的全局统计包含该词项的文档数 ,即 document frequencyterm dictionary 中TermInfo记录的 doc frequency

BM25 看起来只是一个公式,但它要求索引在写入阶段提前保存:

  • 每个 term 在每个文档中的频率;
  • 每个文档字段的长度;
  • 每个 term 的文档频率;
  • 每个字段的全局 token 统计。

如果索引只保存“这个 term 出现在哪些文档中”,而不保存频率和字段长度,那么就无法完整计算 BM25。

学AI大模型的正确顺序,千万不要搞错了

🤔2026年AI风口已来!各行各业的AI渗透肉眼可见,超多公司要么转型做AI相关产品,要么高薪挖AI技术人才,机遇直接摆在眼前!

有往AI方向发展,或者本身有后端编程基础的朋友,直接冲AI大模型应用开发转岗超合适!

就算暂时不打算转岗,了解大模型、RAG、Prompt、Agent这些热门概念,能上手做简单项目,也绝对是求职加分王🔋

📝给大家整理了超全最新的AI大模型应用开发学习清单和资料,手把手帮你快速入门!👇👇

学习路线:

✅大模型基础认知—大模型核心原理、发展历程、主流模型(GPT、文心一言等)特点解析
✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑
✅开发基础能力—Python进阶、API接口调用、大模型开发框架(LangChain等)实操
✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用
✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代
✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经

以上6大模块,看似清晰好上手,实则每个部分都有扎实的核心内容需要吃透!

我把大模型的学习全流程已经整理📚好了!抓住AI时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

http://www.cnnetsun.cn/news/4021068.html

相关文章:

  • 盘点|RSS 2026首位国人「青年成就奖」得主,李弘扬团队2026年最新研究成果
  • 建设网站好学吗 揭秘零基础小白从入门到精通的真实学习路径与心路历程
  • Linux大容量硬盘分区挂载实战:从GPT分区到fstab配置
  • 济南想建设网站怎么避坑选对靠谱团队?揭秘企业数字化转型的核心秘籍
  • 免费文档下载工具:一个脚本搞定 30+ 平台
  • 2024顺德外贸网站建设指南:如何打造高转化率的跨境出海第一阵地
  • 珠海网站建设电话怎么打才不踩坑?揭秘本地专业团队的真诚报价与避坑指南
  • 2024年最新指南:如何利用山东省级建设主管部门网站高效办理建筑资质与企业业务
  • 怀远县建设局门户网站如何成为你了解家乡变化与政策红利的最佳入口
  • 中小型企业到底需不需要搭建官网公司有必要建设网站吗深度解析
  • 深入了解中国品牌建设促进会网站:探索品牌强国战略下的价值枢纽与未来展望
  • 新昌县建设局网站查询办事指南与城市规划最新政策解读全知道
  • 从零到一搭建属于自己的数字名片:一份关于网站建设与管理课程报告的深度复盘与实战心得
  • 什么是PCB?-多层板仿真‑实测对标与选型判断清单
  • 微星主板安装Ubuntu 20.04全攻略:BIOS设置、驱动安装与疑难排解
  • 做阆中网站建设01hl要避开的坑和选对合作伙伴的真相揭秘
  • 网页制作与网站建设技术大全 pdf:资深开发者眼中的实战避坑指南与核心技能拆解
  • 顺德企业网站建设避坑指南:如何打造真正能赚钱的本地官网?
  • 非寻服饰网站建设规划书从0到1打造高转化品牌官网全案解析
  • 打造沉浸式体验:专业汽车城网站建设方案助力数字化转型与品牌升级
  • 襄阳网站建设feeyr实战指南:从入门到精通,揭秘本地企业如何通过优质设计实现品牌破圈与流量变现
  • Maps SDK for Unity核心功能解析:从地形流送到混合现实优化
  • 选择靠谱的洪山网站建设公司还是被坑?洪山网站建设公司深度解析与避坑指南
  • 南通网站建设ntwsd实战指南:从小白到专家的深度蜕变之路
  • 网站建设必会的软件:零基础入门与进阶核心工具全指南
  • Containerd容器运行时:从核心架构到Kubernetes生产实践
  • 南京网站建设索q.479185700打造专属数字化品牌形象全方位解析与实战指南
  • 电子商务网站建设与市场分析:如何在激烈的红海中突围重生并实现可持续增长
  • Matplotlib箱线图深度定制指南:从配色到布局的完整实践
  • 2026宠物眼科研究新风口:犬视神经星形胶质细胞如何成为青光眼药物研发的关键桥梁