AI 术语表 · 进阶 · 经典机器学习、推荐与搜索 · 语言模型
BM25
BM25 是一种关键词检索排序函数,它根据查询中的词在文档中出现得有多频繁、又有多罕见,为每篇文档打分。它长期以来一直是搜索引擎的基本方法,至今仍是 RAG 的核心组件。
关于这个术语
- 难度
- 进阶 · 需要了解内部原理的专业术语
- 分类
- 数据、运维与平台
- 领域
- 经典机器学习、推荐与搜索, 语言模型
- 加入时间
- 2026-10-08
工作原理
BM25 对查询中的每个词考察三点,并把得分相加。第一,这个词在文档中出现得越多,得分越高,但出现过多时,得分的增长会逐渐变缓(使得难以靠重复同一个词提高排名)。第二,在全部文档中包含这个词的文档越少,即词越罕见,权重越大。第三,将文档长度与平均长度比较并加以校正,避免长文档仅凭词数多而占优势。借助预先建立的倒排索引(记录每个词出现在哪些文档中的列表),这一计算可以非常快速地完成。
为什么重要
BM25 无需额外训练即可直接使用,速度快,也容易解释某篇文档为何被检索出来。尤其在产品代码、人名、错误信息、法律条款编号等需要精确用词的检索中表现突出。基于嵌入、按语义查找的语义检索容易漏掉这类特有表达,因此如今的 RAG 系统大多采用将 BM25 与语义检索结合使用的混合检索。在评估新的检索方法时,它也常被用作比较基准。
BM25 与语义检索
BM25按词语匹配查找
- 无需训练即可使用
- 擅长产品代码、名称检索
- 会漏掉同义词和不同表达
语义检索按语义查找
- 需要嵌入模型
- 表达不同也能按意思找到
- 在特有词语匹配上可能较弱
공통 RAG 中先找出与问题相关文档的检索阶段
注意事项
BM25 只看字面上的词语匹配,因此搜索“汽车”时,可能会漏掉只出现“车辆”的文档。在韩语这类词后附着助词的语言中,结果会因语素分析等预处理的质量而有很大差异。它有用于调节词频敏感度和文档长度校正程度的参数,可以根据数据进行调整。常见的做法是先用 BM25 宽松地选出候选文档,再用重排序器重新排序。
示例
Elasticsearch、OpenSearch 等搜索引擎默认使用 BM25 作为评分方式。用 RAG 构建企业内部文档聊天机器人时,也广泛采用这样的架构:将问题同时发送给 BM25 检索和向量数据库检索,合并两者结果后,用重排序器选出排名靠前的文档交给 LLM。