首页
/
工具
/
RAG Retrieval Deep Dive: BM25, Embeddings, and the Power of Agentic Search
RAG Retrieval Deep Dive: BM25, Embeddings, and the Power of Agentic Search
摘要
本文深入对比了BM25词法搜索和嵌入语义搜索在RAG检索中的优缺点,给出了根据查询类型和系统权衡选择检索方法的实用框架,强调了将RAG视为系统而非简单组件的重要性。
暂无内容
查看缓存全文
缓存时间:
2026/06/27 07:24
# RAG Retrieval Deep Dive: BM25, Embeddings, and the Power of Agentic Search
**TL;DR:** 构建生产级RAG系统时,检索环节是关键瓶颈。本文深入对比了BM25词法搜索和嵌入语义搜索的优劣,并给出了根据查询类型和系统权衡选择检索方法的实用框架。
## RAG的现状与挑战
很多人都在搭建自己的RAG方案。但当你试图把演示推向生产时,问题就暴露了:准确率下降(用户问的问题比测试用的合成数据复杂得多)、延迟高到无法忍受、从100个文档扩展到100万面临扩展困难、成本飙升(有些企业级多智能体RAG每次查询成本高达1美元),还有常被忽视的权限管理——不是每个人都有权阅读所有文档。
这些问题的答案不在拼凑arXiv论文里,而是需要把RAG当作一个**系统**来思考。
## 将RAG视为一个系统
生产级RAG系统不只是两个模型,而是多个组件的组合:
- 干净地解析文档并提取信息(这一点在处理复杂文档时经常被忽略)
- 查询文档的方式
- 检索(找到相关块)
- 生成响应
在开始设计前,需要先理解用户期望的**权衡**:速度、成本,以及用“问题复杂度”代替准确率。由于生成式AI容易出错,通常实施在容易检查错误的地方(比如代码助手),而涉及患者生命的医疗RAG系统则更难上线,因为错误成本高。
### 查询类型决定系统设计
在开始设计前,先了解用户会用RAG系统处理什么类型的查询:
1. **简单关键词查询** – 非常适合BM25
2. **语义变化** – 用户不知道确切关键词,比如问“多少银行”而不是“总收入”
3. **多步推理** – 需要逐步解决多个部分
4. **跨文档答案** – 答案分布在多个文档中
5. **外部知识** – 答案不在提供的文档里
6. **智能体场景** – 用户问更宽泛的问题,需要思考型大语言模型
每种情况都会影响系统设计。本文聚焦检索部分,因为这里存在大量困惑和不确定性。
## 为什么需要检索?分块的意义
你不能指望一个模型能容纳所有内容——即使有1000万上下文长度,每次查询都跑一遍也不现实,计算量太大。通过分块把文档分成小块,是一种计算高效的方法。所以RAG检索会一直存在。
## BM25:词法搜索的经典
BM25(最佳匹配25)是一种词法搜索方法,经过多次迭代才到现在的版本。它检查文档中所有单词并创建**倒排索引**:每个单词对应哪些文档。查询“butterfly”时,能立即知道哪个文档包含该单词。这种方式非常高效。
**性能对比(合成数据)**:
- 线性搜索(Ctrl+F):1000文档 → 3000秒,且随文档数线性增长
- 倒排索引+BM25:快几个数量级
### BM25的局限
BM25在关键词检索上很棒,但无法处理同义词或缩写。比如用户问“physician”但文档里全是“doctor”;或者用户问“International Business Machines”但文档用“IBM”。尽管如此,BM25是一个很强的基线,很多神经网络方法在某些语料上可能打不过它。如果用户已经知道要查的关键词,BM25可能就足够了。
## 语言模型与嵌入:语义搜索
把文本通过编码器编码成数字,这些数字代表了文本的语义。语言模型在大数据上训练过,理解相似概念:“physician”和“doctor”在嵌入空间中非常接近,“International Business Machines”和“IBM”也接近。这就是语义搜索,Google引入后大获成功。
### 如何选择嵌入模型?
Hugging Face上有数百个嵌入模型。下面这张图展示了不同模型在**CPU推理速度**(横轴,越靠右越快)和**检索质量**(纵轴,NCDG指标,越高越好)上的分布:
- **BM25**:靠右,速度快,但检索质量不是最佳
- **静态嵌入(如Word2Vec)**:比BM25更快,甚至可在CPU上运行。但缺点是无法处理多义词(比如“model”在AI领域和时尚领域意思完全不同),检索质量可能受损
- **更大的模型**(图中左侧):质量更高,但速度更慢
Hugging Face上的**多语言嵌入排行榜**和**检索嵌入排行榜**(BEIR的nano版本)可以帮助你根据速度和质量的权衡选择合适的模型。
## 智能搜索与Agentic Search
在演讲中,作者也提到了“智能搜索”和“智能体场景”作为检索的更高阶形态。当用户期望查询有复杂度、需要逐步解决多个部分、或者答案分布在多文档时,需要更复杂的检索策略,甚至结合推理和工具调用。这部分内容在演讲中作为后续方向提及,但本文已覆盖了检索的核心基础——BM25与嵌入的对比及其适用场景。
## 总结
建立生产级RAG系统,首先要把检索看作系统的一部分,理解查询类型和系统权衡。BM25是快速、简单的基线,适合关键词明确的查询;嵌入模型能处理语义变化,但需要根据速度和质量要求选择合适的模型。没有万能银弹,只有根据具体场景做出的工程选择。
**Source:** https://www.youtube.com/watch?v=AS_HlJbJjH8
相似文章
Reddit r/AI_Agents
Archex 是一款新的开源代码 RAG 工具,通过结合混合搜索(BM25F + 密集嵌入)、交叉编码器重排序和依赖图扩展来改进检索,与纯基于嵌入的方法相比,实现了更高的召回率和令牌效率。
Anthropic Engineering
Anthropic 推出了上下文检索,这是一种结合了上下文嵌入和 BM25 的技术,通过减少检索失败的情况,显著提高了 RAG 的准确性。
X AI KOLs Timeline
This paper identifies 'vector search dilution' in RAG systems when scaling to large heterogeneous document collections, where accuracy dropped from 75% to 40% in a real-world deployment. The proposed MASDR-RAG method uses domain scoping via organizational metadata before retrieval, improving P@10 from 0.77 to 0.86 with low cost and easy deployment.
arXiv cs.AI
本文介绍了 AgenticRAG,这是一个来自微软的框架,通过为大型语言模型(LLM)配备迭代搜索、文档导航和分析工具,增强了企业知识库的检索能力。它在多个基准测试中展示了相比标准 RAG 流水线在召回率和事实准确性方面的显著提升。
X AI KOLs Timeline
代理型RAG通过AI代理在循环中驱动检索过程,实现多步推理、自动选择数据源和优化查询,解决了标准RAG在处理多跳问题、模糊查询和多数据源时的局限性。