首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >BM25 是什么?为什么 RAG 还离不开这位老派检索员

BM25 是什么?为什么 RAG 还离不开这位老派检索员

原创
作者头像
ETL 小当家
发布2026-04-28 17:34:11
发布2026-04-28 17:34:11
210
举报

🚀 本文收录于Github:AI-From-Zero 项目 —— 一个从零开始系统学习 AI 的知识库。如果觉得有帮助,欢迎 ⭐ Star 支持!

by @Laizhuocheng

一、简介:当大模型走进一座没有索引的图书馆

想象一下,你带着一个问题走进图书馆:“RAG 为什么经常要混合检索?”图书管理员很聪明,能理解你的意思,也能把答案讲得很顺。但如果书架没有索引、书名没有目录、资料也没有编号,他再聪明也只能在书堆里乱翻。

RAG 里的大模型也很像这位管理员。它擅长理解、归纳和表达,但它回答问题前,需要先从知识库里找到相关材料。这个“先找资料”的环节,就是检索系统在干活。

BM25 就是检索系统里一位很老练的“关键词检索员”。它不会像大模型那样理解复杂语义,却很擅长判断:哪些文档真的包含了用户关心的词,哪些词在当前问题里更关键,哪些文档只是凑巧沾边

所以,BM25 在 RAG 里不是为了取代向量检索,而是为了补上一块很重要的能力:精准匹配关键词、术语、编号、人名、错误码和专有表达

二、什么是 BM25:一套给关键词打分的检索规则

BM25 可以理解为一种经典的文本相关性排序算法。用户输入一个查询词,系统拿它和文档库里的每篇文档做对比,然后给每篇文档打一个分。分数越高,说明这篇文档越可能和问题相关。

它的核心思想并不神秘:一个词在某篇文档中出现得越合理,这篇文档越可能相关;但如果这个词在所有文档里都很常见,它的区分度就会下降

这就像你在公司群里找“部署失败 403”。“失败”这个词可能到处都有,价值不高;“403”更少见,区分度更强;如果某篇文档同时出现“部署”“403”“权限”,它就更像你要找的答案。

核心特征

词频有用,但不能无限加分:一个关键词在文档里出现多次,通常说明它更相关。但出现 3 次和出现 300 次不应该差出 100 倍,否则刷词文档会占便宜。BM25 会让词频收益逐渐变缓。

稀有词更有价值:像“模型”“系统”这类词很常见,区分能力有限;像“BM25”“embedding”“403”“LangChain”这类词更具体,往往更能定位内容。BM25 会给稀有词更高权重。

文档长度要被校准:长文档天然更容易包含更多词,如果不校准,长文档会更容易拿高分。BM25 会考虑文档长度,避免“长”本身变成优势。

三、BM25 如何工作:从问题到候选文档的筛选流水线

BM25 的工作过程可以想成一次“带权关键词投票”。查询中的每个词都会对文档投票,但不同词的票数不一样;文档越能合理覆盖关键查询词,得分越高。

1. 把问题拆成可检索的词

用户的问题会先被分词或切分成若干检索单元。例如“RAG 为什么要用 BM25”可以拆成“RAG”“为什么”“BM25”等词。真正实现时,还会考虑大小写、停用词、中文分词、同义词扩展等细节。

优点:处理过程清晰,速度快,容易调试。

缺点:它主要看字面匹配,对“语义相近但用词不同”的表达不敏感。

类比:像在书店里按书名和关键词查目录,查得快,但你得说出接近目录里的词。

2. 计算每个词的区分度

BM25 会判断一个词在整个文档库里有多稀有。越稀有的词,越能帮助系统区分文档;越常见的词,越容易只是背景噪声。

例如在 AI 知识库里,“模型”可能出现很多次;“BM25”“倒排索引”“混合检索”更具体。查询里如果出现这些具体词,系统应该更重视它们。

3. 给每篇文档累计相关性分数

每篇文档都会根据查询词逐项加分。某个查询词在文档里出现得越合理,这一项得分越高;文档过长时,分数会被适度校准,避免长文档靠“覆盖面广”抢走位置。

工作流程

  • 用户输入问题
  • 系统分词并识别关键词
  • BM25 查询倒排索引
  • 按词频、稀有度和文档长度计算分数
  • 返回 Top-K 候选文档
  • RAG 把候选文档交给大模型生成回答

4. 在 RAG 中和向量检索配合

RAG 里常见做法不是只用 BM25,也不是只用向量检索,而是把两者组合起来。BM25 擅长字面命中,向量检索擅长语义相近,二者一起用,可以减少“语义理解到了,但关键术语漏了”的问题。

类比:BM25 像按书名、编号和关键词找书;向量检索像请一个懂主题的店员帮你推荐相似书。一个负责“找准词”,一个负责“懂意思”,配合起来更稳。

BM25 在 RAG 中的检索流程图
BM25 在 RAG 中的检索流程图

四、BM25 的优缺点:精准、可靠,但不擅长猜意思

对比维度

优势

局限

关键词匹配

对专有名词、错误码、接口名、参数名很敏感

用户换一种说法时可能匹配不到

速度与成本

可基于倒排索引快速检索,资源成本低

复杂语义理解能力有限

可解释性

分数来源清楚,便于排查为什么命中某篇文档

排序质量依赖分词、停用词和字段设计

工程稳定性

成熟、易部署,适合大规模文档库

面对口语化问题时可能召回不足

RAG 配合度

适合作为混合检索的一路召回

通常需要和向量检索、重排序一起使用

BM25 的优势在于稳、快、可解释。当用户问的是具体实体、精确术语或日志片段时,它往往比纯语义检索更直接。

它的短板也很明确:它不真正理解语义。如果用户问“为什么回答引用了旧材料”,而文档里写的是“知识库召回版本过期”,BM25 可能因为关键词差异而漏掉相关材料。

五、BM25 的实际应用与发展趋势:混合检索里的关键词底座

BM25 在现代 RAG 系统里依然常见,不是因为它新,而是因为它解决的问题很基础:很多真实业务问题并不只是“语义相似”,还包含大量精确标识符。

当前主流应用场景

企业知识库问答:制度文档、接口文档、排障手册里经常有术语、编号、版本号。BM25 能帮助系统快速找到包含关键字的原始材料。

代码和日志检索:函数名、类名、错误码、配置项往往必须精确命中。向量检索可能理解大意,但 BM25 更容易把具体片段捞出来。

客服和工单系统:用户描述里常带产品名、套餐名、订单状态。BM25 可以先召回强相关候选,再交给向量模型或重排序模型精筛。

工业界实践

工程上常见的方案是混合检索:一路用 BM25,一路用向量检索,然后把两边结果合并、去重、重排序。这样既保留关键词命中的精度,也获得语义召回的覆盖面。

更严谨的系统还会加入 reranker。它像第二轮面试官,对 BM25 和向量检索找来的候选文档重新打分,判断哪些内容更适合放进大模型上下文。

未来发展趋势

BM25 自身不会变成语义模型,但它会继续作为检索系统的基础部件存在。未来更常见的形态,是 BM25、向量检索、结构化过滤、重排序和权限控制一起组成完整链路。

对 RAG 来说,检索不是“找几段文本”这么简单,而是要在成本、速度、准确性、权限和可解释性之间做平衡。BM25 的价值就在于,它提供了一条便宜、透明、可靠的关键词召回通道。

六、总结与思考

核心知识点总结

一句话概括:BM25 是一种经典关键词检索排序算法,它根据词频、词的稀有度和文档长度,判断哪些文档更可能回答用户问题。

它和向量检索的关键差异是:BM25 更像“按词找资料”,向量检索更像“按意思找资料”。在 RAG 里,二者不是对手,而是互补关系。

可以把 BM25 记成 RAG 检索层里的“老派检索员”:不擅长猜隐含意思,但对明确的词、编号、术语和错误码非常可靠。

深度思考

很多 RAG 问题看起来像生成问题,根源却在检索。如果检索阶段漏掉关键材料,大模型再会表达,也只能基于不完整上下文回答。

好的 RAG 系统并不是把所有希望都压在大模型上,而是把检索、排序、过滤和生成拆清楚。BM25 的意义就在这里:它提醒我们,智能系统里那些朴素、透明、可控的部件,常常是稳定交付的地基。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、简介:当大模型走进一座没有索引的图书馆
  • 二、什么是 BM25:一套给关键词打分的检索规则
    • 核心特征
  • 三、BM25 如何工作:从问题到候选文档的筛选流水线
    • 1. 把问题拆成可检索的词
    • 2. 计算每个词的区分度
    • 3. 给每篇文档累计相关性分数
    • 4. 在 RAG 中和向量检索配合
  • 四、BM25 的优缺点:精准、可靠,但不擅长猜意思
  • 五、BM25 的实际应用与发展趋势:混合检索里的关键词底座
    • 当前主流应用场景
    • 工业界实践
    • 未来发展趋势
  • 六、总结与思考
    • 核心知识点总结
    • 深度思考
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档