跳到主内容
快讯直播
AI智模界
AI 词典

BM25:向量检索时代还在做召回保底的老算法

一句话定义:BM25(Best Matching 25)是一种给"查询和文档有多相关"打分的经典排序算法——它算的不是语义,而是词。你把几个关键词敲进搜索框,背后第一时间给你排出结果的,很可能就是它。名字里的 25 只是研究过程中版本编号的沿用,不必深究。

三个直觉,撑起一个公式

想象一位图书管理员,你说"猫粮怎么存",他要在几万本书里挑出最该给你看的那几本。他的判断依据只有三条。

第一,词频(TF, Term Frequency):你问的词在书里出现得越多,这本书越可能相关。但"出现 100 次"不该比"出现 10 次重要 10 倍——第一次出现是强信号,第五十次基本是废话。所以 BM25 用一条饱和曲线把词频压平:从 1 次到 2 次很关键,从 50 次到 51 次几乎没意义。

第二,逆文档频率(IDF, Inverse Document Frequency):越稀有的词越值钱。"的"出现在每本书里,命中了也不能说明什么;"猫粮"只在一小撮书里出现,命中它基本就找对了方向。

第三,长度归一化:一万字的长文天然更容易"碰巧"包含某个词,一篇 200 字的短帖出现一次"猫粮",说服力大得多。BM25 按文档长度和全库平均长度的比值做惩罚——但不是一刀切,惩罚力度由参数 b 控制,词频饱和速度由参数 k1 控制。这两个旋钮的默认值各家实现略有差异,以你所用检索库的官方文档为准。

它和向量检索差在哪

维度BM25向量检索
匹配依据词是否出现、出现多少语义向量距离
强项精确词、编号、人名、专有名词同义改写、跨语言、模糊意图
弱项同义词、拼写错误、语义改写罕见实体、精确串,容易"差不多就召回"
成本极低,纯统计索引,无需 GPU需嵌入模型与向量库

典型的翻车场景:用户搜"猫咪口粮",文档标题写的是"猫粮",BM25 完全匹配不上;反过来,用户搜错误码"E1042",向量检索可能把语义相近的"E1032"也捞回来——而这两个是灾难性的不同。

所以它为什么还活着

现在的混合检索(hybrid search)通常是:BM25 召回一批,向量召回一批,合并后统一重排。BM25 常年是那条"保底"的线——它不会漏掉字面精确匹配,成本低、结果可解释、不需要 GPU,向量模型换版本或服务抖动时它照样跑。

对 AI 从业者,尤其是做 RAG(Retrieval-Augmented Generation)的人:如果你的语料里塞满产品型号、错误码、内部代号、人名,别只上向量库,加一路 BM25 往往是最便宜的召回率保险。对普通职场人:你在搜索框里认真敲下的那几个关键词,至今仍然是决定你看到什么的那只手。

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。