找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

1618

积分

0

好友

206

主题
发表于 昨天 02:24 | 查看: 2| 回复: 0

RAG流程五大步骤示意图

在深入探讨各种架构之前,我们有必要先明确一下什么是RAG。简单来说,它通过让大型语言模型在生成回答前参考外部知识库,来优化其输出。其核心在于,它不完全依赖模型训练时学到的内容,而是能够从你的文档、数据库或知识图谱中提取相关的最新信息。

一个典型的RAG工作流程是这样的:

  • 用户提问后,系统首先根据查询从外部知识源检索相关信息。
  • 随后,它将原始问题与检索到的上下文结合,一并发送给语言模型。
  • 最终,模型生成的回答基于实际、可验证的信息,而不仅仅是其固有的训练数据。

RAG解决的四大核心问题图示

3. 标准 RAG

标准RAG是整个RAG体系的基石和“入门示例”。它将检索视为一次简单的查找操作,核心目的是让模型基于特定数据运行,同时避免微调带来的高昂开销。但这种架构默认你的检索引擎是完美的,它最适合那些对响应速度要求高、而对绝对事实精度容忍度稍高的低风险环境。

3.1 工作原理

  • 分块处理: 将原始文档分割成易于处理的小型文本片段。
  • 向量化: 每个文本片段被转换为向量(嵌入),并存储于向量数据库(如 Pinecone 或 Weaviate)。
  • 检索阶段: 将用户查询也转换为向量,然后通过相似度算法(如余弦相似度)从数据库中召回“Top-K”个最相似的文本片段。
  • 生成阶段: 将这些片段作为“上下文”输入给LLM,从而生成基于事实依据的回应。

标准RAG工作流程示意图

3.2 现实示例

一家小型创业公司的内部员工手册问答机器人。当员工询问“我们的宠物政策是什么?”时,机器人直接从人力资源手册的向量化片段中检索相关段落来回答。

优点:

  • 响应速度快。
  • 计算成本极低。
  • 系统简单,易于调试和监控。

缺点:

  • 极易受到“噪声”影响(检索到无关的文本块)。
  • 无法处理复杂的、包含多个子问题的查询。
  • 缺乏自我修正能力:如果检索到的数据本身有误,系统会基于错误信息生成答案。

4. 对话式 RAG

对话式RAG架构图

对话式RAG旨在解决“上下文盲区”问题。在标准RAG中,如果用户先问“企业版方案有什么功能?”,接着问“它要多少钱?”,系统无法理解“它”指代什么。该架构通过添加一个有状态的记忆层,为对话的每一轮重新构建上下文。

4.1 工作原理:

  1. 上下文加载: 系统存储最近5-10轮的对话历史。
  2. 查询重写: LLM基于历史对话和新查询,生成一个能够独立理解的“完整查询”(例如,将“它要多少钱?”重写为“企业版方案的价格是多少?”)。
  3. 检索: 使用重写后的、语义清晰的查询进行向量搜索。
  4. 生成: 基于检索到的新上下文生成答案。

4.2 实际示例:

某SaaS公司的客户支持聊天机器人。用户说:“我的API密钥遇到问题了”,接着问:“能重置它吗?”系统借助记忆层,知道“它”指的是API密钥,从而给出准确回答。

优点:

  • 提供自然、连贯的聊天体验。
  • 用户无需在对话中重复信息。

缺点:

  • 记忆漂移: 10分钟前的不相关对话历史可能会污染当前的搜索。
  • 由于增加了“查询重写”步骤,导致了更高的Token使用成本。

5. 纠正式RAG

纠正式RAG决策流程示意图

纠正式RAG是为高风险环境设计的“安全卫士”。它在检索到的文档被送入生成器之前,引入了一个“决策门”来评估其质量。如果内部检索结果被认为不佳,系统会自动切换到实时网络搜索等外部方案作为备选。根据一些团队的内部测试,部署此类评估器能显著降低答案的幻觉率。

5.1 工作原理

  1. 检索: 从内部向量存储中获取相关文档。
  2. 评估: 一个轻量级的“评分器”模型为每个文档片段分配可信度评分(例如:正确、模糊、不正确)。
  3. 触发门:
    • 正确: 使用这些文档,继续执行生成步骤。
    • 错误/模糊: 丢弃低质量数据,并触发外部API(如谷歌搜索或Tavily)获取新鲜信息。
  4. 合成: 使用已验证的内部数据或刚获取的外部数据生成最终答案。

5.2 实际示例

一个财务顾问机器人。当被问及某支2025年数据库中尚未收录的股票价格时,纠正式RAG评估后发现内部数据缺失或过时,于是自动从财经新闻API中获取实时报价。

优点:

  • 显著减少因知识库陈旧或缺失导致的幻觉。
  • 有效弥合内部静态数据与实时世界信息之间的差距。

缺点:

  • 显著增加响应延迟(可能增加2-4秒)。
  • 需要管理外部API的成本和调用频率限制。

6. 自适应 RAG

自适应RAG路由选择示意图

自适应RAG是“效率优化大师”。它认识到并非每个查询都需要动用复杂的检索流程。它通过一个路由器来分析用户查询的意图复杂度,并为不同复杂度的查询选择最经济、最快捷的解答路径。

6.1 工作原理:

  1. 复杂度分析: 一个轻量级分类器模型对输入查询进行快速分析,并分配路径。
  2. 路径 A(无需检索): 适用于问候语(如“你好”)或LLM已掌握的常识性问题(如“太阳从哪边升起?”)。直接由LLM生成回答。
  3. 路径 B(标准 RAG): 适用于简单的、基于文档的事实查询(如“图书馆的开放时间?”)。
  4. 路径 C(多步智能体): 适用于需要分解、搜索多个来源并进行综合分析的复杂问题(如“比较过去五年计算机科学和物理专业的就业趋势”)。

6.2 现实示例:

大学校园助手。学生说“你好”,它直接回应;学生问“图书馆什么时候开门?”,它触发简单检索;学生问“请帮我写一份关于机器学习在生物医学中应用的综述提纲”,则触发复杂的多步研究和生成流程。

优点:

  • 通过跳过对简单问题的不必要检索,实现大幅成本节约。
  • 针对绝大多数简单查询,实现了最佳的响应延迟。

缺点:

  • 分类错误风险: 如果路由模型误将一个复杂难题判断为简单问题,将导致检索失败或答案质量低下。
  • 需要训练和维护一个高度可靠的路由分类器。

7. 自我反思RAG

基于LangGraph的自反思RAG循环架构图

自我反思RAG是一种追求极高事实准确性的“精密架构”。其模型经过特殊训练,能够在生成过程中批判自身的推理。它不仅进行检索和生成,还会实时产出“反思标记”,作为对自身输出质量的审查信号。

7.1 工作原理

  1. 检索: 模型根据查询触发标准检索流程。
  2. 带标记生成: 模型在生成文本的同时,会伴随输出特殊的反思标记,例如 [IsRel](检索到的文档是否相关?)、[IsSup](当前生成的主张是否有文档支持?)和 [IsUse](当前生成的内容是否有用?)。
  3. 自我修正: 如果模型在生成过程中输出了 [NoSup](无支持)标记,它会自动暂停,触发重新检索或重写当前句子,以确保每个主张都有据可依。

7.2 现实案例

法律研究辅助工具。模型在撰写关于某个法庭案件的辩论要点时,通过自反思发现,当前段落的主张在已检索到的判例中找不到足够支持,于是自动暂停,搜索其他相关判例,并重写该段落。

优势:

  • 在所有RAG变体中,能提供最高级别的事实依据性和准确性。
  • 推理过程具有内置的透明度,便于审计和调试。

缺点:

  • 需要专门的、经过精细微调的模型(例如 Self-RAG Llama),开发门槛高。
  • 计算开销极大,生成速度慢。

8. 融合 RAG

融合RAG多检索器结果融合流程

融合式RAG是解决“表述模糊性问题”的专家。它考虑到大多数用户并不擅长提出精确的搜索查询。因此,它会对单一查询进行多角度审视,生成多个变体进行并行检索,以确保更高的信息召回率。

8.1 工作原理

  1. 查询扩展: 利用LLM,根据原始查询生成3到5个语义相近或角度不同的查询变体。
  2. 并行检索: 使用所有这些查询变体,在向量数据库中并行进行搜索。
  3. 互逆排序融合(RRF): 使用RRF等数学公式对所有并行检索返回的结果列表进行重新排序。其核心思想是:在多个查询变体结果中都排名靠前的文档,其综合相关性更高。
  4. 最终排序: 经过融合计算后,得到一个最终的、质量更高的文档排序列表,用于后续生成。

8.2 实际示例

一位医学研究员搜索“失眠的治疗方法”。融合RAG不会只搜索这个词,它可能同时生成并搜索“睡眠障碍药物”、“非药物性失眠疗法”、“CBT-I方案”和“褪黑素疗效”等变体。这样,即使用户最初的查询不够全面,系统也能更全面地召回相关研究文献。

优点:

  • 拥有卓越的召回能力,能发现单一关键词查询可能遗漏的珍贵文档。
  • 对用户查询表述不佳、不完整或存在歧义的情况具有极强的鲁棒性。

缺点:

  • 搜索成本显著增加(通常是标准检索的3-5倍)。
  • 由于需要执行多次检索和重新排序计算,导致整体延迟更高。

9. HyDE (假设性文档嵌入)

HyDE(假设性文档嵌入)工作原理图

HyDE是一种反直觉却非常精妙的模式,其核心思想是:先生成“答案”,再根据这个“答案”去找“证据”。它认识到“问题”和“答案”在语义上可能存在差异,通过首先生成一个“假设性”答案,它在两者之间搭建了一座更有效的检索桥梁。

9.1 工作原理

  1. 假设生成: LLM针对用户的查询,先“想象”或“假设性”地生成一个可能的答案(这个答案可能不准确,但结构上类似理想答案)。
  2. 向量化: 将这个虚构的、假设性的答案文本转换为向量表示。
  3. 检索: 使用这个“理想答案”的向量,去向量数据库中查找与之最相似的真实文档。
  4. 生成: 最后,基于这些找到的真实文档,撰写并输出最终的准确答复。

9.2 现实案例

当用户提出一个模糊的问题,例如“加州那条关于数字隐私的法律”。HyDE会先让LLM生成一段关于“加州消费者隐私法案(CCPA)”的虚构摘要,然后用这段摘要的向量去查找真实的CCPA法律文本,最终基于真实文本提供准确答案。

优势:

  • 能显著提升对概念性、模糊性或总结性查询的检索效果。
  • 实现方式相对简洁,无需引入复杂的多智能体或规划逻辑。

缺点:

  • 偏见放大风险: 如果最初生成的“假设答案”从根本上就是错误的,那么后续的搜索会被严重误导。
  • 对于简单、直接的事实查询(例如,“法国的首都是哪里?”)效率低下,多此一举。

10. 代理式 RAG

代理式RAG(Agentic RAG)系统架构

代理式RAG引入了AI代理的思维。它并非盲目地获取文档,而是引入了一个具有自主规划能力的代理,在生成最终答案前,它会像研究员一样思考:需要什么信息?从哪里获取?如何验证?它将信息检索视为一个动态的研究过程,而非静态的查找。

10.1 工作原理

  1. 分析: 代理首先深度解析用户查询,判断其属于简单事实问题、多步骤任务、模糊需求,还是需要实时数据。
  2. 计划: 代理将复杂查询分解为一系列子任务,并制定执行策略。例如,是先查向量数据库,还是直接调用某个API?是否需要先进行网络搜索?
  3. 执行: 代理调用各种工具来执行计划,包括向量数据库、网络搜索、内部API、计算器等。
  4. 迭代: 代理根据中间结果,可能会优化查询、获取更多数据或交叉验证信息来源。
  5. 生成: 一旦收集并整合了足够的证据,LLM最终生成一个基于事实、具有深度上下文感知的回答。

10.2 现实示例

用户提问: “根据印度当前的金融法规,使用LLM进行自动化贷款审批的金融科技应用是否安全合规?”

一个代理式RAG可能会执行以下步骤:

  1. 识别这是一个涉及监管、技术和风险的多领域复杂问题。
  2. 通过网页搜索工具查找印度储备银行(RBI)最新的金融科技和AI应用指导方针。
  3. 检索内部的合规政策文档。
  4. 交叉核对这些来源,检查是否有冲突或更新的地方。
  5. 综合一份带有明确引用、风险提示和注意事项的结构化回答。

而传统RAG可能仅根据“印度”、“金融法规”、“LLM”、“贷款审批”等关键词检索语义相似的文档,并尝试一次性生成答案,深度和准确性可能不足。

优点:

  • 能够处理极其复杂、多部分和开放式的查询。
  • 通过多步骤验证和迭代,大幅减少幻觉。
  • 可灵活接入实时和多样化的外部数据源。
  • 更能适应动态变化的查询背景和需求。

缺点:

  • 由于多步骤规划和执行,导致响应延迟非常高。
  • 运行成本(API调用、计算)远高于简单RAG。
  • 需要精心设计和编排工具、代理逻辑,系统复杂。
  • 对于简单的事实查询来说是大材小用,过于复杂。

11. GraphRAG

图检索增强生成(GraphRAG)流程示意图

之前的架构都基于文档间的语义相似性进行检索,而GraphRAG则基于实体间的明确关系进行检索。它的核心问题不再是“哪些文本看起来相似?”,而是“事物之间如何关联,以及关联的方式是什么?”

11.1 工作原理

  1. 图结构构建: 将知识建模为一个图结构。节点代表实体(如人物、公司、概念、事件),边代表实体之间的关系(如“投资于”、“受雇于”、“影响”、“导致”)。
  2. 查询解析: 系统分析用户查询,识别其中的关键实体和潜在的关系类型,而不仅仅是提取关键词。
  3. 图遍历: 系统在图结构中进行遍历,寻找能够连接多个实体的有意义路径。这支持了“多跳推理”。
  4. 可选混合检索: 在实践中,常将向量搜索与图检索结合,先用向量搜索在非结构化文本中定位提及实体的具体段落,再用图谱分析关系。
  5. 生成: LLM将图谱中发现的关系路径,转化为自然、连贯且可解释的答案。

11.2 现实案例

查询: “美联储近期的加息决策如何影响科技初创企业的估值?”

GraphRAG不会只是寻找包含“美联储”、“加息”、“初创企业”、“估值”的文档。它会遍历知识图谱中的路径,例如:

  • 美联储 → (做出决策) → 加息
  • 加息 → (导致) → 风险资本成本上升 / 市场流动性收紧
  • 风险资本成本上升 → (影响) → 早期项目融资难度增加
  • 科技初创企业 → (主要依赖) → 风险投资
  • 融资难度增加 → (导致) → 估值下调压力

最终的答案源于对这条关系链的推理,而非简单的文档语义匹配。这使得GraphRAG在因果推理、多跳推理和确定性逻辑推理方面表现极为强大。一些结合了图谱与分类法的系统,在确定性搜索任务中报告了接近99%的准确率。

优点:

  • 极其擅长因果推理和关系推理。
  • 输出结果具有高度的可解释性,因为答案直接基于明确的关系路径。
  • 在金融、生物医学、法律等结构化和规则密集的领域表现卓越。
  • 能有效减少仅因语义相似而产生的误报。

缺点:

  • 前期构建和维护高质量知识图谱的成本非常高
  • 图谱的构建过程(从非结构化文本中抽取实体和关系)可能计算成本高昂。
  • 知识图谱难以随着领域的快速变化而灵活演进。
  • 对于开放式的、闲聊式的查询而言过于复杂。

12. 如何选择:决策框架

RAG架构选择决策框架图

面对如此多的选择,一个实用的决策框架至关重要。

12.1 第一步:从标准 RAG 开始

严肃地说,除非你有确凿证据表明标准RAG行不通,否则永远从这里开始。标准RAG迫使你夯实所有基础:

  • 高质量的文档分块策略
  • 优质的嵌入模型选择
  • 建立合理的评估体系
  • 实现有效的监控

记住:如果标准RAG效果都不好,增加复杂度也救不了你。你只会得到一个依然糟糕的复杂系统。

12.2 第二步:仅在需要时添加记忆功能

你的应用场景中,用户会进行多轮对话并提出后续问题吗?如果是,添加对话式RAG的记忆层。如果不是(例如单次问答的客服机器人),果断跳过此步。

12.3 第三步:根据实际问题匹配架构

关注你的真实用户会提出的查询类型,而不是想象中的理想情况:

  • 查询是否相似且直接? -> 坚持使用标准RAG。
  • 查询复杂度差异巨大? -> 采用自适应RAG进行路由。
  • 准确性关乎重大利益(如医疗、金融)? -> 即使成本高,也优先考虑纠正式RAG或自反思RAG。
  • 是开放式的调研或分析需求? -> 选择自反思RAG或代理式RAG。
  • 用户查询术语经常存在歧义或不完整? -> 融合式RAG是理想选择。
  • 核心需求是理解复杂的关系网络(如风投网络、药物相互作用)? -> 若预算允许构建知识图谱,请选用GraphRAG。

12.4 第四步:考量实施限制

  • 预算紧张? -> 专注于优化标准RAG的检索流程(分块、嵌入模型、混合搜索),避免采用计算密集的Self-RAG或Agentic RAG。
  • 响应速度是首要指标? -> 标准RAG或自适应RAG更合适。需要极致优化检索延迟。
  • 对准确性要求极高,成本次之? -> 尽管成本较高,仍应选择纠正式、自反思或GraphRAG。

12.5 第五步:融合多种架构

生产级系统通常是多种架构的混合体,以适应不同的场景:

  • 标准RAG + 纠正式RAG: 95%的查询走快速的标准检索路径,当系统对检索结果置信度低时,自动触发纠正式备用流程。实现了速度与安全的平衡。
  • 自适应RAG + GraphRAG: 简单查询用向量检索,复杂的关系推理查询用图谱检索。
  • 融合RAG + 对话式RAG: 在有多轮对话记忆的基础上,对每一轮查询再进行多角度扩展检索。

目前,结合稠密向量检索与经典关键词匹配(如BM25)的混合搜索,已成为兼顾语义理解与精确匹配的准标准方案。

13. 小结

我们可以把LLM想象成一位头脑极其聪明但记忆力很差、且知识可能过时的新员工

  • 标准 RAG 就像是给他配了一个文件柜。他根据问题关键词,抽出一个文件夹,阅读后给出答案。
  • 对话式 RAG 如同这位员工在会议中做笔记,这样他就能记住刚才讨论了什么,不会反复问同一个问题。
  • 纠正式 RAG 则增加了一位高级审核员,在答案发布前会核查:“你这个说法,有确凿的文件依据吗?没有的话我得去查查最新资料。”
  • 自适应 RAG 如同一位精明的主管,根据问题难度分配资源:简单问题让员工快速回答,复杂问题则安排一个小组进行全面研究。
  • 自反思 RAG 好比一位有强迫症的专家,边写报告边自言自语:“嗯,我这段论述有支撑吗?好像不太够,我得再查查资料确认一下。”
  • 融合式 RAG 就像用不同的表述方式向多位同事询问同一个问题,然后综合采纳他们共识度最高的信息。
  • HyDE 如同员工先根据自己的理解草拟一份理想答案的框架,然后拿着这个框架去文件柜里寻找与之最匹配的真实文档。
  • 代理式 RAG 如同一个专家团队在协作:有人负责查法律,有人负责查财务,有人负责查技术,最后有人负责整合所有人的发现,形成一份综合报告。
  • GraphRAG 则完全不用文件柜,而是使用一块画满了实体与关系连线的白板。所有答案都来自于分析“谁和谁有关?是怎么关联的?”。

希望这份详细的指南能帮助你理解不同RAG架构的优劣与适用场景。技术的选择没有银弹,关键在于深刻理解你自己的需求与约束。如果你对这些技术架构的实践有更多想法,欢迎到云栈社区与更多开发者交流讨论。




上一篇:从备份到测试:Linux dd命令实用指南与避坑要点
下一篇:Redis创始人antirez:AI已跨越临界点,编程范式发生根本性改变
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-2-23 10:24 , Processed in 0.888246 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表