2026年7月9日 周四晚上19:30,报名腾讯会议了解“如何构建自进化的动态知识库(Brain)”(限30人)
免费POC, 零成本试错
FDE知识库

FDE知识库

学习大模型的前沿技术与行业落地应用


收藏

LangChain 的「记忆压缩术」:聊聊大模型的上下文工程设计之道

发布日期:2025-08-06 15:29:56 浏览次数: 2521
作者:编程与架构

微信搜一搜,关注“编程与架构”

推荐语

LangChain的「记忆压缩术」揭秘:如何让大模型更高效地处理上下文信息?

核心内容:
1. 上下文工程的四大核心策略:保存、筛选、压缩、隔离
2. LangGraph如何支持智能体的上下文管理
3. 过长上下文导致的三大性能问题及解决方案

杨芳贤
53AI创始人/腾讯云(TVP)最具价值专家

 

LangChain 的「记忆压缩术」:聊聊大模型的上下文工程设计之道


内容概览

智能体执行任务离不开 上下文。上下文工程(Context Engineering)既是一门艺术,也是一门科学,其核心在于,在智能体运行轨迹的每个步骤中,精准地将恰好适量的信息注入其上下文窗口。本文将通过回顾多个热门智能体实例及相关研究论文,解构上下文工程的四大核心策略——“保存、筛选、压缩、隔离”,并深入探讨 LangGraph 如何为这些策略提供强大支持!

image

上下文工程概览

正如安德烈・卡帕西(Andrej Karpathy)所言,大语言模型(Large Language Models - LLMs) 可视为一种新型操作系统。LLMs 本身如同 中央处理器 (CPU),而其 上下文窗口 (Context Window) 则类似 随机存取存储器 (RAM - Random Access Memory),充当模型的工作内存。如同 RAM 容量有限且需选择性加载数据一样,上下文窗口也有其大小限制。操作系统会精心管理加载到 RAM 中的内容;与之类似,我们可以将上下文工程视为在模型工作内存中进行精细管理的角色。卡帕西对此做出了精辟总结:

“上下文工程是一门精妙的艺术和科学,目标是在上下文窗口中为下一步操作填充恰好适量的信息。”

LLM 应用中的常见上下文类型

在构建 LLM 应用时,我们需要管理哪些类型的上下文呢?上下文工程作为一个宽泛概念,适用于以下几种主要的上下文类型:

• 指令 (Instructions):提示词(Prompts)、内存信息、少样本示例(Few-shot Examples)、工具描述等。

• 知识 (Knowledge):事实(Facts)、存储的信息等。

• 工具反馈 (Tool Feedback):工具调用后返回的信息。

image

智能体的上下文工程策略

随着 LLM 在推理和工具调用方面的能力持续提升,人们对智能体 (Agents) 的兴趣在(2025)年激增。智能体通过交替执行 LLM 调用 和 工具调用 (Tool Calls),通常用于处理长期运行的任务。它们会利用工具反馈 (Tool Feedback) 来决定后续的操作步骤。

image

然而,长期任务与不断累积的工具反馈通常意味着智能体会消耗大量 令牌 (Tokens)。这可能导致诸多问题:超出上下文窗口限制、增加成本/延迟,甚至降低智能体的性能。德鲁・布罗伊尼格(Drew Breunig)清晰地概述了过长的上下文可能导致的性能问题:

• 上下文污染 (Context Contamination):当幻觉信息混入上下文时。

• 上下文干扰 (Context Distraction):当信息过多超出模型的训练理解范围时。

• 上下文混淆 (Context Confusion):当冗余信息干扰决策时。

• 上下文冲突 (Context Conflict):当上下文内容相互矛盾时。

image

鉴于这些挑战,Cognition 公司指出了上下文工程的关键性:

“上下文工程” 实际上是构建 AI 智能体工程师的首要任务。

Anthropic 公司也明确强调:

智能体通常需要处理数百轮的对话,这要求精心设计的上下文管理策略。

那么,业界如何应对这一挑战?我们将当前智能体上下文工程的常见策略归纳为四类:写入 (write)、筛选 (Select)、压缩 (Compress) 和隔离 (Isolate),并通过热门智能体产品和研究论文举例说明。最后,我们将探讨 LangGraph 如何赋能这些策略!

image

核心策略一:写入上下文

保存上下文指将信息存储到上下文窗口之外,辅助智能体完成后续任务。

草稿本/暂存区 (Scratchpad)

人类在解决问题时会做笔记并记住信息以供未来相关任务参考。智能体也正逐步获得类似能力!通过“草稿本/暂存区”(Scratchpad)做笔记,是智能体在执行任务时持久化信息的一种方式,便于后续调用。Anthropic 的多智能体研究提供了一个清晰的例子:

首席研究员先制定解决方案计划,并将其保存到内存(Memory)中以实现持久化。因为超过 200,000 令牌的上下文会被截断,而保留该计划至关重要。

草稿本的实现方式多样:可以是写入文件的工具调用;也可以是运行时状态对象中的一个字段,在会话期间持久化。无论采用哪种方式,草稿本都能帮助智能体保存对完成任务有益的信息。

长期记忆 (Long-term Memory)

草稿本有助于智能体在特定会话(或线程) 中解决问题,但有时智能体也需要在多个会话中记住重要信息!Reflexion 论文提出了在每次智能体轮次后进行反思 (Reflection) 并复用这些自生成记忆的思想。生成式智能体会定期从过往的智能体反馈集合中合成记忆 (Synthesizing Memories)。

LLM 可用于更新或创建记忆

这一概念已被 ChatGPT、Cursor 和 Windsurf 等热门产品应用。这些产品都具备基于用户与智能体的交互,自动生成可跨会话持久化的长期记忆 (Long-term Memory) 的机制。

核心策略二:筛选上下文

筛选上下文指将特定信息拉入上下文窗口,以协助智能体完成当前任务。

从草稿本中筛选

筛选草稿本信息的方式取决于其实现。如果是工具调用,智能体可通过调用读取工具来获取内容;如果是智能体运行时状态的一部分,开发人员则可精细控制在后续轮次中向 LLM 展示状态的哪些部分。

从记忆中筛选

智能体若具备存储记忆的能力,也需要具备筛选与当前任务相关记忆的能力。这在多方面至关重要:智能体可选择少样本示例(情景记忆 - Episodic Memory) 作为期望行为的范例;选择指令(程序记忆 - Procedural Memory) 引导行为;或选择事实(语义记忆 - Semantic Memory) 作为相关上下文。

挑战在于确保筛选的记忆具有相关性。一些流行智能体仅固定拉取一小部分文件。例如,许多代码智能体会使用特定文件保存指令(程序记忆),或在某些情况下保存示例(情景记忆)。Claude Code 使用 CLAUDE.md;Cursor 和 Windsurf 则使用规则文件。

然而,如果智能体存储了大量事实和/或关系集合(例如,语义记忆),筛选挑战会显著增加。ChatGPT 是一个典型例子,它能存储并从海量的用户特定记忆中进行筛选。

嵌入(Embedding) 和/或 知识图谱(Knowledge Graph) 常用于记忆索引(Memory Indexing) 以辅助筛选。尽管如此,记忆筛选仍非易事。在人工智能工程师世界博览会(AI Engineer World’s Fair)上,西蒙・威利森(Simon Willison)分享了一个筛选失误的案例:ChatGPT 从其记忆中获取了他的位置信息,却意外将其注入到图像请求中。这种意外或不期望的记忆提取,可能会让用户觉得上下文窗口“不再专属”!

筛选工具

智能体依赖工具,但过多的工具选项可能导致负担。通常是由于工具描述重叠,引发模型在选择时的困惑。一种解决方法是对工具描述(Tool Descriptions) 应用 检索增强生成(Retrieval-Augmented Generation - RAG),仅获取与当前任务最相关的工具。近期研究论文表明,这可以将工具选择的准确性提高三倍。

筛选知识

检索增强生成(RAG) 本身就是一个重要的上下文工程挑战领域。代码智能体是 RAG 应用于大规模生产的优秀范例。来自 Windsurf 的瓦伦(Vaibhav)精辟地总结了相关挑战:

索引代码 ≠ 上下文检索......我们通过抽象语法树(Abstract Syntax Tree - AST) 解析代码,并沿着语义边界(Semantic Boundaries) 进行分块(Chunking)...... 随着代码库规模增长,仅依赖嵌入搜索(Embedding Search) 作为检索启发式方法(Heuristic)变得不可靠......我们必须组合多种技术,如 grep / 文件搜索、基于知识图谱的检索,以及一个重排序(Re-ranking)步骤(其中 [检索到的] 上下文根据相关性排序)。

核心策略三:压缩上下文

压缩上下文旨在仅保留执行当前任务必需的令牌。

上下文总结

智能体的交互可能跨越数百轮次,并消耗大量令牌用于工具反馈。总结(Summarization) 是应对此挑战的常用策略。Claude Code 用户可能已经见过实际应用:当上下文窗口利用率超过 95% 时,它会自动运行“压缩”,对整个用户与智能体的交互轨迹进行总结。可以在智能体轨迹中应用各种总结策略(如递归或分层总结)。

总结可应用的几个关键点

在智能体设计的特定节点添加总结非常有用,例如,对产生大量令牌的工具调用(如搜索结果)进行后处理(Post-processing);又如,Cognition 公司提到在智能体间信息传递的边界进行总结,以减少令牌数量。若需要保留特定事件或决策细节,总结会面临挑战。为此,Cognition 公司采用了微调模型(Fine-tuned Model),这凸显了实现这一步骤所需的付出。

上下文裁剪

总结通常借助 LLM 提取核心信息,而裁剪(Pruning) 则侧重于过滤或 “修剪(Pruning)” 上下文。可采取基于规则的启发式方法(Heuristics),例如删除较早的历史消息。德鲁・布罗伊尼格(Drew Breunig)还提到了 Provence(一个用于问答的、经过训练的上下文修剪器)。

核心策略四:隔离上下文

隔离上下文是指将上下文进行分割,以帮助智能体专注于特定任务。

多智能体系统

隔离上下文最流行的方法之一是采用多智能体系统(Multi-Agent System),在不同子智能体之间分配上下文。OpenAI 的 Swarm 库的一个核心理念就是关注点分离(Separation of Concerns):一组智能体负责特定的子任务,每个智能体拥有专属的工具集、指令集以及自己独立的上下文窗口。

在多个智能体之间分割上下文

Anthropic 的多智能体研究为此提供了理由:具备隔离上下文的多个智能体协同工作,通常优于单个智能体。这很大程度上源于每个子智能体的上下文窗口能专注于更窄的子任务。正如其博客所述:

[子智能体] 并行运行(Parallel Execution),各自拥有独立的上下文窗口,同时探索问题的不同侧面。

当然,多智能体也有其挑战,包括令牌消耗增加(如 Anthropic 报告,相比普通聊天模式可高出 15 倍)、需要精心的提示词工程(Prompt Engineering) 来规划子智能体工作,以及子智能体之间的协调(Coordination)。

与模型隔离的环境上下文

Hugging Face 的研究员提出了另一个巧妙的上下文隔离示例。多数智能体使用工具调用 API,返回的 JSON 对象(包含工具参数)会被传递给实际工具(如搜索 API)以获取工具反馈(如搜索结果)。Hugging Face 采用 CodeAgent,其输出直接包含待执行的工具调用代码。该代码在沙箱(Sandbox) 环境中运行,工具调用的结果上下文(例如返回值)随后传回 LLM。

沙箱可以将运行环境上下文与 LLM 隔离,这使得运行环境中的上下文(尤其是大体积对象)能与 LLM 核心处理隔离。

智能体状态

值得一提的是,智能体的 运行时状态对象(Runtime State Object) 本身也是隔离上下文的有效方式。它可以起到类似沙箱的作用。开发者可以设计一个包含字段的模式,其中某些字段(例如 messages)会在每个轮次展现给 LLM,而其他字段则隔离信息,仅在被显式调用时使用。

利用 LangSmith / LangGraph 实现上下文工程

如何实践上述策略?有两个基础准备非常关键。首先,拥有监控数据和追踪智能体令牌使用情况的能力,这有助于识别应用上下文工程的最佳位置。LangSmith 是智能体追踪(追踪/可观测性 Tracing/Observability)的理想工具。其次,需要一种简便的方法来测试上下文工程策略对智能体性能的影响。LangSmith 支持智能体评估(Agent Evaluation),可用来衡量相关工作的效果。

保存上下文

LangGraph 在设计之初就考虑了线程范围(Thread Scope) 的(短期)记忆和长期记忆(Long-term Memory)。其检查点(Checkpoint) 机制可持久化智能体在每一步的状态,这相当于一个“草稿本/暂存区”,允许您在智能体运行轨迹的任意步骤写入或读取状态信息。

LangGraph 的长期记忆机制支持在多个智能体会话间持久化上下文。它灵活性强,可用于保存少量文件(如用户配置文件或规则)或大型的记忆集合。此外,LangMem 提供了丰富的抽象,极大简化了 LangGraph 记忆管理的复杂性。

筛选上下文

在 LangGraph 智能体的每个节点(Node)(即执行步骤)中,您都可以访问当前状态。这使您能够在智能体的每个步骤中,精细控制呈现给 LLM 的具体上下文内容。

此外,LangGraph 的长期记忆在每个节点中都可访问,并支持多种检索(Retrieval) 类型(如获取特定文件、基于嵌入的记忆集合查询)

对于工具选择,LangGraph Bigtool 库提供了对工具描述进行语义搜索(Semantic Search) 的出色方案。这在管理大型工具集时,助力筛选与任务最相关的工具。

压缩上下文

LangGraph 作为底层的编排框架(Orchestration Framework),允许您将智能体设计为一组节点,定义每个节点内部的逻辑,并制定节点间传递的状态对象。这种高度可控性为实现上下文压缩提供了多种途径。

image

一种常见做法是将消息列表作为智能体状态,利用内置功能(如 StateGraph 的内置机制或特定节点)对其进行周期性总结或修剪。此外,您也可以在特定位置(如工具调用节点内部或轮次衔接处)添加逻辑,对工具反馈或智能体工作阶段进行后处理(Post-processing):例如,增设专门的总结节点,或在工具调用逻辑内添加总结步骤以压缩其输出。

隔离上下文

LangGraph 围绕状态对象(State Object)设计,允许您指定状态模式(Schema)并在每一步访问该状态。例如,您可以将工具调用的详细上下文(如大型 JSON 对象或二进制数据)存储在状态的某些特定字段中,使其与 LLM 隔离,直到后续步骤真正需要使用时才引入。

image

结尾

上下文工程已成为智能体构建者亟需掌握的核心技能。本文介绍了当今众多热门智能体中普遍应用的四大策略:

• 保存上下文:将信息存储到上下文窗口之外,供智能体后续任务使用。

• 筛选上下文:将相关信息拉入上下文窗口,辅助智能体进行当前任务。

• 压缩上下文:通过总结或裁剪,仅保留任务所需的核心令牌。

• 隔离上下文:通过多智能体、沙箱或状态管理进行上下文分割。

LangGraph 使实施上述策略变得便捷高效,而 LangSmith 则提供了一套强大的工具,用于测试智能体和追踪上下文使用情况。两者协同形成了一个良性反馈循环:LangSmith 帮助识别应用上下文工程的最佳点 -> LangGraph 实现策略 -> LangSmith 评估效果 -> 不断优化迭代。

53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询

扫码登录
登录即表示您同意《53AI网站服务协议》
服务协议

欢迎您使用【53AI 官方网站】(以下简称“本网站”或“我们”)。本《会员服务协议》(以下简称“本协议”)是您(以下简称“会员”或“用户”)与【深圳市博思协创网络科技有限公司】之间关于注册、登录及使用本网站会员服务所订立的法律协议。

在您注册或登录前,请务必审慎阅读、充分理解各条款内容,特别是免除或限制责任的条款、知识产权条款、争议解决条款等。此类条款将以加粗形式提示您注意。 当您通过微信公众号授权、手机验证码验证或其他方式成功登录本网站时,即视为您已完全理解并同意接受本协议的全部内容。

一、 定义

本网站:指由【深圳市博思协创网络科技有限公司】运营的,域名为【53ai.com】的网站及相关移动端页面。

会员服务:指本网站向注册会员提供的知识库文章查阅、内容检索及其他相关增值服务。

知识库内容:指本网站发布的包括但不限于文字、图表、数据、研究报告、行业分析等数字化内容资源。

二、 账号注册与登录

登录方式:本网站支持以下登录方式,您可根据实际情况选择:

微信公众号授权登录:您同意将您的微信OpenID信息授权给本网站,用于创建或关联会员账号。

手机验证码登录:您需提供真实有效的手机号码,并通过短信验证码完成身份验证与登录/注册。

账号安全:您的账号仅限您本人使用,禁止赠与、借用、租用、转让或售卖。因您保管不善导致的账号被盗、密码泄露等损失,由您自行承担。

实名认证:根据相关法律法规要求,我们可能要求您在特定功能下完成实名认证。如您拒绝提供,可能无法使用部分或全部服务。

未成年人保护:若您未满18周岁,请在法定监护人的陪同下阅读本协议,并在征得监护人同意后使用本服务。

三、 服务内容与规范

知识库查阅权限:会员登录后,有权按照其会员等级对应的权限范围,在线浏览、检索本网站知识库中的相关文章及内容。

服务变更:我们有权根据业务发展需要,调整、变更或终止部分服务内容,并将以网站公告、公众号消息等方式提前通知。

禁止行为:您在使用服务时不得实施以下行为:

利用技术手段批量爬取、下载、转存知识库内容;

将知识库内容用于商业目的或未经授权地向第三方传播;

干扰本网站正常运行或侵犯其他用户合法权益;

发布违法违规信息或从事违反公序良俗的活动。

四、 知识产权声明

权利归属:本网站知识库中的排版设计、软件代码等内容的知识产权均归【公司全称】或原权利人所有,受《中华人民共和国著作权法》等法律保护。

有限许可:本网站授予会员一项非独占、不可转让、不可转授权的普通许可,仅限于个人学习、研究之目的在线查阅知识库内容。

侵权追责:未经书面许可,任何单位或个人不得以任何形式复制、转载、摘编、镜像、汇编或以其他方式使用上述内容。一经发现,我们保留追究其法律责任的权利。

五、 个人信息保护

我们重视对您个人信息的保护。关于我们如何收集、使用、存储和保护您的个人信息,请单独阅读 《隐私政策》。

您通过微信公众号授权或手机号验证所提供的信息,我们将严格按照《个人信息保护法》的规定处理,仅用于身份识别、服务提供及安全验证等必要用途。

您可以随时通过网站设置或联系客服行使查阅、更正、删除个人信息及撤回授权同意的权利。

六、 免责声明

内容准确性:知识库内容仅供参考,不构成专业建议。我们不对其完整性、准确性、时效性作任何明示或暗示的保证,您应自行判断并承担使用风险。

不可抗力:因自然灾害、政策法规变化、网络故障、第三方平台接口异常(如微信接口维护、运营商短信通道故障)等不可抗力导致的服务中断或延迟,我们不承担违约责任。

第三方链接:本网站可能包含指向第三方网站的链接,该等网站的内容和服务不受我们控制,请您自行甄别风险。

七、 违约责任

如您违反本协议约定,我们有权视情节采取警告、限制功能、暂停服务、注销账号等措施,并保留要求赔偿损失的权利。

如因您的违约行为导致我们遭受行政处罚、第三方索赔或商誉损失,您应承担全部赔偿责任(包括但不限于罚款、赔偿金、律师费、公证费等)。

八、 法律适用与争议解决

本协议的订立、执行和解释均适用中华人民共和国大陆地区法律。

因本协议产生的或与本协议有关的任何争议,双方应友好协商解决;协商不成的,任何一方均可向【公司所在地】有管辖权的人民法院提起诉讼。

九、 其他

本协议构成双方就本服务达成的完整协议,取代此前任何口头或书面约定。

本协议任一条款被认定为无效或不可执行的,不影响其他条款的效力。

我们对本协议享有最终解释权,并在法律允许的范围内保留随时修改的权利。修改后的协议一经公布即生效,继续使用服务即视为同意修订内容。


已查阅