选型前先写下失败原因:答案缺少私有或最新知识?输出风格和任务习惯不稳定?还是必须调用系统完成多步操作?问题不同,投入方向就不同。
先看一张决策表
| 你真正需要的能力 | 优先方案 | 核心代价 |
|---|---|---|
| 引用企业文档、回答最新信息 | RAG | 检索质量、索引更新、引用校验 |
| 稳定语气、格式或领域任务习惯 | 微调 / LoRA | 高质量样本、训练与回归评测 |
| 搜索、计算、下单、操作软件 | Agent + 工具 | 权限、安全、状态与失败恢复 |
| 既查资料又执行流程 | RAG + Agent | 链路更长,必须逐段观测 |
RAG:把可更新知识放在模型外
RAG 的典型流程是把问题编码成向量,从文档索引中检索相关片段,再把片段与问题一起交给生成模型。原始 RAG 论文将语言模型的“参数记忆”与外部的“非参数记忆”结合,在知识密集型任务上获得了更具体、更事实化的输出。
它适合制度问答、产品知识库、研究助手和需要来源的客服。它的主要风险不在“向量数据库选错”,而在召回不到正确资料、切块破坏上下文、旧文档未下线,以及模型虽然拿到证据却没有忠实使用。
微调:改变模型的行为分布
微调适合把大量一致示例转化为稳定行为,例如固定分类体系、结构化抽取、品牌语气或特殊代码风格。LoRA 冻结原模型权重,只训练注入层中的低秩矩阵;论文在其设置中大幅减少了可训练参数和显存需求,同时保持有竞争力的效果。
但不要把微调当作更新知识库。训练进去的事实难以精确删除、更新和引用。若业务每天变化,通常应该把变化留给检索系统,把微调用于“怎么答”。
Agent:让模型进入行动循环
Agent 通常让模型在“观察—判断—调用工具—读取结果”的循环中完成目标。ReAct 研究将推理轨迹与环境动作交错,使外部信息可以修正计划,也让行动过程更可解释。
Agent 适合跨系统流程,例如“查库存—比较供应商—生成采购草案—等待审批”。每增加一个工具和一步循环,就增加一次失败、越权和成本失控的机会,因此工具权限与停止条件比提示词更重要。
什么时候组合
真实应用经常是组合题。一个技术支持 Agent 可以先用 RAG 查询产品文档,再调用诊断接口,最后生成需要人工确认的修复方案;微调则负责稳定分类标签和输出格式。合理分工是:
- 知识经常变化:放在 RAG 中。
- 行为需要大量示范:考虑微调。
- 必须影响外部世界:通过受控工具交给 Agent。
- 确定性规则:继续写在普通程序里,不要交给模型猜。
先用提示词和少量示例验证价值;需要私有知识时加 RAG;行为仍不稳定且已有高质量数据时再微调;只有业务确实需要跨步骤行动时才引入 Agent。
别只测“感觉不错”
为每条链路建立单独指标:检索测 Recall@K 与证据覆盖,生成测忠实度与引用正确率,微调测目标任务和通用能力回归,Agent 测任务成功率、错误动作率、人工接管率、成本与延迟。否则系统失败时,你只会看到一句“模型答错了”。
资料来源
- Lewis 等,Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks(2020)
- Hu 等,LoRA: Low-Rank Adaptation of Large Language Models(2021)
- Yao 等,ReAct: Synergizing Reasoning and Acting in Language Models(2022/2023)