1. RAG检索策略演进与选型全景图
在信息检索与问答系统领域,检索增强生成(Retrieval-Augmented Generation,简称RAG)技术已经成为连接海量非结构化数据与大语言模型的关键桥梁。作为一名长期从事搜索系统开发的工程师,我见证了RAG技术从早期的关键词匹配到如今支持复杂推理的智能架构的完整演进历程。
当前主流的RAG检索策略可以划分为三个技术代际:
第一代:基于词频统计的检索
- 代表技术:BM25及其变种
- 核心原理:基于词频(TF)和逆文档频率(IDF)的统计相关性计算
- 优势:计算效率高,对结构化文本和精确匹配场景表现优异
- 局限:无法处理语义相似性和术语歧义
第二代:混合检索架构
- 代表技术:Blended RAG
- 核心创新:融合关键词、稠密向量和稀疏向量三路召回
- 优势:兼顾字面匹配和语义理解,召回率显著提升
- 典型应用:专业领域的知识问答系统
第三代:智能体驱动的检索
- 代表技术:Agentic RAG
- 核心突破:引入查询分解、动态检索和证据验证的闭环系统
- 优势:支持多跳推理和跨文档关联分析
- 典型应用:金融风控、医疗诊断等复杂决策场景
在实际项目选型时,我们需要考虑以下几个关键维度:
- 查询复杂度:简单问答(BM25)vs 多跳推理(Agentic RAG)
- 数据特性:结构化程度、领域专业性、多模态情况
- 精度要求:普通信息检索 vs 高风险的决策支持
- 计算资源:实时性要求与硬件预算约束
根据我的项目经验,金融领域的合规检查系统通常需要Agentic RAG的复杂推理能力,而电商产品的FAQ系统使用Blended RAG就能获得很好的性价比。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 传统BM25的工程实践与优化
2.1 BM25算法深度解析
BM25(Best Match 25)是基于概率检索框架的经典算法,其核心公式为:
code复制score(D,Q) = Σ IDF(q_i) * (f(q_i,D) * (k1 + 1)) / (f(q_i,D) + k1 * (1 - b + b * |D|/avgdl))
其中关键参数:
k1:控制词频饱和度的参数(通常1.2-2.0)b:控制文档长度归一化的参数(通常0.5-0.8)avgdl:语料库中文档的平均长度
在开源搜索引擎Elasticsearch中,BM25的实现经过了大量工程优化:
java复制// Elasticsearch BM25相似度计算核心片段
public float score(int freq, long norm) {
float idf = (float) Math.log(1 + (docCount - docFreq + 0.5)/(docFreq + 0.5));
float tfNorm = freq * (k1 + 1) / (freq + k1 * (1 - b + b * norm / avgdl));
return idf * tfNorm;
}
2.2 中文场景下的特殊处理
标准BM25直接应用于中文文本会遇到严重问题:
- 分词挑战:英文
