什么是 上下文窗口?
上下文窗口是大语言模型在单次交互中能够处理的最大 token 数量,包括输入提示和生成的输出,它决定了模型在生成响应时能够考虑多少信息。
快速了解
| 全称 | 上下文窗口 / 上下文长度 |
|---|---|
| 创建时间 | 概念源自 Transformer 架构(2017 年) |
| 规范文档 | 官方规范 |
工作原理
上下文窗口是基于 Transformer 的语言模型的基本约束,由位置编码方案和训练期间的内存需求决定。早期模型如 GPT-3 有 4K token 限制,而现代模型如 GPT-4 Turbo(128K)、Claude 3(200K)和 Gemini 1.5(100万+)已大幅扩展了这一限制。更大的上下文窗口能够处理整个文档、维持更长的对话,并在更多信息上执行复杂推理。
主要特点
- 以 token 为单位测量,而非字符或单词
- 包括输入提示和生成的输出
- 更大的窗口需要更多计算资源
- 注意力机制复杂度随长度呈二次方增长
- 不同模型的上下文限制差异很大
- 滑动窗口和 RAG 等技术有助于突破限制
常见用途
- 处理整个文档或代码库
- 维持长对话历史
- 分析冗长的法律或金融文档
- 多文档摘要和比较
- 需要大量上下文的复杂推理
示例
Loading code...常见问题
当我的输入超过模型的上下文窗口时会发生什么?
当输入超过上下文窗口时,大多数 API 会返回错误。某些系统可能会截断输入,可能导致重要信息丢失。处理长文档时,可以使用分块(将文本拆分成较小片段)、摘要或检索增强生成(RAG)等技术,在保持关键信息的同时控制在限制范围内。
Token 与单词或字符有什么不同?
Token 是语言模型处理的基本单位,通常表示常见的字符序列。在英语中,一个 token 大约等于 4 个字符或 0.75 个单词。不同语言的 token 效率不同——中文字符通常每个字需要更多 token。使用分词工具可以获得特定文本的准确计数。
上下文窗口越大是否意味着性能越好?
不一定。虽然更大的上下文窗口允许处理更多信息,但模型可能难以有效利用非常长上下文中间部分的信息(即「中间迷失」现象)。此外,更大的上下文会增加计算成本和延迟。有时,结构良好的较短提示反而比冗长的提示效果更好。
什么是 RAG,它如何帮助解决上下文窗口限制?
RAG(检索增强生成)从大型知识库中只检索最相关的信息并将其包含在提示中。RAG 不是将整个文档放入上下文窗口,而是动态选择最相关的片段,使模型能够在保持在 token 限制内的同时访问大量知识。
为什么上下文窗口有限制,它们会继续增长吗?
Transformer 的注意力机制具有 O(n²) 的复杂度,这意味着内存和计算量随序列长度呈二次方增长。虽然稀疏注意力和高效架构等技术正在扩展限制(模型现在已达到 100 万+ token),但在上下文大小、成本和推理速度之间仍存在实际权衡。