RAG、Agent、Prompt 工程底层机制有何不同

作者:4042026.11.03 13:10浏览量:0

简介:本文从原理角度拆解 Prompt、RAG、Agent 等 AI 概念的运行机制与边界。你将理解这些技术如何通过输入约束、外部检索、任务规划与工具调用来弥补大模型缺陷,并掌握它们在真实系统中的协作流程、设计要点与常见误区。

一、原理概述:这些名词为什么会出现

大语言模型的核心能力,是基于训练语料中的语言规律,对输入序列进行概率建模,从而预测下一个最可能的词元。这个过程让模型具备了生成自然语言、归纳信息、执行简单推理的能力。但“会生成文字”并不等于“能可靠完成任务”。真实任务通常需要模型:

  1. 遵循明确的输出格式与约束;
  2. 使用训练时间点之后的外部信息;
  3. 连续执行多步骤操作,并在中间结果不理想时调整路径;
  4. 访问外部工具、数据库或业务系统,而不是只靠参数内记忆。

Prompt、RAG、Agent 等概念,本质上是针对上述缺口发展出的不同层级解决方案。它们不是彼此替代的关系,而是在同一条“让模型从会说话走向会干活”的路径上,依次叠加的能力机制。

理解这些概念的关键,不是记住它们各自的功能清单,而是看清它们分别解决了大模型哪一类机制性缺陷:Prompt 解决意图表达与约束问题,RAG 解决外部知识与记忆更新问题,Agent 解决任务分解与工具协作问题。MCP、Skill、Harness 等较新概念,则是这些核心机制在工程化过程中的进一步抽象。


二、背景问题:大模型的三个机制性缺陷

在展开各概念之前,需要先明确大模型在实际使用中暴露出的三类核心限制。后续每一项技术机制,几乎都是对其中某一类缺陷的直接回应。

2.1 生成结果缺少可控性

模型默认生成的是“最可能的续写”,而不是“用户期望的回答”。同一个问题换一种问法,输出格式可能完全不同;某些约束描述得不够明确时,模型可能忽略要求;在开放任务中,模型倾向于给出笼统、泛化的答案。

出现这一问题的机制性原因在于:预训练阶段优化的是语言序列的似然,而不是“遵循用户指令”或“满足格式约束”这类任务目标。模型没有天然理由去区分“重要约束”和“背景描述”,除非训练或输入方式显式教会它这种区分。

2.2 参数内知识存在时间边界与覆盖盲区

模型参数在训练完成后基本固定。对训练截止日期之后发生的事件、新发表的论文、新增的网页内容,模型没有可靠访问能力。更隐蔽的问题是,即便某些知识曾出现在训练语料中,模型在推理时也未必能精确召回,特别是在知识稀疏或存在冲突版本的情况下。

当模型无法从参数中调取可靠依据时,它并不总是会“承认不知道”。由于生成机制的根本目标是产出连贯文本,模型可能用统计上合理的词元组合填充空白,从而产生看拟合理但实际没有来源的内容。这类幻觉不是简单的“错误回答”,而是生成机制在缺少证据输入时的自然产物。

2.3 单次前向传播无法完成复杂任务

一个完整的任务常常包含多个步骤:先搜索信息,再阅读来源,然后提取关键点,接着写初稿,最后对照要求逐项检查。模型单次调用只能完成“从输入到输出”的一段计算,中间没有自然的“停下来验证—决定下一步—再执行”机制。

因此,当用户直接把一个复杂任务抛给模型时,模型倾向于一步生成完整结果。步骤越多、中间状态越复杂,单次生成的失控风险越高。这个限制不是模型“不够聪明”,而是缺少一个外部控制循环来管理任务状态。


三、核心概念:从输入约束到执行循环

3.1 Prompt:把任务翻译成模型能执行的输入模式

Prompt 是模型输入端的一组结构化信息,它至少包含三类内容:

组成 作用 示例
任务指令 告诉模型要完成什么 “用中文解释摘要”
上下文信息 提供完成任务所需背景 摘要原文、领域术语定义
格式与约束 规定输出结构和边界 “分别说明研究问题、方法和发现;缺失信息标注为‘未说明’”

Prompt 之所以能影响输出,是因为大模型的推理过程本质上是条件生成。输入序列中的每一个词元都会参与注意力计算,影响后续词元的概率分布。任务指令改变的是“生成条件”,而不是修改模型参数本身。因此,Prompt 的价值在于将用户模糊意图转化为模型可辨识的强约束条件。

rag-">3.2 RAG:把外部知识变成可检索的生成上下文

RAG,即检索增强生成,核心思路是把“参数内知识”与“外部可检索知识”分离。系统先根据用户问题去外部知识库中检索相关文档片段,再把这些片段与原始问题一起送入模型,让模型在给定证据的条件下生成回答。

这个设计解决的核心问题不是“模型不知道”,而是“模型无法可靠地知道自己不知道”。通过把证据直接放在输入中,RAG 降低了模型自由发挥的空间,让生成结果受到明确上下文约束。检索环节的作用,是缩小外部知识的候选范围,只把最可能相关的少量片段送入模型,兼顾相关性与推理成本。

agent-">3.3 Agent:用外部控制循环补上任务分步执行能力

Agent 的本质,是在模型外部增加一个控制循环。这个循环持续管理任务状态,决定下一步调用什么工具,将工具返回结果反馈给模型,再根据新状态决定继续执行还是结束任务。

模型在 Agent 架构中充当“决策器”和“信息处理器”:它读取当前状态,输出下一步动作描述;外部执行框架解析这个动作,调用相应工具,把结果追加回上下文。循环反复进行,直到满足终止条件。这个机制让模型从“单次生成器”变成了一个可运行、可中断、可纠偏的任务执行核心。


四、系统组成与工作流程

下面通过一个统一的“论文助手”场景,展示各概念如何分别嵌入完整系统中。

4.1 仅使用 Prompt 的系统结构

  1. 用户输入
  2. ↓
  3. Prompt 构造器(包装任务指令 + 摘要原文 + 输出格式)
  4. ↓
  5. 大语言模型
  6. ↓
  7. 输出校验(格式检查)
  8. ↓
  9. 返回结果

在这个结构中,系统没有外部检索和工具调用环节。所有模型依赖的信息都来自 Prompt。适用场景是:任务范围明确、知识需求稳定、单次生成即可完成。

4.2 加入 RAG 后的数据流

  1. 用户提问
  2. ↓
  3. 查询理解与改写
  4. ↓
  5. 向量检索 / 关键词检索 → 文档片段候选集
  6. ↓
  7. 重排序(可选)
  8. ↓
  9. Prompt 组装(问题 + 检索片段 + 指令)
  10. ↓
  11. 大语言模型生成
  12. ↓
  13. 引用标注与结果返回

关键机制在于,检索环节产生的“证据片段”在 Prompt 中改变了模型生成的概率环境。当证据充分且相关时,模型倾向于贴合证据输出;当证据缺失时,则可在 Prompt 中要求模型明确说明“根据已有资料无法回答”,从而显式抑制幻觉。

4.3 Agent 的控制循环

  1. ┌────────────────────────────────────┐
  2. │ 初始化任务状态 │
  3. │ 将目标分解为可执行步骤 │
  4. └───────────────┬────────────────────┘
  5. ↓
  6. ┌──────────────────┐
  7. │ 读取当前状态 │
  8. │ 模型输出下一步动作│
  9. └─────────┬────────┘
  10. ↓
  11. ┌──────────────────┐
  12. │ 解析动作指令 │
  13. │ 调用对应工具 │
  14. └─────────┬────────┘
  15. ↓
  16. ┌──────────────────┐
  17. │ 工具结果写回 │
  18. │ 更新任务状态 │
  19. └─────────┬────────┘
  20. ↓
  21. 是否满足终止条件?
  22. ├── 否 → 回到循环开始
  23. └── 是 → 输出最终结果

这个循环的每次迭代都包含:状态读取、模型决策、动作解析、工具执行、结果回写五个环节。任务越复杂,中间状态越多,控制循环的价值越明显。


五、关键机制深入

5.1 Prompt 为什么能约束输出

从注意力机制的角度看,输入序列中的每对词元之间都会计算注意力权重。任务指令中“请分别说明研究问题、方法和发现”这样的表述,会与后续生成位置形成注意力连接。生成每一步输出时,模型都会“关注”这些指令词元,使输出分布向满足约束的方向偏移。

这里有一个常被忽略的细节:约束的“强度”与指令在输入中的位置、措辞具体程度、是否提供示例有关。指令越靠后,距离生成位置越近,影响越强;措辞越具体,可执行性越高;给出少样本示例时,模型可以从示范中归纳出输出模式,效果通常优于单纯的抽象描述。

因此,Prompt 工程本质上是对“注意力信号”的工程化设计:哪些信息放在什么位置、以何种方式表达、需要提供多少示范,都直接影响模型输出的概率分布。

5.2 RAG 中的检索为何决定生成质量

RAG 系统有一个关键机制:检索结果的相关性与排序直接决定生成质量。如果检索返回的片段与问题无关,模型在生成时收到的“证据”就是噪声,不仅无助于正确回答,还可能引入额外干扰。

为降低这一风险,常见系统会引入以下机制:

  • 混合检索:同时使用语义向量检索和关键词匹配,弥补单一方式的召回盲区;
  • 重排序:用一个小型判别模型对初步候选片段重新打分,提高进入 Prompt 的片段精度;
  • 分块策略:将文档切成语义完整的小段,避免片段过长稀释关键信息,也避免片段过短丢失上下文;
  • 引用约束:在 Prompt 中明确要求模型“仅依据给定片段回答”,降低模型脱离证据生成的风险。

可以看出,RAG 不是“检索 + 生成”的简单拼接。检索模块的质量控制机制,在根本上决定了模型能否在正确的证据环境中工作。

5.3 Agent 中的任务状态如何管理

Agent 能处理多步任务,关键在于外部框架对“任务状态”的持续管理。状态至少包含三个维度:

  1. 已完成步骤:哪些子任务已经执行完毕;
  2. 当前上下文:截至目前积累的信息、中间结果、错误记录;
  3. 下一步计划:接下来要执行的动作或待验证的假设。

这个状态被序列化后送入模型,模型据此输出下一步动作。执行完动作后,新结果又追加回状态,形成迭代。正是这种“状态累积—模型决策—动作执行—状态更新”的闭环,赋予 Agent 处理复杂任务的能力。

常见的实现机制包括:

  • 规划器:将复杂目标拆分为可执行步骤序列;
  • 记忆模块:保存短期上下文和长期有用信息;
  • 工具注册表:管理可用工具的接口描述与调用规范;
  • 终止判定器:判断任务完成条件是否满足,防止无限循环。

5.4 工具调用如何接入模型

工具调用是现代 Agent 能力的关键环节。大模型本身不能直接执行数据库查询、文件写入或网络请求,它只输出文本。外部框架需要完成“文本动作描述”到“实际工具调用”的转换。

通用流程如下:

  1. 模型输出动作描述(如:“搜索 2024 年睡眠与记忆相关综述”)
  2. ↓
  3. 解析器提取动作类型与参数
  4. ↓
  5. 工具调用器执行对应函数
  6. ↓
  7. 结果格式化后返回模型上下文

模型的输出格式通常需要被约束为结构化形式,以便解析器可靠地提取动作类型和参数。这个约束通常通过 Prompt 设计实现,例如要求模型在调用工具时输出特定格式的标记,或直接输出可解析的结构化数据。


六、示例说明:一个论文查询任务的完整链路

设用户向论文助手提出:

“查一下最近关于睡眠和记忆关系的最新研究,帮我整理出三项最重要的发现,并注明来源。”

步骤一:Prompt 构造

系统将用户请求改写为结构化指令,明确任务边界:

  1. 任务:整理睡眠与记忆关系的最新研究
  2. 要求:
  3. 1. 检索近三年内的相关文献
  4. 2. 提取三项最重要的研究发现
  5. 3. 每项发现附上来源信息
  6. 4. 如某项信息无法从检索结果获得,标注“未找到”

步骤二:Agent 规划

Agent 的规划器将任务拆解为:

  1. 检索睡眠与记忆关系的近期文献;
  2. 排序并筛选高质量来源;
  3. 分别提取每篇文献的关键发现;
  4. 合并去重,选出三项最重要的发现;
  5. 格式化输出。

步骤三:工具调用与 RAG 检索

Agent 调用检索工具,将用户查询转化为检索式。检索模块通过向量检索和关键词检索获得候选文献片段,经过重排序后,将最相关的若干段落返回给模型。

步骤四:生成与校验

模型基于检索到的证据片段生成初步整理结果。系统校验输出是否满足了格式要求和来源标注要求。若模型在某项发现处未标注来源,校验模块触发一次补充生成请求,要求模型补充引用。

步骤五:状态更新与终止判断

所有子任务完成后,Agent 将最终结果写回任务状态,判定满足终止条件,向用户返回整理结果。

这个例子中,Prompt 负责约束每一步的任务格式,RAG 负责获取外部证据,Agent 负责串联多步操作。三者各司其职,又存在明确的数据依赖关系。


七、技术优势与限制

7.1 Prompt

优势:轻量、即时生效、无需额外基础设施。通过调整输入即可改变输出行为,迭代速度快。

限制:效果依赖模型本身的理解能力;复杂约束可能被忽略;长对话场景下,早期指令的影响逐渐弱化;Prompt 无法弥补模型本身的知识缺口。

7.2 RAG

优势:让模型访问更新、更专业的外部知识;在证据充分时显著降低幻觉风险;知识库可独立更新,无需重新训练模型。

限制:检索质量决定生成上限;知识分块和索引方式影响召回效果;跨文档推理仍然困难;当证据冲突时,模型可能难以可靠裁决。

7.3 Agent

优势:可处理多步骤、有依赖关系的任务;能调用外部工具扩展模型能力边界;中间结果可检查、可纠错;更适合开放目标和不确定执行路径的场景。

限制:循环次数增多时,误差会逐步累积;工具调用失败需要额外的容错设计;规划质量影响整体执行效率;成本通常高于单次模型调用。


八、常见误区

误区一:RAG 可以消除幻觉

RAG 只能把外部证据放在输入中,降低模型脱离证据生成的可能性。但如果检索模块返回了不相关或低质量片段,模型仍可能在噪声基础上生成错误内容。幻觉的抑制依赖“检索质量 + Prompt 约束 + 模型遵循能力”三者共同作用,不是单一机制可以兜底。

误区二:Agent 就是让模型自己思考

Agent 的多步能力来自外部控制循环,不是模型单次生成中“思考得更深入”。模型在每次迭代中只负责根据当前状态输出下一步决策,真正的状态管理和流程控制在外部框架中完成。把 Agent 等同于“模型更聪明”会掩盖其工程实现的重要性。

误区三:Prompt 越详细越好

Prompt 的详细程度应与任务复杂度匹配。过长的 Prompt 可能导致关键约束被信息稀释,增加推理开销,也可能触及模型上下文窗口限制。更有效的做法通常是:用结构化的方式组织指令,把核心约束靠近生成位置,用示例说明关键格式要求,而不是简单堆砌更多描述。

误区四:这些概念可以按时间顺序严格划分

实际上,Prompt、RAG 与 Agent 在技术发展中有大量并行和交叉。RAG 系统内需要 Prompt 设计来规范证据使用方式;Agent 的规划与工具调用环节同样依赖 Prompt 结构;RAG 检索结果也可以作为 Agent 执行链中的一个工具调用。它们更像是不同抽象层级的机制组件,而非互斥的演进阶段。


九、总结

Prompt、RAG 和 Agent 分别对应大语言模型应用中的三类核心机制:

  • Prompt 负责把人类意图翻译成模型可辨识的生成条件;
  • RAG 负责把外部知识转化为可控的生成证据;
  • Agent 负责用控制循环将单次生成扩展为多步可操作任务。

三者的共性在于:它们都没有改变大模型的核心参数,而是在模型外部构建了不同层级的控制与补偿机制。理解这些概念的真正收益,不是记住名词边界,而是能够根据任务需求,判断当前系统缺的是哪一层机制:是约束不够清晰、知识不够新鲜,还是执行链条不够完整。以这个视角来看,无论是 Prompt 优化、RAG 调优还是 Agent 架构设计,最终都指向同一个目标——让模型在更明确的条件下,完成更可靠的工作。