什么是 上下文窗口?

上下文窗口是模型端点在特定模型与运行时契约下,单次推理请求可接受的最大 Token 序列;它限制本次请求可用的信息量,但不保证模型能正确利用窗口内的每项信息。

快速了解

全称上下文窗口 / 上下文长度
创建时间概念源自 Transformer 架构(2017 年)
规范文档官方规范

工作原理

上下文窗口是推理时的容量边界,不是模型训练语料、数据库、持久记忆或理解能力证明。标称窗口通常表示特定模型、端点与功能组合可接受的最大 Token 序列;产品封装还可能预留余量或暴露更小限制,因此只看模型家族名称无法得到可靠契约。 应计算完整序列化请求。System 与 Developer 指令、用户消息、对话历史、示例、检索片段、Tool 定义、调用与结果、文档或媒体 Token,以及生成中的 Token 都可能占用容量。不同供应商可能公布输入输出共享上限,也可能分别限制最大输入、最大输出、推理 Token 或多模态输入。工程上应使用目标供应商的确切 Tokenizer 或计数接口,并为输出保留经过测量的余量;字符数和词数换算无法跨语言、代码、格式与 Tokenizer 通用。 最大容量与有效上下文不同。请求被接受只能证明序列装得下,不能证明模型能可靠检索、聚合、推理或引用每一部分。Lost in the Middle 展示了证据位置敏感性;RULER 在简单 Needle-in-a-Haystack 之外加入多键检索、追踪、聚合与问答;NoLiMa 则移除容易利用的字面重合。其结果受模型和基准条件限制,但共同说明:单个 Passkey 测试或标称 Token 数不能证明生产质量。 溢出行为属于应用契约。端点可能拒绝超长请求,客户端或 Gateway 也可能在发送前截断旧轮次、清理 Tool 结果、摘要、压缩或采用滚动窗口。静默截断可能移除安全指令、当前问题、证据限定词或尚未对账的 Tool 结果。系统应记录哪些内容被选择、遗漏、转换,以及为输出预留多少空间;必要上下文无法放入时应显式失败。即使最大输出与总窗口相互影响,两者也不是同一指标。 成本与延迟取决于实际架构和服务路径。稠密 Self-Attention 的分数计算随序列长度呈二次增长,但部署系统可能采用优化 Kernel、Grouped-Query Attention、稀疏或滑动注意力、递归、缓存等机制,不能把同一复杂度断言套给所有实现。更长输入通常仍会增加 Prefill 工作、首 Token 延迟、内存压力与成本。Prompt 或 Context Caching 可以在供应商特定规则下复用前缀计算,但不会扩大窗口、刷新过期数据、执行权限控制或证明模型理解了缓存内容。 应依据工作负载证据选择 Full Context、RAG、Context Compression、Memory 与 Caching。大部分内容都相关且语料有界稳定时,完整上下文可以简化架构;语料规模大、持续变化或受访问控制时,RAG 更适合选择性获取;压缩可节省 Token,但可能丢失限定条件;记忆用于跨请求保存选定状态,但仍需在后续请求中检索回来。这些方法可以组合,没有任何一种能普遍替代其他方案。 每个长上下文 Release 都应接受安全和评测审查。检索前授权数据,保留来源与 Tenant 标签,把指令与不可信文档、Tool 结果分开,最小化 Secret,并在模型外强制执行外部副作用。对精确的模型、端点、Tokenizer、Prompt、Context Assembler、数据版本与输出策略,分别测试长度、证据位置、干扰密度、单跳与多跳、聚合、多语言、溢出、取消、延迟、成本、引用支持和未授权披露。有效上下文窗口因此是特定工作负载的证据边界,而不是标称上限的固定百分比。

主要特点

  • 契约相关容量:模型、端点、运行时功能、Tokenizer 与输出策略共同决定可用空间
  • 完整请求计量:指令、历史、证据、Tool、媒体表示、推理与输出都可能消耗 Token
  • 容量不等于利用率:已接收内容仍可能被遗漏、混淆、照抄或在证据不足时使用
  • 显式溢出语义:拒绝、截断、压缩、检索与滚动窗口具有不同的信息损失和恢复行为
  • 运营权衡:长序列会影响 Prefill 延迟、内存、吞吐、成本与 Prompt Injection 攻击面
  • 按工作负载评测:长度、位置、干扰项、推理、语言、安全和输出余量需要独立切片

常见用途

  1. 分析有边界的长文档或代码快照,同时保留来源位置和输出余量
  2. 管理多轮 Agent 历史、Tool 结果、Checkpoint 与压缩,而不把窗口当作持久记忆
  3. 在相同任务、延迟、成本与安全门禁下比较 Full Context、RAG 和 Context Compression
  4. 使用部署端 Tokenizer 和端点为多语言、代码、表格、图像、音频或视频输入估算容量
  5. 通过位置扫描、干扰项、聚合任务、溢出场景和未授权数据测试验收模型 Release

示例

loading...
Loading code...

常见问题

上下文窗口是否等于最大输入或最大输出长度?

不一定。有些端点公布输入加生成序列的共享上限,有些还分别限制最大输入、最大输出、推理 Token 或特定功能;产品封装也可能额外预留空间。应读取确切模型与端点契约,计算完整序列化请求并测试边界行为,不能只对一个宣传数字做减法。

上下文窗口更大是否会让 LLM 更准确?

没有这种普遍保证。更大窗口提高的是可接受容量,但有用证据仍可能被干扰项淹没,或因位置和任务复杂度而未被正确利用。应在真实使用长度和证据位置上测量任务成功率、证据利用、引用支持、聚合与安全表现。

哪些内容会占用上下文窗口的 Token?

可能包括 System 与 Developer 指令、用户消息、对话历史、示例、检索文档、Tool Schema 与结果、序列化媒体、当前生成响应,有时还包括推理 Token。精确计量和跨轮次保留行为取决于供应商、API 与功能配置。

长上下文模型应当替代 RAG 或上下文压缩吗?

不能一概而论。语料有界且大部分内容都相关时可使用完整上下文;大型语料需要新鲜度、权限与选择性时可用 RAG;压缩能减小体积但可能丢失证据。应在相同质量、延迟、成本和安全评测下比较或组合这些方案。

如何测量模型的有效上下文窗口?

固定完整 Release,在真实输入长度、证据位置、干扰密度、语言和任务类型上扫描。测试检索、多跳推理、聚合、引用、无答案、溢出与对抗样本。当工作负载验收门禁仍能通过时,该长度才是可用边界,而不是标称上限的某个通用比例。

相关术语

相关文章