RAG:业界优秀的检索增强生成策略

209 阅读16分钟

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自主智能体动态决策,适应实时变化
动态决策和工作流优化适用于多领域任务
迭代式的优化和精细化高准确度
RAGAgentic RAG
场景数据环境简单、任务单一企业级数据环境,任务多样
数据源通常基于单个检索引擎通常基于多个检索引擎
索引向量索引为主可灵活结合多种索引
检索规划无规划或静态规则动态规划下一步检索策略
多步检索通常不支持借助多步骤推理自主实现
外部工具通常不支持自动推理使用必要的工具
反省机制通常不支持借助反省优化问题或重新检索
灵活性不够灵活,流程固定自主推理,或灵活编排

【Naive RAG & Advance RAG & Modular RAG】

1.png

  • 原始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.png

2,Naive RAG

RAG(Retrieval-Augmented Generation,检索增强生成) 是一种结合了信息检索生成式模型的自然语言处理技术,它利用外部知识源为 LLM 提供相关背景并减少幻觉。

3.png

【核心思想】先查资料,再作答。 解决传统的生成模型(比如 GPT、BERT 这类预训练语言模型)只能基于已有知识进行回答。

  • 索引: 在离线状态下,从数据来源处获取数据并建立索引的过程。

    • 数据索引: 包括清理和提取原始数据,将 PDF、HTML、Word、Markdown 等不同格式的文件转换成纯文本。
    • 分块: 将加载的文本分割成更小的片段。
    • 嵌入和创建索引: 将文本编码为向量。
  • 检索(向量搜索) :给定一个查询,从外部知识库(如 Wikipedia、企业知识库、向量数据库等)中检索相关文档/段落。

  • 增强(Top-K): 处理检索到的数据,提取并总结与查询上下文最相关的信息。

  • 生成(LLM) :将原始查询和检索到的相关文档一起输入到生成模型中,由模型根据这些信息生成回答。

【优势】

  • 知识可更新:只需更新知识库,不必重新训练大模型。
  • 更可靠的回答:可以提供依据或引用。
  • 更适合专有领域:如法律、金融、医疗等。

【局限性】

  • 单次检索,缺乏迭代: 从知识库中检索 top-k 文档,一次性送进生成模型。
  • 无法验证检索结果质量: RAG 不对检索结果的正确性或相关性做任何判断。
  • 无法使用多个知识源: 现实中很多问题需要跨知识域、跨系统。
  • 不具备任务规划或推理能力: RAG 不会主动拆分任务,不知道怎么进行多跳问答。
  • 上下文窗口有限: 无法充分“阅读”多个长文档,丢失关键信息。
  • 不具备长期记忆与状态跟踪能力: RAG 是“无记忆的”:每次查询都是独立的。

3,Advance RAG

Advanced RAG 是一类更加智能、灵活和可扩展的 RAG 系统,具备多知识源接入、动态检索、多步推理、工具使用和结果验证等能力。

4.png

【核心思想】预检索+后检索+索引优化。

  • 预检索处理(优化数据索引:旨在提高索引内容的质量)

    • 提升数据粒度: 直接进行向量表征得到的向量往往粒度比较粗,为了改进文本的标准化和一致性,剔除无关信息和特殊字符,提升检索效率
    • 优化索引结构: 通过调整数据块大小、改变索引路径和加入图结构信息的方式,能优化检索效果。
    • 添加元数据信息: 当索引被分割成多个块时,如何高效检索便成为关键。通过将引用的元数据,如日期、用途、章节、引用小节等嵌入到数据块中,可以提高检索的效率和准确性。
    • 对齐优化: 即创建适合用每篇文档回答的问题,并将这些问题与文档结合起来。有助于解决文档间的对齐问题和不一致性。
    • 混合检索: 融合了关键词搜索、语义搜索和向量搜索等多种技术,适应不同类型的查询需求,确保能够一致地检索到最相关和内容丰富的信息。混合检索作为检索策略的重要补充,能够显著提升 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的一种升级,这里面集成了大量优化策略,并将这些策略进行重组,形成完整的模块独立完成特定功能,其实很多内容和上面提及的很接近,只是更加模块化。

5.png

【核心思想】模块化。

  • 搜索模块: 相比于前面提及的RAG中的简单搜索,这里的搜索可以涵盖大量经典搜索的必要组件,如query改写、意图识别、实体检索等,还涉及多路召回等工程思路,再者,也要开始面对各种千奇百怪的文档形式,表格、数字公式等。
  • 记忆模块: 借助大模型本身的记忆功能来实现,寻找和大模型历史回复最接近的,来进行回复
  • 额外生成模块: 提供除生成回复结果之外的其他生成能力,例如对文档的精简,删除检索噪音等。
  • 任务适配模块: 让RAG系统能够适配不同的下游任务,有些时候,类似用大模型进行分类,其实也能使用RAG的模式进行优化。
  • 对齐模块: 用于对齐query和doc,毕竟query和doc本身的语义空间就有巨大差异,直接进行相似度计算的难度其实很大,因此可以进行一定的调整。
  • 验证模块: 作为检索的后处理,验证query和检索结果的相关性,即确定检索得到的文档是否能够回答这个问题。

5,Graph RAG

图式 RAG(Graph RAG) 通过将图结构数据集成到传统的检索增强生成系统中,进一步扩展了 RAG 的能力。

image.png

【核心思想】基于图的检索

  • 节点连接性: 捕捉并推理实体之间的关系。
  • 层次化知识管理: 通过基于图的层次结构处理结构化和非结构化数据。
  • 语境丰富: 通过利用图结构路径增强关系理解。

【局限性】

  • 可扩展性有限: 依赖于图结构可能限制了系统的可扩展性。
  • 数据依赖性: 高质量的图数据对生成有意义的输出至关重要。
  • 集成复杂性: 将图数据与非结构化检索系统集成增加了设计和实现的复杂度。

6,AI Agent

【AI Agent】

image.png

  • LLM(具有定义的角色和任务) :作为智能体的主要推理引擎和对话接口。它解读用户查询,生成响应并保持连贯性。
  • 记忆(短期记忆与长期记忆) :在交互过程中捕获上下文和相关数据。短期记忆跟踪即时对话状态,而长期记忆则存储累积的知识和智能体的经验。
  • 规划(反思与自我批评) :通过反思、查询路由或自我批评,指导智能体的迭代推理过程,确保复杂任务能够有效地被拆解。
  • 工具(向量搜索、网页搜索、API 等) :扩展智能体的能力,不仅限于文本生成,还能访问外部资源、实时数据或进行专业计算。

【Agent 模式】

  • 反思: 智能体评估自己的决策和输出,识别错误和需要改进的领域。
  • 规划: 智能体创建结构化的工作流和任务序列,以高效解决问题。
  • 工具: 智能体与外部工具、API和知识库交互,以检索和处理数据。
  • 多智能体: 多个智能体协作,通过分工和共享信息及结果来解决复杂任务。

【Agent 工作流模式】

  • 提示链: 将复杂任务分解为多个步骤,每个步骤都基于前一步的结果。
  • 路由: 对输入进行分类,并将其定向到适当的专门提示或处理过程。
  • 并行化: 将一个任务分解为独立的子进程,并行执行,降低延迟。
  • 协调器-工作者: 采用中央协调器模型,动态地将任务分解为子任务,分配给专门的工作者模型,并汇总结果。

7,Agentic RAG 

Agentic RAG 是在传统 RAG 的基础上,引入了“智能体(Agent)”理念的一种增强方案。它的目标是让模型更主动、更具规划性地使用检索信息,提升任务完成能力、信息利用率和问答质量。

image.png

【核心思想】 规划任务+分步检索+迭代生成+验证答案。

  • 任务分解:将复杂问题拆解成若干子问题。
  • 多轮检索:每个子问题都可能单独检索信息。
  • 结果验证:对生成内容进行事实验证。
  • 行动规划:比如先查 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)结合外部知识库,执行深度、多步骤的检索与生成任务,例如行业分析、学术综述、投资研究等。其核心在于通过高效的检索策略和长文本推理能力,生成专业级的研究报告。

  • 行业研究报告生成(如竞品分析、市场趋势预测)
  • 学术文献综述(如机器学习方法对比、研究挑战总结)
  • 用户舆论分析(如社交媒体情感倾向统计)
指标DeepResearchAgentic RAG
准确性依赖检索质量,对复杂逻辑推理支持有限通过多工具协作和反思机制提升准确性,但依赖代理决策能力
灵活性流程固定,难以适应动态需求高度灵活,可实时调整策略(如切换数据源或工具)
复杂度实现简单,适合快速部署架构复杂,需协调多代理与工具,开发成本高
延迟响应较快(单次检索生成)可能因多步决策和工具调用增加延迟

DeepResearch 更接近传统 RAG 的增强版,通过优化检索与生成流程提升专业领域任务的效率,适合结构化的深度研究需求。