上下文窗口
一句话定义:上下文窗口是 LLM 单次能处理的最大 token 数,决定能"看"多长输入。
1. 定义
Context Window(上下文窗口)指模型一次前向能接收的最大 token 数。包括输入 + 输出。例:128k token 窗口。
2. 为什么有限
- 自注意力 $O(n^2)$:序列翻倍,计算量四倍。
- KV Cache 显存随序列线性增长。
- 长序列训练数据稀缺。
3. 长上下文的挑战
- Lost in the Middle:中间位置信息易被忽略,模型对开头结尾更敏感。
- 成本:token 越多费用与延迟越高。
- 有效利用:窗口大不等于用得好,需上下文工程。
4. 扩展上下文的技术
- 位置编码外推:RoPE 的 NTK-aware、YaRN 等扩展。
- 稀疏/线性注意力:降低 $O(n^2)$,如 Longformer、Linear Attention。
- 滑动窗口 + 全局 token:Mistral 等用 SWA。
- 分块处理:超长文档分块检索(RAG)。
5. 实践建议
- 不是越长越好:长输入成本高且中间易丢信息。
- 关键信息放开头或结尾。
- 超长文档用 RAG 分块检索,而非全塞上下文。
- 用上下文工程裁剪噪声。
6. 学习要点
- 上下文窗口是硬约束,决定单次能处理多长。
- $O(n^2)$ 是根本瓶颈,催生各种高效注意力。
- 大窗口 ≠ 好利用,需配合上下文工程。
7. 参考资料
- "Lost in the Middle: How Language Models Use Long Contexts"
- "YaRN: Efficient Context Window Extension of LLMs"
评论
评论加载中…