【学习笔记-AI工程化系列】RAG 只是 Context Engineering 的一小块-5/16

发布时间:2026/10/6 2:33:28

【学习笔记-AI工程化系列】RAG 只是 Context Engineering 的一小块-5/16 很多团队做 AI 应用第一反应是模型不知道业务知识那就上 RAG。这当然没错。如果模型没有看到公司文档、产品手册、历史工单、代码说明它不可能稳定回答这些问题。但问题在于很多系统上了 RAG 之后效果还是不稳定。表现通常是这样检索结果看起来相关。 模型回答却漏掉关键条件。 同一问题换个说法引用来源就变了。 旧文档和新文档冲突模型自己编一个折中答案。 用户追问时系统忘了上一轮已经确认过的事实。这时候继续调 embedding、换向量库、改 top_k不一定能解决问题。因为真正的问题可能不是“有没有检索到”。而是检索结果如何进入当前推理步骤这就是为什么我说RAG 只是 Context Engineering 的一小块。一、RAG 解决什么不解决什么RAG 的核心动作很简单Retrieval-Augmented Generation先检索再生成。它解决的是模型知识边界问题。比如模型训练时不知道你的内部文档。 模型不知道你昨天刚改的 API。 模型不知道客户合同里的特殊条款。 模型不知道某个项目里的真实代码结构。RAG 可以把这些外部信息找回来。但它不自动解决后面的事。检索回来之后系统还要回答一串更细的问题哪些片段可信 哪些片段过期 哪些片段互相冲突 哪些片段应该进入上下文 哪些只应该作为引用留在外部 哪些需要进一步查证 哪些应该更新任务状态 哪些不应该让模型看到这些不是 retrieval 的问题这是 context assembly 的问题即上下文装配。二、很多失败发生在装配层一个典型的 RAG 管道长这样User Query - Rewrite Query - Retrieve Chunks - Rerank - Assemble Context - Generate Answer - Cite Sources很多团队会把精力放在前半段。怎么切块用什么 embeddingtop_k 设多少、要不要 hybrid search、要不要 rerank。这些都重要但真正进入模型的不是“检索系统”而是装配后的上下文。如果装配层粗糙再好的检索也会被浪费。常见粗糙做法是取 top 10。 拼成一段。 塞进 prompt。 让模型回答。这在 demo 里可以跑。进生产就容易出事。因为 top 10 不代表当前步骤都需要。排名靠前不代表可信。语义相关不代表能回答问题。同一主题下不同版本的文档可能互相冲突。内部文档、网页、用户输入、数据库记录的可信等级也不一样。如果这些边界没有进入上下文装配模型只能自己猜。三、RAG、MCP、File Search、Memory 不是一回事做 Context Engineering先要把几个概念分开。3.1 RAG。它主要解决从知识库中找相关文本片段。3.2 File Search。它更像一个托管检索能力帮助你从文件集合里找内容。它仍然属于 retrieval。3.3 MCP。MCP 不是 RAG它是让 Agent 连接外部数据源和工具的协议层。通过 MCPAgent 可以访问文件系统 数据库 代码仓库 业务 API 设计系统 工单系统 浏览器这些连接里有些是检索有些是工具调用有些会产生副作用不能混成一个“知识库”。3.4Memory。Memory 也不是 RAG。Memory 解决的是跨步骤、跨任务保留状态。比如用户偏好 项目约定 历史决策 失败案例 长期画像这些信息可以被检索出来但它们的生命周期和普通文档不同。长期记忆必须支持更新、过期、删除和审计。3.5 Database Query。数据库查询不是“相似内容搜索”。它通常要求精确、可解释、可权限控制。比如查询订单状态 查询某个客户的合同条款 统计过去 7 天错误率这种场景用向量检索硬凑往往会制造不确定性。四、只读知识库和可执行工具要分开这是生产 Agent 里非常重要的一条边界。知识库是只读的。工具可能会行动。比如查文档只读 查数据库通常只读但要看权限 创建工单有副作用 修改配置有副作用 发送邮件有副作用 执行 shell高风险副作用如果系统把所有外部能力都叫“上下文”就会失去风险分层。模型看到一个结果片段和模型能调用一个工具不是同一件事。前者影响回答后者影响世界。所以上下文系统至少要标记source_type: document / memory / database / tool_result / user_input trust_level: high / medium / low freshness: timestamp or version permission: read / write / execute side_effect: none / reversible / irreversible这些元数据不是给人看的装饰它们应该影响上下文装配。比如用户输入和网页内容默认不能覆盖系统规则。比如低可信来源可以参与参考但不能独立支撑结论。比如过期文档需要提示模型“可能失效”。比如有副作用的工具结果要进入执行日志而不是混进长期知识库。五、Agentic Retrieval让 Agent 决定查什么传统 RAG 更像一次检索用户问一句。 系统查一次。 模型答一次。Agentic retrieval 更像一个小循环。Agent 会判断现在缺什么事实 应该查哪个源 关键词要不要改写 第一轮结果是否足够 是否需要查原文 是否需要查数据库验证 是否需要停止检索并回答这和人做研究更像你不会只搜一次就下结论你会先扫一批资料发现关键概念再换关键词查。看到冲突时查源头。最后只把真正能支撑结论的证据放进报告。Agentic retrieval 的关键不是“让模型无限查”。而是给它一个检索预算和停止条件最多查几轮 必须找到什么类型的证据 什么时候认为信息不足 什么时候必须引用来源 什么时候应该问用户澄清没有这些约束Agentic retrieval 会变成“看起来很努力的搜索循环”。六、引用不是装饰是验证接口很多 RAG 系统会在回答末尾放几个引用。但引用经常只是装饰。真正有用的引用应该满足三个条件。6.1 答案里的关键结论能映射到具体来源。不是整篇文章附在后面。而是这个判断来自哪一段 这个数字来自哪个表 这个限制来自哪条政策6.2 引用要保留版本和时间。尤其是政策、价格、接口文档、法律条款、产品说明。6. 3 引用要参与验证。生成答案后系统应该能检查每个关键事实是否有来源 来源是否真的支持这个结论 来源之间是否冲突 模型是否把来源没有说的话补出来了这就是证据链。七、常见反模式7.1 一次塞入过多片段。top_k 设得越大不一定越安全片段越多冲突越多噪声越多模型越容易失焦。7.2 没有来源引用。没有引用的 RAG很难调试你不知道是没检索到还是模型没用还是模型用了但理解错了。7.3 检索结果不参与验证。检索只是回答前的一步验证应该发生在回答后。7.4 混淆长期记忆和临时上下文。一次任务里的临时偏好不应该自动写入长期记忆长期记忆里的旧偏好也不应该无条件覆盖当前用户指令。7.5 把工具结果当知识库。工具结果是某次执行的事实它需要记录但不一定应该成为长期知识。7.6 把用户输入当可信资料。用户上传的文档、网页内容、PR 描述都可能包含不可信指令。它们是数据不是系统规则。八、一个更健康的 RAG 上下文管道我建议把 RAG 放进完整上下文管道里User Goal - Query Planning - Source Selection - Retrieval - Rerank - Evidence Selection - Context Assembly - Answer Generation - Citation Check - Memory / State Update注意这里有三个关键变化。8.1 先选 source再检索。不是所有问题都查同一个向量库。产品问题查产品文档客户问题查 CRM 和合同代码问题查仓库和测试历史偏好查 memory。8.2 先选 evidence再装配 context。检索结果是候选不是所有候选都进上下文。8.3 回答后再更新状态。如果本轮确认了新事实要写入任务状态如果发现文档冲突要记录 open issue如果用户纠正了偏好要考虑是否更新长期记忆。九、实践 checklist设计 RAG 系统前先问这些问题[ ] 用户问题应该查哪些来源 [ ] 每个来源的可信等级是什么 [ ] 检索结果是否带版本、时间和来源 [ ] top_k 之后是否有 rerank 或 evidence selection [ ] 片段之间冲突时怎么处理 [ ] 回答里的关键结论是否必须引用 [ ] 引用是否参与自动或人工验证 [ ] 临时上下文和长期记忆是否分开 [ ] 工具结果是否进入执行日志而不是直接进知识库 [ ] 信息不足时系统是承认不足还是强行回答这张表比“用哪个向量数据库”更重要向量数据库是基础设施上下文装配才决定模型到底看见什么。十、从 RAG 到 Context EngineeringRAG 不是过时恰恰相反它仍然是很多 AI 系统最重要的基础能力之一。但它不是完整答案。在生产系统里RAG 应该被放进更大的 Context Engineering 框架Retrieve 是取回候选材料。 Assemble 是决定当前步骤看什么。 Verify 是确认材料支撑结论。 Update 是把新状态写回系统。下一篇我们继续 Context Engineering 的另一个核心问题长上下文时代的压缩、缓存与遗忘。窗口变大以后很多人以为可以不再管理上下文。实际正好相反能放更多意味着更需要知道什么时候压缩什么时候缓存什么时候忘掉。参考资料Effective context engineering for AI agents | Anthropic EngineeringContext engineering for agents | LangChainModel Context ProtocolOpenAI Agents and Responses API docs参考文献RAG 只是 Context Engineering 的一小块
延伸阅读

更多相关文章

2026/10/6 3:43:32

Python+PySpark+DeepSeek-R1实现弹幕情感分析与推荐系统

每年到这个时间点,总有学弟学妹拿着差不多的题目来问我:能不能用 Python 做弹幕情感分析,能不能把大模型接进去,能不能再加一个推荐系统和一个可视化大屏凑成一整套毕业设计。说实话,这种题目现在很常见,但…

2026/10/6 3:43:32

Notepad++ Markdown插件安装与预览:轻量级写作环境搭建指南

简介:面向需要在Notepad中编写Markdown文档的开发者和IT从业者,这款资源提供了一套轻量且可扩展的Markdown编辑增强方案,特别适合日常技术写作、项目README维护和博客素材整理。压缩包共含2个文件,分别是dll插件核心与xml语法高亮…

2026/10/6 3:43:32

Flutter鸿蒙开发实践:报销单生成器跨平台落地要点

最近刚把一版用 Flutter 做的报销单生成器 APP 跑到鸿蒙真机上,整个过程可以算是典型的跨平台方案落地:业务逻辑全部复用,平台差异只留在文件目录和系统能力调用那一层。做这个小项目之前,我对鸿蒙适配多少有些犹豫,担…

2026/10/6 3:43:32

跨数据库SQL优化:四大引擎的索引、执行计划与等待事件实战指南

把Oracle上跑得顺滑的SQL原封不动扔到SQL Server里,结果慢了十几倍,客户当场质疑你是不是换了一台渣服务器——这种事我经历过不止一次。换成MySQL,表现可能又不一样。锅从来不在“机器性能”,而在于每个数据库引擎各自那套存储模…

2026/10/6 3:43:32

EIG算法详解:拜占庭容错共识的奠基之作

最近重新翻到 Pease、Shostak 和 Lamport 在 1980 年发表的这篇《Reaching Agreement in the Presence of Faults》,越读越觉得有意思。这几年分布式系统、区块链、共识算法的文章铺天盖地,但很多人一上来就聊 PBFT、Raft、HotStuff,却很少有…

2026/10/6 3:38:32

Windows与VMware Ubuntu虚拟机文件共享方案详解

本地win系统和vmware 虚拟机 ubuntu实现文件共享这事儿,我前前后后在好几台机器上折腾过,踩过的坑能写小半本笔记。先说结论:如果你还在用U盘来回拷、靠微信传文件、或者每次都在虚拟机里开个网盘下载,那这篇文章就是给你准备的。…

2026/10/5 6:32:56

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/4 0:01:02

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/5 17:38:27

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 0:03:23

MR25H40CDF+STM32F031C6工业级高可靠数据存储方案

1. 项目概述:为什么在工业现场非得用 MR25H40CDF 配 STM32F031C6 做数据存储?在工厂产线的 PLC 控制柜里、在风电变流器的散热片背面、在矿井监测终端的金属外壳下,你经常能看到一块指甲盖大小的黑色芯片——它既不是 Flash,也不是…

2026/10/6 0:03:23

MRAM+STM32工业断电数据保全实战指南

1. 项目概述:为什么在工业现场非得用 MR25H40CDF 配 STM32F031C6 做数据存储?在工厂产线的PLC柜里、在野外无人值守的环境监测终端里、在高速运转的包装机控制板上,你经常能看到一块指甲盖大小的黑色芯片,旁边贴着“MR25H40CDF”丝…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑