深入理解 BM25:原理篇
BM25 解决的到底是什么问题全文检索首先需要回答两个不同的问题哪些文档匹配查询词匹配的文档应该如何排序倒排索引解决第一个问题。对于查询词database搜索引擎可以直接找到包含该词的文档列表。BM25 主要解决第二个问题同样包含database的文档哪一篇更相关直觉上一个合理的词项相关性模型至少应考虑三件事查询词在当前文档中出现得越多文档通常越相关一个词在整个语料库中越少见它越有区分度同样出现三次短文档中的三次通常比超长文档中的三次更重要。BM25 正是把这三种信号组合起来TFTerm Frequency词频信号表示查询词在当前文档中出现了多少次。IDFInverse Document Frequency稀有度信号表示一个查询词在整个语料库中有多稀有。字段长度归一化长文档天然更容易包含查询词不能仅因为篇幅长就获得更高分数。不过 BM25 并不是语义模型。它不知道“数据库”和“DBMS”语义相近也不理解句子的真实含义。它做的是一种非常高效、可解释、面向词项匹配的相关性估计。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 较高。例如在技术文档库中the、is、data可能很常见MVCC、DiskANN、fieldnorm可能更稀有。因此后者通常能给文档带来更高的相关性增量。公式中的0.5和外层1是平滑处理使 IDF 在极端数据分布下仍保持稳定且为正。2.2 TF 不是线性增长而是逐渐饱和假设当前字段长度正好等于平均长度即BM25 的词频部分可以简化为使用 Tantivy 的 词频TF 部分11.00021.37541.692101.964趋近无穷2.200第一次命中很重要从一次增加到两次仍然有明显收益但从一百次增加到一百零一次几乎不会改变排序。这就是“词频饱和”。如果词频完全线性增长一篇反复堆砌关键词的文档会轻易压过正常文档。BM25 用 抑制了这种行为。2.3 字段长度归一化BM25 的长度归一化项为当 时完全不考虑字段长度。当 时完整地按照字段长度相对平均长度进行归一化。Tantivy 使用 意味着长度是重要因素但不会完全主导评分。假设查询词在文档中都出现三次平均字段长度为 100当前字段长度不含 IDF 的 TF 得分501.7601001.5712001.294同样出现三次短字段中的命中更集中因此得分更高。这里有一个容易被忽略的关键点BM25 归一化的是“字段经过 analyzer 后得到的 token 数”不是原始字符串长度也不是整篇文档所有字段长度的总和。分词器、停用词过滤、N-gram 参数都会改变 token 数因此也会间接改变 BM25 分数。落地 BM25 需要哪些数据把公式翻译成存储引擎语言需要四类数据范围数据Tantivy 中的来源当前文档、当前词项词项出现次数 即 term frequencypostings 中记录的 term frequency当前文档、当前字段字段长度 即该字段分词后的 token 数fieldnorm /FieldNormReader全局字段统计该字段的总 token 数以及索引文档总数各 segment 的倒排索引元数据当前查询词的全局统计包含该词项的文档数 即 document frequencyterm dictionary 中TermInfo记录的 doc frequencyBM25 看起来只是一个公式但它要求索引在写入阶段提前保存每个 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%免费】

相关新闻

微信逆向编程必备:gh_mirrors/we/wechatPc中的Hook技术与内存分析

微信逆向编程必备:gh_mirrors/we/wechatPc中的Hook技术与内存分析

微信逆向编程必备:gh_mirrors/we/wechatPc中的Hook技术与内存分析 【免费下载链接】wechatPc PC微信hook源码,PC微信注入,逆向编程,可以制作微信机器人玩玩,仅供学习,请不要用于商业、违法途径,…

2026/9/25 17:33:56 阅读更多 →
免费文档下载工具:一个脚本搞定 30+ 平台

免费文档下载工具:一个脚本搞定 30+ 平台

免费文档下载工具:一个脚本搞定 30 平台 【免费下载链接】kill-doc 看到经常有小伙伴们需要下载一些免费文档,但是相关网站浏览体验不好各种广告,各种登录验证,需要很多步骤才能下载文档,该脚本就是为了解决您的烦恼而…

2026/9/23 22:14:01 阅读更多 →
模拟位置总被检测?3步让应用彻底查不到

模拟位置总被检测?3步让应用彻底查不到

模拟位置总被检测?3步让应用彻底查不到 【免费下载链接】HideMockLocation Xposed module to hide the mock location setting. 项目地址: https://gitcode.com/gh_mirrors/hi/HideMockLocation 打开某款打车软件准备定位打卡,结果提示"检测…

2026/9/23 4:24:31 阅读更多 →

最新新闻

翻译API申请全攻略:百度、阿里、腾讯、有道四平台接入指南

翻译API申请全攻略:百度、阿里、腾讯、有道四平台接入指南

我最早接触这玩意儿是因为给客户做多语言官网,PM扔过来一个需求:“多国语言切换,日、英、俄,上个月就要上线”,当时脑袋里第一反应就是找翻译API。市面上一圈看下来,国内能稳定长期用的基本就是百度、阿里、…

2026/9/25 17:33:45 阅读更多 →
Atlas 300V 24G推理加速卡实战:YOLO部署全流程解析

Atlas 300V 24G推理加速卡实战:YOLO部署全流程解析

“Atlas 300V 24G是不是运算加速卡?”这个问题我最近被问得特别多,尤其是大家在选型服务器推理卡时,一看到“Atlas”“24G”这种词,总是会本能地拿它和GPU训练卡、游戏显卡做对比。先给结论:它是加速卡,但更…

2026/9/25 17:33:45 阅读更多 →
Atlas 300V 24G部署YOLO实战:从PyTorch到昇腾推理卡全流程

Atlas 300V 24G部署YOLO实战:从PyTorch到昇腾推理卡全流程

1. Atlas 300V 24G:先把它是什么弄清楚这段时间后台收到不少关于“atlas部署yolo”“atlas 300v 24g 是运算加速卡吗”这类问题。说实话,Atlas这个名字在AI硬件圈里已经不算新鲜,但每次总有朋友把它跟开发板、工控机、甚至普通显卡混为一谈。…

2026/9/25 17:33:45 阅读更多 →
Windows网络发现开关失灵?从服务与防火墙规则定位到彻底修复

Windows网络发现开关失灵?从服务与防火墙规则定位到彻底修复

做IT运维和系统支持这些年,Windows的“网络发现”(Network Discovery)大概是我见过“设置开关失灵”重灾区里的前三名。明明是同一个局域网,有时候需要在“网络”里看到其他电脑,开关却是灰的;有时候开关打…

2026/9/25 17:33:45 阅读更多 →
Atlas 300V 24G部署YOLOv5实战:推理卡选型、模型转换与调优

Atlas 300V 24G部署YOLOv5实战:推理卡选型、模型转换与调优

最近后台好几个朋友都在问我同一个事:Atlas 300V 24G到底能不能跑YOLO,它是不是一块“运算加速卡”。这个问题问得很典型,因为现在目标检测的落地需求太旺盛了,大家手里握着YOLOv5、YOLOv8的模型,想找一张便宜、显存又…

2026/9/25 17:33:45 阅读更多 →
[智能体-634]:OpenClaw 通过 ClawHub 新增扩展技能完整教程:TaoToken 统一 Key 配置与 CLI 验证

[智能体-634]:OpenClaw 通过 ClawHub 新增扩展技能完整教程:TaoToken 统一 Key 配置与 CLI 验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/25 17:32:44 阅读更多 →

日新闻

AI元人文:从工具使用到思维重构的深度探索

AI元人文:从工具使用到思维重构的深度探索

最近半年我一直在琢磨一件事:AI元人文到底是什么?说白了,就是“用元视角重新审视人与AI的关系”,也在“探索AI如何反向逼着我们发现自己的思考边界”。标题里的“元探索”,在我看就是一层套一层的追问——当你用AI解决…

2026/9/25 0:00:41 阅读更多 →
Python+CNN车牌识别实战:从数据预处理到模型训练与部署

Python+CNN车牌识别实战:从数据预处理到模型训练与部署

简介:基于Python与卷积神经网络的车牌识别项目,面向计算机视觉初学者及智能交通开发者,目标是帮助用户掌握从数据预处理、模型构建到实际部署的完整流程。压缩包共25个文件,包含jpg/png图像样本、py训练脚本、md说明文档、dat数据…

2026/9/25 0:00:41 阅读更多 →
Vim基础操作全攻略:保存退出、模式切换与高频命令实战

Vim基础操作全攻略:保存退出、模式切换与高频命令实战

1. 项目概述1.1 核心需求解析今天聊聊Vim。写这个题目的原因是:几乎每个后端开发者、运维人员、数据工程师某天都会遇到一个场景——深夜加班,服务器登录界面只有黑底白字,编辑器只有vi/vim,你必须在五分钟内完成一次配置修改并保…

2026/9/25 0:00:41 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/24 14:34:13 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/25 11:15:26 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/24 14:33:56 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/24 12:50:34 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/24 14:33:48 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/24 12:49:17 阅读更多 →