大家有没有经常感觉到,跟 AI 在一个窗口中进行长时间聊天时,它会「忘记」你们之前聊过的内容?

这个现象其实并不神秘,它和模型上下文窗口有关系。

什么是上下文窗口?

简单来说,上下文窗口(Context Window) 就是大模型能够「记住」的文本量,它决定了 AI 能看到和「记住」多少内容。

这些文本不是按字数来算的,而是按 Token(词元)来算的。一个 Token 可能是一个字、一个词,甚至是一个标点符号。对于中文来说,一般一个汉字就是一个 Token。

可参考 DeepSeek 官方文档给出的简单换算公式:

  • 1 个英文字符 ≈ 0.3 个 Tokens。
  • 1 个中文字符 ≈ 0.6 个 Tokens。

举个简单的例子:就像你和朋友聊天,如果你的记忆只能记住最近说过的 100 句话,那么第 101 句以前的内容你就会忘记。大模型的上下文窗口也是这样工作的。

图解上下文窗口:一看就懂

Claude 官网文档给出了一个非常直观的图示:

上下文窗口示意图
图 1:上下文窗口工作原理示意图(来源:Claude 官方文档)

图中淡黄色部分就是模型上下文窗口大小,这个窗口是随着我们聊天不断移动的(也叫"滑动窗口")。

为什么上下文窗口很重要?

上下文窗口的大小直接影响着大模型的实际应用能力。让我们看几个具体场景:

  1. 文档处理:如果你想让 AI 帮你总结一份 100 页的 PDF 文档,但模型的上下文窗口太小,就无法一次性处理这么多内容。
  2. 持续对话:在长时间的对话中,如果上下文窗口较小,模型就会"遗忘"早期的对话内容,导致对话连贯性被打断。
  3. 复杂任务处理:随着 AI 助手(Agent/智能体)应用的发展,以及各种工具的接入,我们需要模型能够同时处理更多信息。

下面这张图展示了现代 AI 应用中的上下文窗口使用情况:

复杂场景下的上下文窗口
图 2:现代 AI 应用中的上下文窗口使用示意图。窗口需要同时容纳用户输入、系统提示、思维链和工具调用等多种信息,这对窗口大小提出了更高要求。(来源:Claude 官方文档)

随着 Agent 应用爆发增长,各种场景的需求也越来越复杂,加上 MCP(Model Context Protocol,模型上下文协议)和各种工具的使用,导致了我们需要大模型具有更大的上下文窗口。

所以近期推出的各大模型都在扩大窗口大小,比如最近推出的 GPT-4.1 最大支持 100 万 (1,048,576 = 100 1024 1024) 的上下文窗口。

长上下文窗口的优缺点

上下文窗口增大是个好事,给了我们更大的自由度:

  1. 处理长文本的能力:可以一次性理解更长的文章、报告或代码。
  2. 记住更长的对话:在 Agent 应用中,大模型可以记住多轮对话的上下文,从而更好地理解用户的需求。
  3. 更好地理解复杂问题:当你需要 AI 解决复杂问题时,它可以把所有相关信息都放在「脑子」里一起考虑。

随着上下文窗口变大,虽然模型能记住更多东西,但也不是说我们塞给大模型的内容越多越好,其中表现在以下几个方面:

  1. 速度变慢:上下文信息越多,处理时间就越长。
  2. 成本增加:上下文信息越多,就意味着消耗的 Tokens 就越多,大模型是按 Token 计费的。
  3. 注意力分散:人在处理太多信息时会分心,AI 也一样。研究发现,即使上下文窗口很大,模型也倾向于更多关注最前面和最后面的内容,而「忽略」中间部分。

如何更好地利用上下文窗口?

在实际应用中,我们需要在功能和成本之间找到平衡点。以下是一些实用建议:

  1. 提供清晰的指令

    • 明确标注重要信息
    • 使用结构化的提示语
  2. 优化信息组织

    • 将核心信息放在开头或结尾
    • 采用清晰的层次结构
  3. 合理使用外部记忆

    • 定期总结关键信息
    • 利用外部存储系统(如 GPT 的用户偏好记忆系统)

未来展望

在解决了"量"的问题之后,上下文窗口的发展更应该关注"质"的提升。

我期望的理想的 AI 系统应该能够:

  • 像人类一样进行选择性记忆
  • 智能地提取和组织信息。
  • 在必要时主动回顾历史信息。

随着技术的进步,期待能早日看到更智能的记忆管理机制出现。

希望这篇文章对你有帮助。


老司机的新赛道
1 声望0 粉丝