学习与适应 + RAG:让 Agent 不再每次从零,也不再瞎编

学习让 Agent 从反馈中改进策略,RAG 让它接上你的私有知识——都在上下文层做文章。

Module D · 第 2 讲

立靶:两个让 Agent 永远长不大的硬伤

先看两个真实场景。

第一个:你给 Agent 写了个数据清洗任务,它第一次把日期格式搞错了,你纠正它。第二天同样的任务,它又错了,同样的地方。第三天,还是。它不是笨,是没有学习机制——每一次对话都是一张白纸,昨天踩的坑今天照踩,你纠正一百次也留不下任何东西。这叫「每次从零」。

第二个:你问 Agent「我们公司的报销政策里,机票超过多少要走二级审批?」它给你一个看起来无比自信、格式工整、还带了具体数字的答案。问题是——这个数字是它编的。它根本没看过你公司的报销手册,但它不会说「我不知道」,它会用训练数据里最像报销政策的样子拼一个出来。这叫「没 RAG 就只能瞎编」。

这两个硬伤,对应本讲要补的两个盲区模式:学习与适应(Learning and Adaptation) 解决「每次从零」,让 Agent 从交互和反馈中改进策略;知识检索(RAG) 解决「瞎编」,让 Agent 在生成前先去查你的私有知识。它们看起来是两件事,内核却是同一个问题:模型的权重是固定的、知识是截止的,怎么让一个「冻结的大脑」表现得像在持续成长、并且知道它本来不知道的事? 答案都不是去改权重(那太重),而是去改它每次拿到的上下文——这一点会贯穿全讲。

框架一:学习与适应的三条路径

「让 Agent 学习」不是一个动作,而是三条投入和收益完全不同的路径。先记一句话:越往下越重,但越持久。

路径改什么怎么做持久性成本典型场景
① In-context learning不改权重,只改上下文把经验/例子/纠正放进 prompt 或对话历史仅本次会话极低few-shot 示例、把报错贴回去让它改
② 记忆驱动适应不改权重,改外部记忆成功案例/用户偏好写进长期记忆,下次按相关性召回跨会话持久记住「这用户要 ISO 8601 日期」,下次自动带上
③ 微调 / RLHF改权重标注数据重训 / 人类偏好强化学习永久高(迭代以周计)把垂直领域稳定行为烧进模型

三条路径是一个升级阶梯,不是三选一。绝大多数 Agent 产品靠 ① 和 ②,几乎用不到 ③:① ② 都只改上下文、随时可调、当天见效;③ 一旦烧进权重就改不动、迭代慢。工程默认顺序:能用 in-context 解决就别上记忆,能用记忆解决就别上微调。

一个关键区分——显式反馈 vs 隐式反馈:显式反馈是用户明确告诉你对错(信号强、噪音低,应高权重存记忆);隐式反馈是从行为推断(复制了你的输出=有用,立刻重写=没达标,问三遍=没答到点;信号弱但量大、不打扰用户)。成熟的学习型 Agent 两种都用。新手最常犯的错是只接显式反馈——但用户其实很少主动纠正你,大部分有价值的信号藏在行为里。

框架二:RAG 的五步流程

RAG(Retrieval-Augmented Generation,检索增强生成)一句话:生成之前,先去外部知识库里捞相关内容,塞进上下文,再让模型基于这些内容回答。 分两阶段五步——前三步离线建库,后两步在线查询:

RAG 五步流水线:切分 → Embedding → 向量库(离线建库)→ 检索 Top-K → 注入+生成(在线查询)
RAG 五步流水线:切分 → Embedding → 向量库(离线建库)→ 检索 Top-K → 注入+生成(在线查询)
步骤阶段做什么工程关键点
1. 文档切分 Chunking离线长文档切成小块切分粒度:太大→检索不精准、浪费预算;太小→语义断裂。按语义边界(段落/标题)优于按固定字数硬切
2. Embedding离线每块算成向量选对 embedding 模型,中文场景尤其要实测
3. 存入向量库离线向量 + 原文存进向量数据库建好索引,支持快速相似度检索
4. 检索 Top-K在线query 算成向量,捞最相似的 k 个块召回 vs 精确:k 太小漏关键信息,k 太大引噪音、挤预算;常配重排序 rerank
5. 注入 + 生成在线检索块拼进 prompt,连问题一起给模型注入预算:排序、截断;引用溯源:标注每句来自哪块,可追溯可验证

RAG 精确解决三个模型本身解决不了的问题:知识截止(让它读到今天的文档)、私有/领域知识(你的报销手册、代码库、产品文档模型从没见过)、减少幻觉(答案有据可依且要求引用溯源,瞎编空间被压缩)。

Case:一个客服 Agent 的进化

第 0 天(什么都没有):用户问「Pro 版支持几个团队成员?」Agent 凭训练数据猜「10 个」。错的,实际 5 个。用户投诉。

接上 RAG(解决瞎编):把产品文档、定价页、FAQ 切分入库。再问,Agent 先检索到「Pro 版 5 席」那块,注入上下文,回答「5 个」并附来源链接。幻觉没了。

接上学习(解决从零):一个老用户每次强调「我只关心 API 问题,别讲界面操作」。第一次是显式反馈,Agent 写进该用户长期记忆(路径 ②)。之后自动召回这条偏好,优先讲 API。同时后台发现「webhook 重试的回答」复制率低、追问率高(隐式反馈),运营据此重写文档、重新入库——又一次学习,发生在 RAG 库这侧。

RAG 负责「知道得对」,学习负责「越来越懂你」:一个管知识正确性,一个管策略适应性。两者都不碰权重,都只在上下文这一层做文章——这正是它们能快速迭代、当天上线的原因。

可操作做法

学习与适应:① 先穷尽 in-context,再考虑记忆,最后才碰微调;② 显式反馈一定捕获并高权重存储(用户主动纠正是最贵的信号);③ 至少设计一种隐式反馈采集(复制率/重写率/追问率挑一个先埋点);④ 记忆要可召回、可遗忘(过时偏好要能更新淘汰);⑤ 进阶:把学习回路自动化(让评测分数驱动 prompt 改写,形成闭环)。

RAG:① 切分先按语义边界再调字数;② 检索质量先于一切,单独评测它(生成差八成是检索没捞对,先单测召回);③ 给注入留预算,排序截断(检索 20 块不等于全塞);④ 强制引用溯源(压幻觉 + 可 debug);⑤ 中文场景必须实测 embedding 和切分(默认配置多为英文调)。

元原则:两个模式都是「改上下文」而非「改模型」。想让 Agent「更聪明」时,第一反应不该是「换更大的模型」或「去微调」,而是「我给它的上下文里,缺了哪条经验(学习)或哪份知识(RAG)?」

织进本课

学习与适应 ↔ Module A 五层 L4 记忆 + harness 的 autoevolve。 路径 ② 记忆驱动适应,正是 A 五层 L4 记忆层的落地——长期记忆不是为了存数据,是让 Agent「记住该怎么做」。而 harness 方法论里的 autoevolve(prompt 自动进化) 本质就是把「反馈 → 改进策略」这条学习回路自动化:让评测结果反过来重写 prompt。学习不是模型独有的能力,工程脚手架一样可以「学」。

RAG ↔ Module B 上下文工程(Cursor 实战示例)+ A 五层 L4。 RAG 就是上下文工程在「外部知识」维度的标准实现。还记得 Cursor 实战示例里的 codebase 索引检索吗?Cursor 把整个代码仓切分、embedding、建索引,你提问时先检索相关片段再注入——那就是一套针对代码的 RAG。检索到的知识和长期记忆共享 L4 这个位置,区别只在记忆存「经验」、RAG 库存「知识」。

收口

Agent 不会因为模型更大就自动变聪明,它会因为你给它的上下文更对而变聪明。学习与适应把昨天的教训带到今天,RAG 把它本不知道的知识接到它面前——两者都不碰权重,都在上下文这一层做文章。所以这一讲是 Module B 上下文工程的两个最重要下游:一个对内攒经验,一个对外接知识。