返回知识库知识库

上下文压缩的基本原理

一次调用中发送给模型的所有内容都属于上下文(Context)。它是模型生成答案前读取的信息,也是模型执行当前任务时的工作记忆。

上下文压缩的基本原理

什么是上下文

一次调用中发送给模型的所有内容都属于上下文(Context)。它是模型生成答案前读取的信息,也是模型执行当前任务时的工作记忆。

在聊天场景中,上下文通常包含系统指令、此前的对话消息、工具返回结果,以及用户刚刚提出的新问题。

什么是上下文窗口

模型无法读取无限长的文本,单次调用能够接收和处理的 Token 数量有限。**上下文窗口(Context Window)**是指模型一次调用中能够处理的最大 Token 数量,可以把它理解为模型工作记忆的容量上限。

如果某个模型的上下文窗口限制为 8K Token,那么系统在一次调用中最多只能向模型提供约 8K Token 的内容。超出上限后,应用必须截断、筛选或压缩部分信息,才能继续加入新内容。

上下文的长度必须始终在上下文窗口之内。窗口就像一个盒子,上下文就是装进盒子里的内容。如何设计和管理这些内容,本身就是 AI 应用工程中的一项重要能力。

长时间对话的问题

假设正在构建一个需要连续运行的聊天机器人。随着对话不断延长,用户发送的每条消息和模型给出的每个答案都会加入上下文。上下文窗口的容量是固定的,但对话历史却会持续增长,最终必然接近窗口上限。

当新消息到达而窗口已经接近上限时,系统必须先腾出空间,才能继续加入新内容。上下文过多通常会带来三个问题:

1容量问题:模型无法接收超出窗口上限的新内容,系统可能报错,或者截断部分历史文本。

2成本和延迟问题:上下文越长,每轮调用需要处理的 Token 越多,响应通常越慢,成本也越高。

3注意力问题:大量历史信息可能干扰模型识别当前任务的重点,使关键指令被忽略。

最简单的解决方法及其局限

最简单的解决办法是:当窗口接近满载时,删除久远的消息,只保留最近的内容。这种方式通常被称为滑动窗口(Sliding Window)

问题在于,历史消息中往往包含后续任务仍然需要的信息。直接丢弃旧内容,不仅会丢失文字,还可能丢失用户偏好、任务目标、关键决策和已经完成的工作记录。

什么是上下文压缩

**上下文压缩(Context Compression)**是一种将较早的对话或中间过程缩减为简短摘要的技术。目标是在尽量保留重要事实的同时,为新的上下文腾出空间。

⚡ 核心思路

上下文压缩不是简单删除历史信息,而是用一份包含关键信息的短摘要替换冗长的原始记录。窗口腾出了空间,重要记忆仍被保留下来。

上下文压缩 = 上下文 + 压缩

“上下文”是模型当前能够读取的全部信息;“压缩”是将这些信息缩减到更小的规模。因此,上下文压缩就是在尽量保留关键信息的前提下,减少上下文所占用的 Token 数量。

如何进行上下文压缩

压缩历史文本最常见的方法是摘要(Summarization)。系统让模型读取较早的消息,并生成一份只保留关键事实、目标、决策和进度的简短记录。

例如,系统可以要求模型:“阅读这段历史对话,简要概括其中的重要事实。”模型返回的摘要随后会替换那段冗长的原始历史。

山下文压缩可以反复执行。下一次上下文再次接近上限时,系统可以将上一轮摘要与此后新增的消息合并,再生成一份更新、更短的摘要。通过周期性压缩,对话可以在有限的上下文窗口内持续更长时间。

上下文压缩的具体应用

上下文压缩已经广泛应用于现代AI智能体。

AI 智能体是一个借助大语言模型连续执行多个步骤的程序,例如读取文件、运行命令和修复代码。每个步骤都会向上下文中加入更多文本,随着任务推进,上下文会迅速增长。如果不进行压缩,早期设定的任务目标就可能因为截断或注意力分散而被遗漏。

因此,助手可以在后台执行上下文压缩,将先前的步骤总结成一条简短记录,例如:目标:修复登录错误。已修改 auth.pylogin.py相关测试已经通过。随后,助手只需携带这份摘要和近期的完整步骤继续工作。

还可以进一步保护部分内容,使其不参与压缩。例如,原始系统指令、用户的主要目标和最近的消息可以保留完整细节,只压缩中间那些冗长的过程记录。

💡 工程实践

成熟的智能体系统会提前规划上下文保留与压缩策略:保护任务目标、约束和关键决策,压缩可恢复的过程信息,并在需要时重新读取原始文件或工具结果。

对于应用体验的重要性

•让聊天机器人和智能体能够运行更长时间,降低超出上下文窗口的风险。

•保留重要事实,同时减少无关或重复信息。

•控制调用成本和响应延迟,因为模型每轮需要处理的 Token 更少。

•将固定的工作记忆限制转化为更持久、更连贯的对话体验。

上下文压缩解决的是一个非常实际的问题:如何在有限的工作记忆空间内进行长时间对话,同时尽量不遗忘重要信息。

关联阅读:

智能体记忆系统设计指南

智能体记忆优化策略(一)

智能体记忆优化策略(二)

智能体记忆优化策略(三)

[登录查看剩余 70% 内容](javascript:void (0);)