03 - Context 与 Context Window:大模型的“临时记忆“
讲了agent的原理之一,上下文的记忆等等
这是"从 LLM 到 Agent Skill"系列的第三篇。前两篇讲了 LLM 是"文字接龙"引擎,Token 是文本的最小单位。这一篇来解答一个更贴近使用体验的问题:为什么 ChatGPT 能"记住"你刚才说了什么?以及——它到底能记多少?
一、大模型是没有记忆的
先讲一个反直觉的事实:
大语言模型本身是无状态的。它没有任何"记忆"。
每一次你发送消息,模型都是从零开始计算的。它不记得上一轮对话的内容,不记得你是谁,不记得五分钟前你让它做了什么。
那为什么你在 ChatGPT 里聊天,它能接上你的上下文?为什么你上一句说"我叫小明",下一句它就能叫出你的名字?
答案不在模型内部,而在模型外面。
二、Context(上下文):模型的"临时记忆体"
2.1 Context 的构成
每次你跟 AI 对话,当你在输入框打完字按下发送键,后台实际发生的事情是:
程序把你这一轮之前所有相关的东西打包在一起,一次性发给模型。这个信息包,就叫 Context(上下文)。
Context 通常包含以下内容:
┌─────────────────────────────┐ │ System Prompt(系统提示词) │ ← 模型的人设和规则 ├─────────────────────────────┤ │ 第 1 轮:用户问题 │ │ 第 1 轮:模型回答 │ ├─────────────────────────────┤ │ 第 2 轮:用户问题 │ │ 第 2 轮:模型回答 │ ├─────────────────────────────┤ │ …… │ ├─────────────────────────────┤ │ 当前轮:用户刚输入的问题 │ ← 你刚刚打的字 └─────────────────────────────┘
所以模型之所以看起来有"记忆"——
不是因为模型记住了什么,而是因为你把"记忆"重新发送给了模型。
每一轮对话,你都在把整段对话历史重新"喂"给模型。这是 AI 对话最核心的设计模式。
2.2 一个形象比喻:金鱼记忆
大模型有点像一条"金鱼"——或者说,像《记忆碎片》里的主角。
每一次对话回合,它都像刚从睡梦中醒来。你递给它一张纸条,上面写着你们之前所有对话的完整记录。它看完纸条,接上你的话,假装一直醒着。
但只要你把纸条上的某段历史删掉——它也就彻底"失忆"了。
三、Context Window(上下文窗口):记忆的上限
3.1 什么是 Context Window?
既然每轮都要把历史打包发给模型,自然就有一个问题:能打包多少?
这个上限,就是 Context Window(上下文窗口)。
Context Window 定义了 Context 能容纳的最大 Token 数量。
3.2 Context Window 的演进
Context Window 在过去几年经历了惊人的膨胀:
| 时期 | 代表模型 | Context Window | 大约能装多少中文 |
|---|---|---|---|
| 2022 | GPT-3.5 | 4K Token | ~6,000 字 |
| 2023 | GPT-4 | 8K~32K Token | ~1.2 万~4.8 万字 |
| 2024 | GPT-4-Turbo / Claude 3 | 128K~200K Token | ~19 万~30 万字 |
| 2025 | Gemini / Claude 4 / Kimi | 1M Token+ | ~150 万字+ |
150 万汉字是什么概念?大约是一部《哈利波特与魔法石》的全文。也就是说,你可以把整本书粘贴进对话框(当然,前提是你的客户端支持)。
四、超长文档的问题:成本与注意力
Context Window 越来越大,那是不是什么问题都解决了?
不是。有两个核心问题:
4.1 成本
大模型 API 按 Token 计费。每次把 10 万字的文档完整塞进 Context,光输入成本就很可观。而且大部分内容跟当前问题无关。
4.2 注意力分散
更有意思的一个问题是"注意力稀释"。
Transformer 的注意力机制虽然强大,但当 Context 中充斥着大量与当前问题无关的信息时,模型的表现反而会下降。就像一个学生开卷考试,给了他整本教材——他反而找不到重点。
业界有一个很形象的说法:
"Lost in the Middle"(迷失在中间)
研究表明,大模型对 Context 开头和结尾的信息关注度最高,对中间部分的信息反而容易忽略。你把关键文档放在中间,可能白放了。
五、RAG:不塞全文,只取精华
这就引出了一个非常重要的技术方案——RAG。
5.1 RAG 是什么?
RAG(Retrieval-Augmented Generation,检索增强生成) 不把整个文档塞进 Context Window,而是:
1. 用户提问:"公司去年的营收是多少?" ↓ 2. 检索系统从知识库中找出最相关的几个段落 ↓ 3. 只把这些段落放入 Context,发给模型 ↓ 4. 模型基于这些精选信息生成回答
5.2 RAG vs 全文塞入
| 全量塞入 Context | RAG | |
|---|---|---|
| Token 消耗 | 极高 | 低 |
| 回答准确性 | 信息过多可能降低 | 相关性强,效果好 |
| 实时性 | 依赖静态文档 | 可以从实时更新的知识库检索 |
| 适用场景 | 短文档 | 长文档、海量知识库 |
RAG 是目前构建 AI 知识库应用的主流方案,几乎所有"AI 客服""企业知识助手"背后都有它的身影。
六、Context 管理在实际开发中的体现
如果你在做 AI 应用开发,Context 管理是绕不开的核心问题。几个关键实践:
对话轮次管理:当对话轮次过多、接近 Context Window 上限时,需要做"摘要压缩"——把较早的对话历史让模型总结成一段话,然后丢掉原始记录,用摘要替代。
System Prompt 减肥:System Prompt 也占 Context。写得啰嗦不仅浪费 Token,还占用了宝贵的"记忆"空间。
工具返回数据的精简:如果工具返回了一大段 JSON,直接塞进 Context 也会占很多位置。
七、总结
Context 和 Context Window 是 AI 应用的核心基建,记住三点:
-
模型本身没有记忆,"记住"靠的是每轮重发 Context。Context 包含了系统提示词、对话历史、当前问题等所有信息。
-
Context Window 是 Context 的 Token 上限。窗口越来越大,但成本问题和"注意力稀释"依然存在。
-
RAG 是处理超长文档的主流方案:不塞全文,只取最相关片段。
下一篇,我们来聊聊直接跟模型对话的"语言"——Prompt(提示词)。
本系列文章:
-
LLM 大语言模型
-
Token 与 Tokenizer
-
Context 与 Context Window ← 你在这里
-
Prompt 提示词(待发布)
-
Tool 工具调用(待发布)
-
MCP 模型上下文协议(待发布)
-
Agent 智能体(待发布)
-
Agent Skill(待发布)
更多推荐


所有评论(0)