大模型关键能力 / 上下文窗口与长文本
CHAPTER 04 · TOPIC 01

上下文窗口与长文本

上下文窗口(Context Window)是大模型一次能"看到"的信息总量,以 token 数衡量。它决定了模型能处理多少信息,是衡量模型实用性的关键指标。本章深入探讨上下文窗口的技术原理、扩展方法和长文本处理的挑战。

一句话理解

上下文窗口(Context Window)是大模型一次能"看到"的信息总量,以 token 数衡量。它决定了模型能处理多少信息,是衡量模型实用性的关键指标。本章深入探讨上下文窗口的技术原理、扩展方法和长文本处理的挑战。

阅读前置

建议完成第 02 章

本文关注

上下文窗口的演进、长上下文的技术挑战、长上下文扩展技术

所在知识层

能力扩展 · 大模型关键能力

文章导航
主教学视觉上下文窗口与长文本 · 知识结构

点击图中节点可定位到对应正文。

核心主题关系与流向

引言

上下文窗口(Context Window)是大模型一次能"看到"的信息总量,以 token 数衡量。它决定了模型能处理多少信息,是衡量模型实用性的关键指标。本章深入探讨上下文窗口的技术原理、扩展方法和长文本处理的挑战。


1. 上下文窗口的演进

1.1 历史增长

模型时间上下文窗口
GPT-220191,024
GPT-320202,048
GPT-3.520224,096
GPT-42023.038,192 → 32,768
Claude 22023.07100,000
GPT-4 Turbo2023.11128,000
Gemini 1.5 Pro2024.021,000,000 → 2,000,000
Claude 3.5 Sonnet2024200,000
LLaMA 3.12024128,000

1.2 上下文大小的直觉理解

公式视图上下文窗口与长文本 · 关系式

把公式、变量和含义拆开呈现,便于对照阅读。

4K tokens≈ 3,000 英文单词 ≈ 5 页文档
32K tokens≈ 24,000 英文单词 ≈ 40 页文档 ≈ 一本小册子
128K tokens ≈ 96,000 英文单词 ≈ 160 页文档 ≈ 一本书
1M tokens≈ 750,000 英文单词 ≈ 1,250 页 ≈ 约 5 本书
2M tokens≈ 1,500,000 英文单词 ≈ 1 小时视频的字幕

2. 长上下文的技术挑战

2.1 计算复杂度

标准自注意力的计算复杂度是 O(n²),其中 n 是序列长度:

语义 SVG 重绘上下文窗口与长文本 · 结构 1

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

序列长度 4K注意力矩阵 4K × 4K = 160…序列长度 128K注意力矩阵 128K × 128K =…序列长度 1M注意力矩阵 1M × 1M = 1 万…
查看原文结构
序列长度 4K   → 注意力矩阵 4K × 4K   = 1600 万
序列长度 128K → 注意力矩阵 128K × 128K = 163 亿
序列长度 1M   → 注意力矩阵 1M × 1M     = 1 万亿
语义 SVG 重绘上下文窗口与长文本 · 结构 2

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

→ 上下文窗口每翻 10 倍,计算量增加 100 倍
查看原文结构
→ 上下文窗口每翻 10 倍,计算量增加 100 倍

2.2 KV Cache 内存

语义 SVG 重绘上下文窗口与长文本

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

4K tokens10 GB128K tokens320 GB1M tokens2.5 TB(需要数十张 GPU)
查看原文结构
4K tokens  → ~10 GB
  128K tokens → ~320 GB
  1M tokens  → ~2.5 TB(需要数十张 GPU)

2.3 "大海捞针"问题(Needle in a Haystack)

当上下文窗口很长时,模型可能无法准确找到中间位置的信息:

语义 SVG 重绘上下文窗口与长文本

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

输入与上下文表现:"U 型曲线"系统核心开头部分:记得好(因为注意力天然关注开头)中间部分:容易遗忘("中间迷失"现象)结尾部分:记得好(因为是最近的输入)工具、结果与反馈
查看原文结构
表现:"U 型曲线"
  ├── 开头部分:记得好(因为注意力天然关注开头)
  ├── 中间部分:容易遗忘("中间迷失"现象)
  └── 结尾部分:记得好(因为是最近的输入)

3. 长上下文扩展技术

3.1 位置编码外推

问题: 模型的 RoPE 位置编码在训练时只见过一定范围内的位置,超出后性能急剧下降。

解决方案:

方法原理效果
NTK-aware Scaling调整 RoPE 频率使训练位置范围覆盖更大可外推 2-4 倍
YaRN结合多种缩放策略可外推 4-8 倍
Dynamic NTK根据实际序列长度动态调整自适应外推

3.2 稀疏注意力

并非所有 token 对都需要互相计算注意力:

语义 SVG 重绘上下文窗口与长文本 · 结构 1

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

标准注意力:每个 token 关注所有…O(n²)
查看原文结构
标准注意力:每个 token 关注所有其他 token → O(n²)
语义 SVG 重绘上下文窗口与长文本 · 结构 2

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

组合策略(如 Longformer):局部窗口 + 全局 token + 随…O(n)
查看原文结构
组合策略(如 Longformer):
  局部窗口 + 全局 token + 随机采样 → O(n)

3.3 Ring Attention

将长序列分割到多个 GPU 上并行处理:

语义 SVG 重绘上下文窗口与长文本

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

通过环形通信(Ring Communi…每个 GPU 只需要存储 1/4 的 …理论上可以无限扩展上下文
查看原文结构
通过环形通信(Ring Communication)交换 K/V
→ 每个 GPU 只需要存储 1/4 的 KV Cache
→ 理论上可以无限扩展上下文

3.4 线性注意力

将注意力的 O(n²) 复杂度降到 O(n):

语义 SVG 重绘上下文窗口与长文本 · 结构 1

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

标准注意力:softmax(QK^T)…O(n²d)线性注意力:φ(Q)(φ(K)^TV)O(nd²)
查看原文结构
标准注意力:softmax(QK^T)V → O(n²d)
线性注意力:φ(Q)(φ(K)^TV) → O(nd²)
语义 SVG 重绘上下文窗口与长文本 · 结构 2

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

φ 是核函数近似当 d < n 时(即序列很长时),线…
查看原文结构
φ 是核函数近似
→ 当 d < n 时(即序列很长时),线性注意力更快

4. 实际应用中的长文本策略

4.1 分块处理(Chunking)

语义 SVG 重绘上下文窗口与长文本

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

长文档分成多个块分别处理汇总结果
查看原文结构
长文档 → 分成多个块 → 分别处理 → 汇总结果

4.2 层次化摘要

语义 SVG 重绘上下文窗口与长文本

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

长文档第 1 章摘要 A第 2 章摘要 B第 3 章
查看原文结构
长文档
  ├── 第 1 章 → 摘要 A
  ├── 第 2 章 → 摘要 B
  └── 第 3 章 → 摘要 C
       ↓
  [摘要 A + B + C] → 全局摘要
       ↓
  用户问题 → 在全局摘要 + 局部摘要中检索 → 回答

4.3 RAG + 长上下文

RAG 与长上下文结合使用:

  • RAG 负责从海量文档中检索相关内容
  • 长上下文窗口负责同时理解多个检索结果
  • 二者互补:RAG 解决"信息过多",长上下文解决"单次理解深度"

5. 不同场景的上下文需求

场景需要的上下文推荐方案
简单问答4K-8K任何模型
代码分析32K-128KClaude 3.5 / GPT-4 Turbo
文档分析32K-200KClaude 3.5 Sonnet
书籍理解128K-1MGemini 1.5 Pro
视频理解1M-2MGemini 1.5 Pro
代码库分析128K-1MClaude 3.5 + RAG

6. 本章小结

要点说明
上下文窗口从 4K 增长到 2M,仍在快速扩展
计算瓶颈O(n²) 复杂度,KV Cache 内存爆炸
扩展方法位置编码外推、稀疏注意力、Ring Attention
"中间迷失"模型对中间位置信息的关注度不足
实用策略分块处理、层次摘要、RAG + 长上下文

相关章节


延伸阅读

  • Liu, N.F. et al. (2023). "Lost in the Middle: How Language Models Use Long Contexts". TACL
  • Chen, S. et al. (2023). "LongLoRA: Efficient Fine-tuning of Long-Context Large Language Models". ICLR
  • Liu, H. et al. (2023). "Ring Attention with Blockwise Transformers for Near-Infinite Context". arXiv