前言
我们 前面 一起 阅读了 Seven Failure Points When Engineering a Retrieval Augmented Generation System 这篇论文关于传统RAG的七大痛点。那么,RAG 技术在商业化的企业项目中还有用吗?
答案显然是肯定的!
定义
我们前面也探讨了传统RAG痛点的优化思路,究其本质还是在“向量检索”这一步。于是Advanced RAG便应运而生。
Advanced RAG是一套针对传统RAG(常被称为Naive RAG)流程中多个薄弱环节进行系统性增强的工程范式。其核心目标是通过在“检索前”和“检索后”引入智能处理层,同时对检索本身也有优化,以构建一个更稳健、准确且自适应的RAG系统。
核心流程
检索前优化
高级RAG着重优化了索引结构和查询的方式:
-
查询优化:
- 查询重写:使用LLM将模糊、口语化的查询改写成更规范、更具检索性的形式。例如,将“怎么让手机电池更耐用?”重写为“智能手机电池保养与续航提升指南”。
- 查询扩展:基于原查询生成相关的子问题或同义词,以扩大检索范围,提高召回率。常用技术如HyDE,先让LLM生成一个假设性答案,再用该答案的特征去检索。
- 意图分类:判断用户查询属于何种类型(如事实问答、总结、比较),以便后续采用不同的检索或生成策略。
-
索引优化:
- 语义分块:不再机械地按固定长度切分,而是根据句子边界、段落或主题进行切割,确保每个文本块具有完整的语义。
- 元数据增强:为每个文本块添加丰富的元数据(如来源、章节、日期、实体),便于后续进行高效的过滤和筛选。
检索优化
-
混合检索:并行执行向量检索(捕捉语义相似性)和关键词检索(如BM25,捕捉精确字面匹配),然后融合两者结果,兼顾召回率与精确率。
-
多阶段检索:
- 召回阶段:使用成本较低、速度较快的检索器(如向量检索)召回大量(如100个)相关候选文档。
- 重排序阶段:使用更精细但计算成本更高的模型(如Cross-Encoder)对召回的候选文档进行精确相关性打分和重新排序,只保留最相关的Top-K个。这是提升精度最有效的步骤之一。
检索后优化
传统RAG将检索到的文档块直接拼接,作为上下文输入LLM。而 Advanced RAG 做了更多地优化。
-
上下文压缩与提炼:
- Map-Reduce:让LLM先对每个文档块进行摘要(Map),再对所有摘要进行总结(Reduce),从而提炼核心信息。
- 选择性上下文:仅抽取与问题最相关的句子或段落,丢弃冗余信息。
- 信息去重与冲突消解:合并重复信息,并识别不同来源间的矛盾,可选择信任度最高的来源。
-
可控生成与自我验证:
- 提示工程增强:在提示词中明确指令格式、引用要求,并加入“如果上下文不包含相关信息,请回答不知道”等指令,以降低幻觉。
- 后验验证:让LLM对自己生成的答案,根据检索到的上下文进行事实一致性检查,必要时进行修正。
和NaiveRAG对比
Advanced RAG的“进阶”本质是从“概率匹配”走向“确定性增强” 。它的价值不仅在于提升指标,更在于为系统引入了可控性和可解释性。
| 对比维度 | 传统RAG (Naive RAG) | 高级RAG (Advanced RAG) | 核心进步与工程收益 |
|---|---|---|---|
| 架构 | 线性管道:索引 -> 检索 -> 生成。 简单直接,但僵化、容错低。 | 智能化、非线性管道:引入预处理、优化、后处理等多个可插拔智能层。 | 从“流水线”到“决策引擎” 。 |
| 检索策略 | 单次向量相似度检索 | 混合检索(向量+关键词)+ 多阶段检索(初筛+重排序) | 源头治理,质量倍增 |
| 查询处理 | 直接使用用户原始查询 | 查询重写、扩展(HyDE)、意图提取等 | 让检索“听懂人话”, 提高了检索的召回率。 |
| 交互模式 | 单轮、静态 | 支持多轮对话、闭环反馈、动态路由的非线性架构 | 从“问答机”到“对话伙伴” 。更符合人类自然交互习惯,能解决更复杂、信息不完整的问题。 |
RAG趋势
-
ModularRAG:将检索、路由、重排、生成等组件解耦,像搭积木一样根据任务灵活组装,追求极致的定制化与效率
-
Agentic RAGL:让系统能自主判断何时检索、检索什么、如何迭代,形成规划-执行-反思的闭环
-
CRAG:纠正式RAG, 具备自我评估和纠错能力的架构,也代表了通过引入“质量控制环”来进一步提升可靠性的方向。