1,总体概述
【参考原文】Retrieval-Augmented Generation for Large Language Models: A Survey 【参考原文】Agentic Retrieval-Augmented Generation : A Survey On Agentic RAG
| 范式 | 关键特性 | 优点 |
|---|---|---|
| Naive RAG | 基于关键词的检索(如 TF-IDF、BM25) | 简单易用 |
| 适用于基于事实的查询 | 适合处理基于事实的查询 | |
| Advance RAG | 密集检索模型(如 DPR) | 高精度检索 |
| 神经排序和重排序 | 提高了语境相关性 | |
| 多跳检索 | ||
| Modular RAG | 混合检索(稀疏和密集检索) | 高度灵活和可定制化 |
| 工具和 API 集成 | 适合多样化的应用 | |
| 可组合的、特定领域的流水线 | 可扩展性强 | |
| Graph RAG | 集成基于图的结构 | 关系推理能力 |
| 多跳推理 | 通过节点实现语境丰富 | |
| 通过节点进行语境丰富 | 减少幻觉(hallucinations) | |
| Agentic RAG | 自主智能体 | 动态决策,适应实时变化 |
| 动态决策和工作流优化 | 适用于多领域任务 | |
| 迭代式的优化和精细化 | 高准确度 |
| RAG | Agentic RAG | |
|---|---|---|
| 场景 | 数据环境简单、任务单一 | 企业级数据环境,任务多样 |
| 数据源 | 通常基于单个检索引擎 | 通常基于多个检索引擎 |
| 索引 | 向量索引为主 | 可灵活结合多种索引 |
| 检索规划 | 无规划或静态规则 | 动态规划下一步检索策略 |
| 多步检索 | 通常不支持 | 借助多步骤推理自主实现 |
| 外部工具 | 通常不支持 | 自动推理使用必要的工具 |
| 反省机制 | 通常不支持 | 借助反省优化问题或重新检索 |
| 灵活性 | 不够灵活,流程固定 | 自主推理,或灵活编排 |
【Naive RAG & Advance RAG & Modular RAG】
- 原始RAG:只是具备了RAG最基础的部分,离线索引构造、在线检索以及大模型生成。
- 高级RAG:在这3个流程里增加更多细化的工作,用于进一步优化,例如数据预处理、滑动窗口、文章切片等,重点在检索层面的优化,提升检索模块的质量。
- 模块化RAG:一个更为精细的系统,把简单的RAG组件拓展成更多的复杂的模块以应对更复杂的需求,例如query和文档的改写、过滤、精排等,或者引入多模态、决策模块(Agent)、后处理等。
【Graph RAG & Agentic RAG】
- 图式 RAG:在传统 RAG 基础上引入了图结构,通过节点间的关系来增强检索和推理能力。
- 智能 RAG:在传统 RAG 系统的基础上引入了自主智能体(Agent)。这些智能体能够独立决策并进行实时动态调整,从而优化整个检索和生成的流程。智能 RAG 通过在检索和生成过程中加入决策模块,使得系统能够处理更加复杂的任务和多步骤的推理。
【RAG & Fine-tuning】 检索增强生成(Retrieval-Augmented Generation, RAG) 是指在使用大语言模型回答问题之前,从外部知识库中检索相关信息的技术。RAG 已被证明能显著提升回答的准确性,减少模型幻觉,尤其是在依赖知识的任务中表现尤为出色。尽管可以通过神经网络微调,但它需要消耗大量计算资源,成本高昂,且需要专业技术知识,因此难以适应不断变化的信息环境。
-
RAG好比给学生(模型)提供一本教科书,让它根据特定的问题去查找信息
- 适用于模型需要解答具体问题或执行特定信息检索任务的情况
- 不适合于教会模型理解广泛的领域或学习新的语言、格式或风格
-
微调更像是让学生(模型)通过广泛学习来吸收知识
- 特别适用于强化模型已有的知识、调整或定制模型的输出,以及给模型下达复杂的指令
- 不适合于向模型中添加新的知识,或者在需要快速迭代新场景的情况下使用
2,Naive RAG
RAG(Retrieval-Augmented Generation,检索增强生成) 是一种结合了信息检索和生成式模型的自然语言处理技术,它利用外部知识源为 LLM 提供相关背景并减少幻觉。
【核心思想】先查资料,再作答。 解决传统的生成模型(比如 GPT、BERT 这类预训练语言模型)只能基于已有知识进行回答。
-
索引: 在离线状态下,从数据来源处获取数据并建立索引的过程。
- 数据索引: 包括清理和提取原始数据,将 PDF、HTML、Word、Markdown 等不同格式的文件转换成纯文本。
- 分块: 将加载的文本分割成更小的片段。
- 嵌入和创建索引: 将文本编码为向量。
-
检索(向量搜索) :给定一个查询,从外部知识库(如 Wikipedia、企业知识库、向量数据库等)中检索相关文档/段落。
-
增强(Top-K): 处理检索到的数据,提取并总结与查询上下文最相关的信息。
-
生成(LLM) :将原始查询和检索到的相关文档一起输入到生成模型中,由模型根据这些信息生成回答。
【优势】
- 知识可更新:只需更新知识库,不必重新训练大模型。
- 更可靠的回答:可以提供依据或引用。
- 更适合专有领域:如法律、金融、医疗等。
【局限性】
- 单次检索,缺乏迭代: 从知识库中检索 top-k 文档,一次性送进生成模型。
- 无法验证检索结果质量: RAG 不对检索结果的正确性或相关性做任何判断。
- 无法使用多个知识源: 现实中很多问题需要跨知识域、跨系统。
- 不具备任务规划或推理能力: RAG 不会主动拆分任务,不知道怎么进行多跳问答。
- 上下文窗口有限: 无法充分“阅读”多个长文档,丢失关键信息。
- 不具备长期记忆与状态跟踪能力: RAG 是“无记忆的”:每次查询都是独立的。
3,Advance RAG
Advanced RAG 是一类更加智能、灵活和可扩展的 RAG 系统,具备多知识源接入、动态检索、多步推理、工具使用和结果验证等能力。
【核心思想】预检索+后检索+索引优化。
-
预检索处理(优化数据索引:旨在提高索引内容的质量)
- 提升数据粒度: 直接进行向量表征得到的向量往往粒度比较粗,为了改进文本的标准化和一致性,剔除无关信息和特殊字符,提升检索效率
- 优化索引结构: 通过调整数据块大小、改变索引路径和加入图结构信息的方式,能优化检索效果。
- 添加元数据信息: 当索引被分割成多个块时,如何高效检索便成为关键。通过将引用的元数据,如日期、用途、章节、引用小节等嵌入到数据块中,可以提高检索的效率和准确性。
- 对齐优化: 即创建适合用每篇文档回答的问题,并将这些问题与文档结合起来。有助于解决文档间的对齐问题和不一致性。
- 混合检索: 融合了关键词搜索、语义搜索和向量搜索等多种技术,适应不同类型的查询需求,确保能够一致地检索到最相关和内容丰富的信息。混合检索作为检索策略的重要补充,能够显著提升 RAG 流程的整体性能。
-
嵌入 (Embedding)
- 微调嵌入: 针对特定问题、特定领域或者是特定的检索对,用特定的向量表征一般都会有比较好的效果,因此在有一定训练数据下,很推荐微调以获取更高的上限。根据文档块制定问题,其中问题和答案(文档块)构成了微调过程中的训练对。
- 动态嵌入: 根据单词出现的上下文进行调整,为每个单词提供不同的向量表示。理想的嵌入应该包含足够的上下文,以保证良好的结果。现在的模型,基本都已经算动态嵌入了。
-
检索后处理流程
- ReRank(重新排序) :一方面,提及Diversity Ranker会根据文档的多样性进行重新排序,而LostInTheMiddleRanker则会交替地将最佳文档放在上下文窗口的开始和结束位置,从而获取更加合适而又丰富的结果,再者,为了进一步强化排序结果,通过一些精排模型,也能进一步优化排序结果,如bgererank5等。
- prompt压缩:在进行大模型生成之前,先进行prompt压缩,减少噪音信息,凸显关键段落,有利于最终的回复。
-
RAG 管道优化: 检索过程的优化旨在提升 RAG 系统的效率和信息质量
- 混合搜索的探索: RAG 系统巧妙结合了基于关键词、语义以及向量的多种搜索技术。从而能够应对不同的查询类型和信息需求,有效地获取最相关且内容丰富的信息。
- 递归检索与查询引擎: 把索引文段和返回文段进行分拆,计算相似度的时候是query和小片段,但是返回的是大片段,用大片段给大模型做检索增强。
- StepBack-prompt 方法: 通过诱导让大模型逐步探索出方案
- 子查询: 根据不同场景,我们可以采取多种查询策略,如使用 LlamaIndex 等框架提供的查询引擎、树状查询、向量查询或基本的块序列查询。有一些类似“检索语法树”的概念,例如可以用“should”、“must”、“filter”之类的检索策略来约束整个检索,使之更加精准可控,这个是能提升检索的效果的。
- HyDE 方法: 让大模型对query先生成一个答案,这个答案允许是错的,但里面的关键词基本不会差异很大,在这个假设下,对答案做embedding相比对原query能更接近索引中的doc的embedding,此时对检索难度是有很大程度的下降。
4,Modular RAG
Modular RAG是对 Advance RAG的一种升级,这里面集成了大量优化策略,并将这些策略进行重组,形成完整的模块独立完成特定功能,其实很多内容和上面提及的很接近,只是更加模块化。
【核心思想】模块化。
- 搜索模块: 相比于前面提及的RAG中的简单搜索,这里的搜索可以涵盖大量经典搜索的必要组件,如query改写、意图识别、实体检索等,还涉及多路召回等工程思路,再者,也要开始面对各种千奇百怪的文档形式,表格、数字公式等。
- 记忆模块: 借助大模型本身的记忆功能来实现,寻找和大模型历史回复最接近的,来进行回复
- 额外生成模块: 提供除生成回复结果之外的其他生成能力,例如对文档的精简,删除检索噪音等。
- 任务适配模块: 让RAG系统能够适配不同的下游任务,有些时候,类似用大模型进行分类,其实也能使用RAG的模式进行优化。
- 对齐模块: 用于对齐query和doc,毕竟query和doc本身的语义空间就有巨大差异,直接进行相似度计算的难度其实很大,因此可以进行一定的调整。
- 验证模块: 作为检索的后处理,验证query和检索结果的相关性,即确定检索得到的文档是否能够回答这个问题。
5,Graph RAG
图式 RAG(Graph RAG) 通过将图结构数据集成到传统的检索增强生成系统中,进一步扩展了 RAG 的能力。
【核心思想】基于图的检索
- 节点连接性: 捕捉并推理实体之间的关系。
- 层次化知识管理: 通过基于图的层次结构处理结构化和非结构化数据。
- 语境丰富: 通过利用图结构路径增强关系理解。
【局限性】
- 可扩展性有限: 依赖于图结构可能限制了系统的可扩展性。
- 数据依赖性: 高质量的图数据对生成有意义的输出至关重要。
- 集成复杂性: 将图数据与非结构化检索系统集成增加了设计和实现的复杂度。
6,AI Agent
【AI Agent】
- LLM(具有定义的角色和任务) :作为智能体的主要推理引擎和对话接口。它解读用户查询,生成响应并保持连贯性。
- 记忆(短期记忆与长期记忆) :在交互过程中捕获上下文和相关数据。短期记忆跟踪即时对话状态,而长期记忆则存储累积的知识和智能体的经验。
- 规划(反思与自我批评) :通过反思、查询路由或自我批评,指导智能体的迭代推理过程,确保复杂任务能够有效地被拆解。
- 工具(向量搜索、网页搜索、API 等) :扩展智能体的能力,不仅限于文本生成,还能访问外部资源、实时数据或进行专业计算。
【Agent 模式】
- 反思: 智能体评估自己的决策和输出,识别错误和需要改进的领域。
- 规划: 智能体创建结构化的工作流和任务序列,以高效解决问题。
- 工具: 智能体与外部工具、API和知识库交互,以检索和处理数据。
- 多智能体: 多个智能体协作,通过分工和共享信息及结果来解决复杂任务。
【Agent 工作流模式】
- 提示链: 将复杂任务分解为多个步骤,每个步骤都基于前一步的结果。
- 路由: 对输入进行分类,并将其定向到适当的专门提示或处理过程。
- 并行化: 将一个任务分解为独立的子进程,并行执行,降低延迟。
- 协调器-工作者: 采用中央协调器模型,动态地将任务分解为子任务,分配给专门的工作者模型,并汇总结果。
7,Agentic RAG
Agentic RAG 是在传统 RAG 的基础上,引入了“智能体(Agent)”理念的一种增强方案。它的目标是让模型更主动、更具规划性地使用检索信息,提升任务完成能力、信息利用率和问答质量。
【核心思想】 规划任务+分步检索+迭代生成+验证答案。
- 任务分解:将复杂问题拆解成若干子问题。
- 多轮检索:每个子问题都可能单独检索信息。
- 结果验证:对生成内容进行事实验证。
- 行动规划:比如先查 A,再查 B,最后合成。
- 错误修正:如果发现回答有误,可回退修正。
【优势】
- 更强的任务执行力(规划+决策)
- 可处理复杂、长链、多跳推理问题
- 支持动态上下文与工具调用
【局限性】 耗时高
【Single-Agent RAG】 一个单一的自主 Agent 管理检索和生成过程。
- 查询提交给 Agent。
- Agent 从外部来源检索相关数据。
- 数据被处理并合成成响应。
【Multi-Agent RAG】 一组 Agent 协作执行复杂的检索和推理任务。
- Agent 动态地将任务分解(例如,检索、推理、合成)。
- 每个 Agent 专注于特定的子任务。
- 结果被聚合并合成成连贯的输出。
【Hierarchical Agentic RAG】 将代理组织成层次结构,以便更好地进行任务优先级排序和委派。
- 顶层代理协调低层代理之间的子任务。
- 每个低层代理处理过程中的特定部分。
- 结果在更高层级上进行迭代优化和整合。
【Corrective Agentic RAG】 反馈循环使代理能够迭代地评估和优化其输出。
- 代理生成初始响应。
- 一个评审模块评估响应的错误或不一致性。
- 代理根据反馈优化响应。
- 步骤2-3重复进行,直到输出达到质量标准。
【Adaptive Agentic RAG】 根据任务需求动态调整检索策略和工作流。
- 代理评估查询及其上下文。
- 根据可用数据和用户需求实时调整检索策略。
- 使用动态工作流合成响应。
【Graph-Based Agentic RAG】 扩展了传统的RAG,通过集成基于图的数据结构来实现高级推理。
-
Agent-G: Agentic Framework for Graph RAG: 通过图知识库和反馈循环,动态地将任务分配给专门的代理。
- 补充来自外部来源的非结构化数据。
- 从图知识库中提取关系(例如,疾病与症状的映射)。
- 使用评审模块验证结果并进行迭代优化。
-
GeAR: Graph-Enhanced Agent for RAG: 通过图扩展技术和基于代理的架构增强RAG系统。
- 扩展与查询相关的图,以更好地理解关系。
- 利用专门的代理进行多跳推理。
- 将图结构和非结构化信息综合成响应。
【Agentic Document Workflows (ADW)】 Agent 文档工作流(ADW)通过智能代理自动化文档中心流程,扩展了传统的RAG系统能力。
- 文档解析与结构化: 从发票、合同等文档中提取结构化数据。
- 状态维护: 在多步骤流程中保持上下文一致性。
- 知识检索: 从外部来源或特定领域数据库中检索相关参考资料。
- 代理编排: 应用业务规则,执行多跳推理,并协调外部 API 的调用。
- 可执行输出生成: 生成面向具体用例的结构化输出,如报告或摘要。
8,DeepResearch
主要聚焦于通过大语言模型(LLM)结合外部知识库,执行深度、多步骤的检索与生成任务,例如行业分析、学术综述、投资研究等。其核心在于通过高效的检索策略和长文本推理能力,生成专业级的研究报告。
- 行业研究报告生成(如竞品分析、市场趋势预测)
- 学术文献综述(如机器学习方法对比、研究挑战总结)
- 用户舆论分析(如社交媒体情感倾向统计)
| 指标 | DeepResearch | Agentic RAG |
|---|---|---|
| 准确性 | 依赖检索质量,对复杂逻辑推理支持有限 | 通过多工具协作和反思机制提升准确性,但依赖代理决策能力 |
| 灵活性 | 流程固定,难以适应动态需求 | 高度灵活,可实时调整策略(如切换数据源或工具) |
| 复杂度 | 实现简单,适合快速部署 | 架构复杂,需协调多代理与工具,开发成本高 |
| 延迟 | 响应较快(单次检索生成) | 可能因多步决策和工具调用增加延迟 |
DeepResearch 更接近传统 RAG 的增强版,通过优化检索与生成流程提升专业领域任务的效率,适合结构化的深度研究需求。