大家有没有经常感觉到,跟 AI 在一个窗口中进行长时间聊天时,它会「忘记」你们之前聊过的内容?
这个现象其实并不神秘,它和模型上下文窗口有关系。
什么是上下文窗口?
简单来说,上下文窗口(Context Window) 就是大模型能够「记住」的文本量,它决定了 AI 能看到和「记住」多少内容。
这些文本不是按字数来算的,而是按 Token(词元)来算的。一个 Token 可能是一个字、一个词,甚至是一个标点符号。对于中文来说,一般一个汉字就是一个 Token。
可参考 DeepSeek 官方文档给出的简单换算公式:
- 1 个英文字符 ≈ 0.3 个 Tokens。
- 1 个中文字符 ≈ 0.6 个 Tokens。
举个简单的例子:就像你和朋友聊天,如果你的记忆只能记住最近说过的 100 句话,那么第 101 句以前的内容你就会忘记。大模型的上下文窗口也是这样工作的。
图解上下文窗口:一看就懂
Claude 官网文档给出了一个非常直观的图示:
图 1:上下文窗口工作原理示意图(来源:Claude 官方文档)
图中淡黄色部分就是模型上下文窗口大小,这个窗口是随着我们聊天不断移动的(也叫"滑动窗口")。
为什么上下文窗口很重要?
上下文窗口的大小直接影响着大模型的实际应用能力。让我们看几个具体场景:
- 文档处理:如果你想让 AI 帮你总结一份 100 页的 PDF 文档,但模型的上下文窗口太小,就无法一次性处理这么多内容。
- 持续对话:在长时间的对话中,如果上下文窗口较小,模型就会"遗忘"早期的对话内容,导致对话连贯性被打断。
- 复杂任务处理:随着 AI 助手(Agent/智能体)应用的发展,以及各种工具的接入,我们需要模型能够同时处理更多信息。
下面这张图展示了现代 AI 应用中的上下文窗口使用情况:
图 2:现代 AI 应用中的上下文窗口使用示意图。窗口需要同时容纳用户输入、系统提示、思维链和工具调用等多种信息,这对窗口大小提出了更高要求。(来源:Claude 官方文档)
随着 Agent 应用爆发增长,各种场景的需求也越来越复杂,加上 MCP(Model Context Protocol,模型上下文协议)和各种工具的使用,导致了我们需要大模型具有更大的上下文窗口。
所以近期推出的各大模型都在扩大窗口大小,比如最近推出的 GPT-4.1 最大支持 100 万 (1,048,576 = 100 1024 1024) 的上下文窗口。
长上下文窗口的优缺点
上下文窗口增大是个好事,给了我们更大的自由度:
- 处理长文本的能力:可以一次性理解更长的文章、报告或代码。
- 记住更长的对话:在 Agent 应用中,大模型可以记住多轮对话的上下文,从而更好地理解用户的需求。
- 更好地理解复杂问题:当你需要 AI 解决复杂问题时,它可以把所有相关信息都放在「脑子」里一起考虑。
随着上下文窗口变大,虽然模型能记住更多东西,但也不是说我们塞给大模型的内容越多越好,其中表现在以下几个方面:
- 速度变慢:上下文信息越多,处理时间就越长。
- 成本增加:上下文信息越多,就意味着消耗的 Tokens 就越多,大模型是按 Token 计费的。
- 注意力分散:人在处理太多信息时会分心,AI 也一样。研究发现,即使上下文窗口很大,模型也倾向于更多关注最前面和最后面的内容,而「忽略」中间部分。
如何更好地利用上下文窗口?
在实际应用中,我们需要在功能和成本之间找到平衡点。以下是一些实用建议:
提供清晰的指令
- 明确标注重要信息
- 使用结构化的提示语
优化信息组织
- 将核心信息放在开头或结尾
- 采用清晰的层次结构
合理使用外部记忆
- 定期总结关键信息
- 利用外部存储系统(如 GPT 的用户偏好记忆系统)
未来展望
在解决了"量"的问题之后,上下文窗口的发展更应该关注"质"的提升。
我期望的理想的 AI 系统应该能够:
- 像人类一样进行选择性记忆。
- 智能地提取和组织信息。
- 在必要时主动回顾历史信息。
随着技术的进步,期待能早日看到更智能的记忆管理机制出现。
希望这篇文章对你有帮助。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。