# AI 架构决策指南 > 更新日期:2026/05 你有一个 AI 需求,但不确定该用 RAG、Fine-tune、Agent 还是 Workflow。 这篇文章不解释每个方案是什么(那些内容在 [Agent 学习路径](./agent/) 和 [ML 系列](./machine-learning/) 里),而是回答:**面对具体需求,选哪个方案。** ## 核心认知:这是两个独立决策 很多人把 RAG、Fine-tune、Agent、Workflow 放在一起比,但它们解决的是不同层面的问题: ``` 决策 1(知识层):模型不知道 X → 怎么让它知道? 选项:直接 Prompt → RAG → Fine-tune 决策 2(执行层):模型要做 X → 怎么让它做多步操作? 选项:单次 API 调用 → Workflow → Agent ``` 这两组决策**独立且可组合**。你可以用 RAG + 单次调用(知识问答),也可以用 RAG + Agent(研究型助手),还可以用 Fine-tune + Workflow(垂直业务流程)。 下面分别讲两个决策,最后给组合模式。 ## 决策 1:知识层 **问题:模型不知道它需要知道的信息。** ### 决策树 ``` 你的信息是否可以放进 prompt? ├─ 是,且不超过几千 token → 直接 Prompt(写在 system message 里) ├─ 是,但每次不同 → RAG(按需检索塞进 prompt) └─ 否,信息量太大或需要模型内化 → Fine-tune 信息是否频繁变化? ├─ 每天都变 → RAG(改数据源,不改模型) ├─ 每月更新 → RAG 或定期 Fine-tune └─ 基本不变 → Fine-tune 或 Prompt 都可以 你需要模型改变行为风格,而不只是增加知识吗? ├─ 只需要增加事实 → RAG ├─ 需要改变输出格式/语气/推理方式 → Fine-tune └─ 都需要 → Fine-tune + RAG ``` ### 三个选项的判断标准 | 判断标准 | 直接 Prompt | RAG | Fine-tune | | --- | --- | --- | --- | | **信息量** | < 几千 token | 几千到几百万 token | 任何量级,但训练数据需要几千条以上 | | **更新频率** | 随时改 | 随时改(改数据源) | 改一次要重新训练 | | **成本** | API 调用费 | API 调用费 + 向量数据库 + embedding | 训练费($50-几千)+ 托管费 | | **延迟** | 取决于 prompt 长度 | 多一步检索(+100-500ms) | 比长 prompt 快(知识在模型内) | | **准确性** | 依赖 prompt 写得好 | 依赖检索质量 | 依赖训练数据质量 | | **适合场景** | 规则、指令、少量知识 | 文档问答、知识库、企业内部知识 | 特定领域、特定风格、特定语言 | ### 什么时候用 RAG - ✅ 企业知识库问答(文档量大、需要引用来源) - ✅ 产品文档问答(文档频繁更新) - ✅ 客服机器人(需要基于最新政策回答) - ✅ 代码库问答(需要检索相关代码片段) - ❌ 需要模型内化复杂推理模式(Fine-tune 更好) - ❌ 信息量小到能直接放 prompt(直接写 Prompt) ### 什么时候用 Fine-tune - ✅ 需要模型输出特定格式(JSON、SQL、特定标记语言) - ✅ 需要特定领域术语和推理方式(医疗、法律、金融) - ✅ 需要减少 prompt 长度来降成本和延迟(知识压缩进模型) - ✅ 需要特定的语气和风格(品牌文案、客服话术) - ❌ 信息频繁变化(每次改都要重训,RAG 更合适) - ❌ 没有足够的高质量训练数据(至少需要几百到几千条) - ❌ 只需要查事实(RAG 足够,不需要模型内化) ### 什么时候直接写 Prompt - ✅ 少量规则和指令(不超过几千 token) - ✅ 快速验证想法(零成本) - ✅ 结构化输出格式(用 few-shot 示例) - ❌ 知识量超过 context window - ❌ 需要引用来源(Prompt 无法提供外部引用) ### 真实案例 | 场景 | 方案 | 原因 | | --- | --- | --- | | 给客服机器人加产品知识 | RAG | 产品信息经常变,改数据源不需要重新训练 | | 让模型输出特定 SQL 方言 | Fine-tune | 方言固定不常变,需要模型内化语法规则 | | 让模型遵守审批流程 | Prompt | 规则简单明确,几条规则写进 system message | | 法律合同分析 | Fine-tune + RAG | Fine-tune 学法律推理方式,RAG 提供最新法条 | | 内部 Wiki 问答 | RAG | 文档量大且持续更新 | ## 决策 2:执行层 **问题:模型需要做多步操作,不只是回答一个问题。** ### 决策树 ``` 任务需要几步? ├─ 1 步(问 → 答)→ 单次 API 调用 ├─ 2-5 步,步骤固定 → Workflow └─ 步骤不确定,需要模型自己判断 → Agent 步骤是否可以预先定义? ├─ 可以明确列出所有步骤 → Workflow ├─ 大部分步骤已知,少数需要判断 → Workflow + 条件分支 └─ 步骤取决于中间结果,无法预知 → Agent 错误处理需要什么级别? ├─ 出错就停,人工处理 → 单次调用 ├─ 出错重试或走备选路径 → Workflow └─ 出错需要模型自己分析原因并调整策略 → Agent ``` ### 三个选项的判断标准 | 判断标准 | 单次 API 调用 | Workflow | Agent | | --- | --- | --- | --- | | **步骤数** | 1 步 | 2-10 步 | 不确定 | | **流程确定性** | - | 完全确定 | 需要动态决策 | | **可控性** | 最高 | 高 | 低(依赖模型判断) | | **成本可预测性** | 最高 | 高 | 低(取决于 Agent 走多少步) | | **调试难度** | 最低 | 低 | 高(需要 trace 工具) | | **适合场景** | 问答、翻译、总结 | 审批流、数据处理流水线 | 研究、调试、开放性任务 | ### 什么时候用 Workflow - ✅ 流程固定、步骤可枚举(审批、数据 ETL、内容审核流水线) - ✅ 需要人工确认节点(高风险操作前的审批) - ✅ 需要条件分支(if A then X, if B then Y) - ✅ 需要重试和错误处理(调用外部 API 失败后自动重试) - ❌ 步骤取决于中间结果(Agent 更灵活) - ❌ 任务太简单,一步就能完成(不需要 Workflow) **Workflow 工具:** [LangGraph](https://langchain-ai.github.io/langgraph/)、[n8n](https://n8n.io/)、[Dify](https://dify.ai/) ### 什么时候用 Agent - ✅ 任务路径开放("帮我调研 X"→ 需要搜索、阅读、判断、汇总) - ✅ 需要动态选择工具(根据问题决定用搜索还是数据库查询还是代码执行) - ✅ 需要从错误中恢复(失败后自己换策略) - ✅ 多步骤且步骤不可预知(调试、研究、探索性分析) - ❌ 步骤可以预先定义(Workflow 更可控、更便宜) - ❌ 没有评测体系(Agent 没有评测就是在盲飞) - ❌ 没有成本上限(Agent 可能循环 100 步还没完成) **Agent 学习路径:** → [Agent Learning Path](./agent/) ### 什么时候单次调用就够了 - ✅ 问答、翻译、总结、改写 - ✅ 结构化输出(提取信息、分类、打标签) - ✅ 代码生成(单文件、单函数) - ❌ 需要调用外部工具(至少要 Workflow) - ❌ 需要多步推理且步骤间有依赖(Workflow 或 Agent) ### 真实案例 | 场景 | 方案 | 原因 | | --- | --- | --- | | 把用户反馈分类为 bug/feature/question | 单次调用 | 一步完成,输出结构化 JSON | | 用户提交报销 → 审批 → 打款 | Workflow | 步骤固定,需要人工审批节点 | | 帮用户调研竞品并写报告 | Agent | 步骤不确定,需要搜索、阅读、判断、汇总 | | 批量处理 CSV 文件 | Workflow | 步骤固定:读取 → 校验 → 转换 → 写入 | | AI 编程助手 | Agent | 需要读文件、改文件、跑命令、看结果、修复 | | 客服问答 | 单次调用 + RAG | 回答问题,不需要多步操作 | ## 决策 3:组合模式 两个决策组合起来,有 6 种常见模式: | 模式 | 知识层 | 执行层 | 典型场景 | 复杂度 | | --- | --- | --- | --- | --- | | **简单问答** | Prompt | 单次调用 | FAQ、翻译、总结 | ⭐ | | **知识问答** | RAG | 单次调用 | 文档问答、客服 | ⭐⭐ | | **智能流程** | Prompt | Workflow | 审批流、内容审核 | ⭐⭐ | | **知识流程** | RAG | Workflow | 合同审核、报告生成 | ⭐⭐⭐ | | **通用助手** | Prompt/RAG | Agent | 编程助手、研究助手 | ⭐⭐⭐⭐ | | **垂直专家** | Fine-tune | Agent/Workflow | 法律助手、医疗助手 | ⭐⭐⭐⭐⭐ | **选型原则:从简单开始,只在必要时升级。** ``` 第 1 步:能不能用 Prompt + 单次调用解决? → 能 → 做。这是 80% 的场景。 第 2 步:信息不够?加 RAG。 → 不要一上来就 RAG,先试把关键信息写进 prompt。 第 3 步:步骤不够?加 Workflow。 → 不要一上来就 Agent,先试 Workflow。 第 4 步:还不够?Fine-tune 或 Agent。 → 这两步投入大,先确认前几步真的不够。 ``` ## 常见错误 | 错误 | 后果 | 正确做法 | | --- | --- | ---| | 一上来就做 Agent | 成本失控、调试困难 | 先试单次调用,再 Workflow,最后才 Agent | | 用 Fine-tune 解决知识问题 | 训练完数据就过时了 | 信息频繁变化用 RAG | | 用 RAG 解决风格问题 | 检索到的内容风格不一致 | 需要改变输出风格用 Fine-tune | | Workflow 和 Agent 分不清 | 用 Agent 做固定流程,浪费成本 | 步骤确定用 Workflow,不确定用 Agent | | 组合过度(RAG + Fine-tune + Agent 全上) | 系统复杂度爆炸,debug 不动 | 从最简方案开始,每次只加一个组件 | ## 从这里去哪里 - 想系统学 Agent → [Agent Learning Path](./agent/) - 想深入 RAG → Agent 学习路径的 [Stage 6: RAG for Agent](./agent/README.md#stage-6-rag-for-agent) - 想深入 Workflow → Agent 学习路径的 [Stage 3: Workflow](./agent/README.md#stage-3-workflow) - 想深入 Fine-tune → [预训练与微调范式](./machine-learning/stage5-transformer/04-pretrain-finetune-prompt.md) - 想全局了解 → [AI Knowledge Map](./knowledge-map.md)