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

BM25(Best Matching 25)信息检索

文章目录

    • 一、BM25本质在做什么
    • 二、核心思想(直观理解)
      • 1️⃣ 词出现次数(Term Frequency, TF)
      • 2️⃣ 词的稀有程度(IDF)
      • 3️⃣ 文档长度归一化
    • 三、BM25公式(核心)
    • 这是标准BM25打分函数: ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/2ae37ae2b1c24eddae1b988194fb2aa3.png)
    • 四、BM25 vs TF-IDF(关键区别)
    • 五、实际应用场景
      • 🔍 搜索引擎
      • 📚 RAG(大模型检索增强)
      • 🧠 NLP系统
    • 六、一个简单例子
    • 七、总结
  • 文档长度归一化
    • 一、问题本质
    • 二、BM25的解决办法
    • 三、怎么惩罚(机制解释)
    • 四、直觉理解(重点)
    • 五、一个对比例子
    • 六、参数 b 的作用(关键)
    • 七、总结

BM25(Best Matching 25)是一种经典的信息检索(Information Retrieval, IR)算法,主要用于根据关键词从文档集合中排序最相关的结果。它是搜索引擎(如 Elasticsearch、Apache Lucene)中非常核心的一种相关性打分函数

一、BM25本质在做什么

BM25解决的是一个核心问题:

👉 给定一个查询(query),如何给每篇文档打分,并按“相关性”排序?

它属于:

  • 基于词频的概率模型
  • 是对 TF-IDF 的改进版本(更现代、更鲁棒)

二、核心思想(直观理解)

BM25认为一个文档是否相关,主要看三件事:

1️⃣ 词出现次数(Term Frequency, TF)

  • 查询词在文档中出现越多 → 越相关
  • 不是线性增长(避免刷词作弊)

👉 有“饱和机制”:出现10次 ≠ 比出现5次强一倍


2️⃣ 词的稀有程度(IDF)

  • 越罕见的词 → 信息量越大

  • 比如:

    • “的” → 没意义
    • “量子纠缠” → 很有区分度

3️⃣ 文档长度归一化

  • 长文档天然更容易包含关键词
  • BM25会惩罚过长文档

三、BM25公式(核心)

这是标准BM25打分函数:

四、BM25 vs TF-IDF(关键区别)

特性TF-IDFBM25
TF增长线性非线性(更合理)
长度处理简单归一更精细归一
实际效果一般更强(工业标准)

👉 BM25可以理解为:
“工程优化版的 TF-IDF”


五、实际应用场景

BM25广泛用于:

🔍 搜索引擎

  • Google(早期/基础层)
  • Elasticsearch 默认算法
  • Apache Solr

📚 RAG(大模型检索增强)

  • 向量检索(Embedding)之前的第一步过滤
  • Hybrid Search(BM25 + 向量)

🧠 NLP系统

  • 文档召回(retrieval stage)
  • QA系统候选生成

六、一个简单例子

查询:"machine learning"

文档A:

machine learning is powerful

文档B:

machine learning machine learning machine learning

BM25会:

  • 给B更高分(词频高)
  • 但不会是3倍(因为TF饱和

七、总结

BM25 = 一种更智能的关键词匹配打分算法,用于排序最相关文档,是现代搜索系统的基础组件。

文档长度归一化

这段内容讲的是BM25里的“文档长度归一化”(length normalization)机制,核心是在解决一个非常现实的问题:


一、问题本质

长文档天然更容易“命中关键词”,但不一定更相关

举个直观例子:

  • 文档A(短):

    machine learning basics

  • 文档B(长):

    ……(一万字)…… machine learning ……(很多无关内容)

👉 文档B更容易包含“machine learning”,
但它不一定更相关,只是更长而已


二、BM25的解决办法

BM25会做一件事:

对长文档进行“惩罚”

也就是你图里那句:

  • “长文档天然更容易包含关键词”
  • “BM25会惩罚过长文档”

三、怎么惩罚(机制解释)

BM25在公式里引入了这一项:

[
\frac{|D|}{avgdl}
]

含义是:

  • ( |D| ):当前文档长度
  • ( avgdl ):所有文档的平均长度

👉 如果:

  • 文档比平均长 → 分母变大 →得分下降
  • 文档比平均短 → 分母变小 →得分相对更高

四、直觉理解(重点)

你可以这样理解:

BM25在问:
“这个词出现,是因为文档真的相关,还是因为文档太长?”


五、一个对比例子

查询:"AI"

文档长度包含次数BM25判断
A100字2次✅ 相关
B5000字3次⚠️ 不一定更相关

👉 虽然B出现次数更多,但因为太长,会被压分


六、参数 b 的作用(关键)

BM25里有个参数:

  • ( b \in [0,1] )

作用是控制“惩罚强度”:

  • ( b = 0 ):❌ 不考虑长度(不惩罚)
  • ( b = 1 ):✅ 完全按长度惩罚
  • 常用值:0.75

👉 实际含义:

“长度影响占75%权重”


七、总结

文档长度归一化 = 防止长文档因为“啰嗦”而获得不公平的高分

http://www.jsqmd.com/news/615078/

相关文章:

  • G-Helper:告别臃肿控制中心,5个步骤让华硕笔记本性能翻倍
  • Packr 跨平台打包最佳实践:Windows、Linux、macOS 全攻略
  • 使用Alpine配置WSL ssh门户匚
  • Phi-4-mini-reasoning vLLM量化部署:AWQ/GGUF格式转换与精度损失评估
  • 打字不如说话,说话不如截图——AI 代码助手的多模态输入实践嚎
  • 超详细图解:HTTPS 中的 SSL/TLS 完整握手过程(面试必背)
  • 下拉框赋值没有点value,造成下拉框的item变成一个数组并且多出额外的值
  • Phi-3-mini-4k-instruct-gguf快速上手:VS Code远程开发+Jupyter Notebook联调
  • 万字拆解 LLM 运行机制:Token、上下文与采样参数壤
  • 算法优化中的多线程数据一致性问题的技术9
  • 仿生鱼应用与商业前景解析
  • 袁永福 电子病历,医疗信息化际
  • 破解音乐格式枷锁:ncmdumpGUI全方位解决方案指南
  • GLM-. 全面支持与 Gemini CLI 集成:HagiCode 的多模型进化之路衫
  • 如何永久保存微信聊天记录:WeChatMsg本地数据备份完整指南
  • Servlet-JAVA【笔记】
  • Redis持久化:从AOF到RDB,如何实现数据不丢失?吠
  • 手把手教你学Simulink——基于Simulink的坡道起步防溜坡电机转矩控制
  • 深度解析DHCP中继代理:作用、工作原理与标准配置方法
  • 算法性能测试的统计建模与误差估计的技术9
  • 电子电路中的“心脏”:电源铝
  • IC660ELD100A输入输出模块
  • Phi-3-mini-4k-instruct-gguf惊艳效果:用同一提示词生成不同风格(正式/活泼/简洁)对比展示
  • 海洋危机催生高薪生态新产业
  • 2025届学术党必备的十大AI科研平台横评
  • Docker 容器中运行 AI CLI 工具:用户隔离与持久化卷实战指南暗
  • MogFace人脸检测模型-WebUI多场景:新能源汽车座舱DMS驾驶员状态监测
  • 智能自动点击革新:解放双手的高效Windows自动化解决方案
  • 打卡信奥刷题(3077)用C++实现信奥题 P7023 [NWRRC 2017] Equal Numbers
  • Kazumi开源番剧播放器功能使用指南