简介:本文从原理层面辨析Prompt工程、RAG与Agent三类AI概念的差异与联系,帮助读者理解它们各自解决的问题、底层运行机制及协作方式,掌握大模型应用从指令理解、知识增强到自主任务推进的完整技术演进逻辑。
在大语言模型应用的技术讨论中,Prompt 工程、RAG 与 Agent 是出现频率最高的三个概念,也最容易让初学者感到困惑。它们看似并列,实际上分别处于不同的抽象层次,解决的是不同性质的问题。本文从原理角度出发,围绕”模型能力如何被引导、被补强、被组织”这条主线,拆解三者的底层机制、模块构成与协作关系。
理解这三者的第一步,是明确它们所处的技术层次:
| 概念 | 所处层次 | 核心解决的问题 |
|---|---|---|
| Prompt 工程 | 输入层 | 如何让模型准确理解任务意图 |
| RAG | 知识层 | 如何让模型输出有外部依据 |
| Agent | 控制层 | 如何让模型自主推进多步任务 |
它们并非互斥关系,而是逐层叠加:Prompt 是模型交互的基础接口,RAG 是在 Prompt 基础上引入外部知识的机制,Agent 则是在前两者之上增加任务规划、工具调用与状态管理的控制框架。
这条技术脉络可以用一条需求升级链来描述:
每一次跃迁,都是因为上一层的输出暴露了新限制:模型会胡编引用、会答非所问、无法独立完成多步骤任务。理解这些限制的来源,才能理解相应技术的设计动机。
大语言模型的本质是一个条件概率生成器:给定输入序列,预测下一个 token 的概率分布。它并不”知道”用户想做什么,只能从输入文本中推断模式。
Prompt 工程的核心机制,就是通过输入文本构造条件分布,使模型输出的概率分布偏向用户期望的方向。一个完整的 Prompt 通常包含四个部分:
用伪代码描述其处理链路:
输入: 用户意图 I构造: prompt = 任务描述 + 上下文 + 约束 + 示例模型: output ~ P(token | prompt)若 output 不满足约束:调整 prompt 结构或措辞重新生成
值得注意的是,模型本身的行为也受训练阶段影响。指令微调通过示范数据让模型学会”遵循要求”,而基于人类反馈的强化学习则通过评价信号调整模型输出倾向。这意味着 Prompt 工程与模型对齐是两个互补方向:前者优化输入,后者优化模型。
RAG 要解决的核心问题是参数化知识的局限:模型训练时冻结的知识,无法覆盖最新信息,也无法保证引用准确。
RAG 的原理是在生成前引入一个检索步骤,将外部语料中与问题相关的片段作为上下文注入 Prompt。这相当于把”闭卷考试”变成”开卷考试”。
其系统组成通常包含四个模块:
完整工作流程如下:
第一步 离线索引:文档 → 切分 → 向量化 → 存入向量索引第二步 在线检索:用户问题 → 向量化 → 相似度检索 → Top-K 片段第三步 增强生成:prompt = 问题 + 检索片段 + 生成约束模型 → 基于片段生成回答
关键机制在于检索质量决定生成质量。如果召回片段与问题不相关,模型要么忽略片段凭记忆作答,要么被误导产生错误引用。因此切分粒度、向量模型选择、相似度阈值、Top-K 数量都会直接影响最终效果。
如果说 Prompt 是一次函数调用,RAG 是带外部数据读取的函数调用,那么 Agent 就是一个带循环、带状态、带工具调用能力的控制程序。
Agent 的核心机制包括:
其运行流程可用如下伪代码表示:
目标 Gstate = 初始状态while 任务未完成:action = 模型基于(state, G)决策if action 是工具调用:result = 执行工具(action)state = 更新(state, result)elif action 是最终回答:return actionelse:记录并继续
关键点在于控制权从单次生成转移到了循环调度。模型不再只输出文本,而是输出”下一步做什么”的决策,由外部调度器执行并回传结果。这使得 Agent 能处理需要多轮交互、依赖外部环境反馈的任务。
在实际系统中,三者往往同时存在:
一个典型论文助手场景:
| 技术 | 优势 | 边界 |
|---|---|---|
| Prompt 工程 | 低成本、快速迭代 | 受模型能力上限约束,无法引入新知识 |
| RAG | 知识可更新、引用可溯源 | 依赖检索质量,长文档切分与召回存在损失 |
| Agent | 可处理多步任务、可调用工具 | 循环成本高,错误会累积,状态管理复杂 |
需要特别注意:Agent 并非”更高级的 RAG”,RAG 也不是”更复杂的 Prompt”。它们是不同层面的机制,混用概念会导致架构设计偏差。
Prompt、RAG 与 Agent 分别对应大模型应用中的三个递进层次:输入构造、知识增强、任务控制。理解它们的关键,不是记住定义,而是理解每一层是为了解决上一层暴露的什么限制而出现。当需求从”理解要求”升级到”有据可依”再到”自主推进”,技术栈也随之从单次生成扩展到检索增强,再到循环调度。掌握这条演进逻辑,才能在具体系统设计中判断该用哪一层、如何组合、边界在哪。