长上下文
长上下文一次读整本书
长上下文(Long Context)指大语言模型在单次推理中能处理的超长 token 序列,当前主流范围为 100K 至 1M token。它让模型「一次读整本书」成为可能,同时也带来推理效率与信息利用率的新挑战。
概述
长上下文的核心是扩大模型在生成回复时能「看到」的信息范围,涵盖系统提示、对话历史和输入文档。
- 上下文窗口(context window)最初受位置编码和注意力计算成本限制,GPT-3 仅支持 2K token,GPT-4 Turbo 扩展到 128K。
- 突破意义:超长窗口让整份合同审查、完整代码库理解、整本书阅读等场景无需手动分块。
- 不只是「变大」:背后需要位置编码、注意力算法、KV 缓存管理、推理框架多层协同优化。
- 信息密度问题:窗口大不等于理解深,「迷失在中间」现象表明模型对上下文中部信息的利用率普遍偏低。
工作原理
支撑长上下文的关键技术分布在位置编码、注意力计算和缓存管理三个层次。
- RoPE(旋转位置编码):由苏剑林(Jianlin Su)2021 年提出,对 Query/Key 向量施加旋转变换编码相对位置,对长度外推比绝对位置编码更友好,LLaMA 系列广泛采用;YaRN、LongRoPE 等在此基础上进一步扩展训练外长度。
- FlashAttention:重新排列 GPU 内存访问顺序,将注意力计算的显存开销大幅降低,是长上下文工程落地的重要基础。
- Ring Attention:Hao Liu 等人(UC Berkeley,2023)提出,将超长序列切分到多台设备并行处理,通信与计算重叠,突破单卡显存瓶颈,支持近乎无限的 token 训练。
- KV 缓存(KV Cache):存储每层注意力的键值对以避免重复计算;极长上下文下 KV 缓存显存占用巨大,需配合 PagedAttention 或 KV 压缩技术管理。
类型与变体
业界按支持长度和技术路径对长上下文方案分类。
- 按长度分级:32K 以下为常规窗口;32K–128K 为长上下文;128K 以上为超长/百万级上下文。
- 原生长上下文:预训练或继续训练阶段直接喂入长序列,效果最稳定,代表模型有 Claude 3/3.5 系列(200K)、Gemini 1.5 系列(1M)。
- 推理时外推(context extrapolation):通过位置编码缩放或插值让模型处理超出训练长度的输入,成本低但稳定性不如原生支持。
- 滑动窗口注意力(Sliding Window Attention):每个 token 只关注局部窗口,适合对全局依赖要求不高的场景,Mistral 7B 早期版本采用此方案。
应用场景
长上下文直接拓宽了 LLM 能处理的任务边界。
- 长文档理解:法律合同审查、财报分析、学术论文阅读,无需人工分块合并。
- 代码库理解:超长窗口让模型同时感知跨文件结构与依赖关系,改善重构和 bug 定位能力。
- 完整对话历史:多轮对话记录被完整保留,减少因截断导致的信息丢失和逻辑断档。
- 替代部分 RAG 场景:文档集合固定且规模适中时,直接塞入长上下文可减少检索管道复杂度。
- 多模态长序列:视频帧序列、长音频转录等场景同样受益于超长上下文能力。
与相邻概念的区别
长上下文与几个常见概念关系紧密,但各有侧重。
- 长上下文 vs RAG:RAG 通过检索筛选最相关片段,信息密度高、成本低;长上下文塞入全量文档,信息完整但可能引入噪声、成本更高;两者并非非此即彼,可结合使用。
- 长上下文 vs 记忆(Memory):Memory 模块跨对话会话持久保存信息;长上下文仅在单次推理的窗口内有效,会话结束后不保留。
- 上下文窗口 vs 长上下文:上下文窗口是技术指标(token 数量上限);长上下文是对「窗口足够大」这一能力的描述,两者有时混用。
- KV 缓存 vs 长上下文:KV 缓存是实现长上下文高效推理的底层机制,理解它有助于评估不同长度配置下的实际性能。
局限与误区
长上下文并非万能,使用时需警惕若干常见误区。
- 「塞满即理解」误区:研究(Lost in the Middle,2023)表明 LLM 对上下文中部信息的注意力显著弱于头部和尾部,大量内容可能被模型忽视。
- 成本与延迟:推理延迟和显存消耗随上下文长度超线性增长,百万级 token 的单次推理成本在生产环境中不可忽视。
- 噪声放大:将无关文档与关键信息混入同一上下文,可能干扰模型定位正确答案,反而降低准确率。
- 外推不稳定:通过位置编码插值实现的长度外推,在超出训练长度较多时容易出现困惑度上升或幻觉增加。
发展脉络
长上下文能力的扩展与注意力效率技术的进步密切相关。
- 2017:Transformer 提出,标准自注意力 O(n²) 复杂度成为长序列瓶颈。
- 2020:GPT-3 支持 2K token;Longformer 等稀疏注意力模型尝试突破长度限制。
- 2021:苏剑林提出 RoPE 旋转位置编码(arXiv:2104.09864),为后续上下文扩展奠定基础。
- 2022:FlashAttention v1 发布,大幅降低长序列注意力计算的显存开销。
- 2023:Anthropic 发布 Claude(100K token)引发广泛关注;Ring Attention(Liu et al., arXiv:2310.01889)于 NeurIPS 2023 发表,实现多设备近乎无限上下文训练;YaRN 等低成本外推方案涌现。
- 2024:Google Gemini 1.5 Pro 宣布支持 1M token;Claude 3 系列支持 200K;LongRoPE 将上下文扩展至 200 万 token。
- 当前:如何高效利用超长上下文(检索注意力、稀疏激活、上下文压缩)是活跃研究方向。
常见误解
日常交流中容易听到的简化说法,未必准确,但能帮助理解误解从何而来。
- 「一次读整本书」
- 「大模型圈高频词」
- 「跟 长上下文 是一回事吗」
相关术语
和本术语关联紧密的其他词条,便于串联理解。
🎯 考点练习
含该术语的高频面试题,含标准答案与追问。
- 高级概念查看详解 →
旋转位置编码(RoPE)的原理是什么?相比绝对位置编码有何优势?
RoPE 用旋转矩阵对 Q/K 做位置相关旋转,使注意力点积只依赖相对位置,兼具相对编码语义与外推能力。
- 高级概念查看详解 →
KV Cache 量化如何进一步降低显存占用?
把缓存的 K/V 从 FP16 降到 INT8/INT4/FP8,显存随上下文线性下降;需 per-channel/group 缩放控误差。
- 中级场景查看详解 →
如何评估长上下文模型的有效性(如 Needle-in-a-Haystack)?
把一条事实插入不同深度的长文本测召回,区分「宣称的窗口长度」与「真正可用的有效上下文」。
- 中级概念查看详解 →
长上下文的「迷失在中间」(Lost in the Middle)是什么?如何缓解?
长上下文中模型对中间位置信息利用率低、呈 U 型,关键信息应放首尾。
延伸阅读
从知识库精选 2 篇文章,帮助深入理解该术语。
