AI 新技术 · 第 3 章
长上下文:把整本书、整个代码库一次喂给 AI
以前大模型像个鱼的记忆——你跟它聊几句就"忘"了开头,因为它一次只能看几千字。现在的模型号称100 万、200 万 token 上下文,能一口气吞下一整本书、整个代码库,然后你随便问。这一课讲:它怎么"记住"这么长,又为什么"看得多≠看得准"。
⓪ 本章怎么学(约 40 分钟)
1窗口概念(8 分钟)
读①:窗口越大装得越多。
2概念表(10 分钟)
读②:RoPE、YaRN、Ring Attention。
3看例子+防坑(12 分钟)
读③④,记迷失中间与成本。
4自测+复述(10 分钟)
做⑤⑥,费曼三问讲一遍。
本章小目标学完你要能:说清上下文窗口是什么、RoPE 外推在调什么、什么是"迷失中间"、以及长上下文为什么不能替代 RAG。
① 一句话搞懂:窗口在变大
上下文窗口(context window)就是模型一次能"同时看到"的文字总量。早期是 4K、8K token,现在主流 128K 起步,旗舰做到 1M~2M。
| 窗口大小 | 大约能装下 | 能干什么 |
| 4K~8K | 几页文档 | 短问答、写小段代码 |
| 128K | 一本中等长度的书 | 整本书问答、长文档分析 |
| 1M~2M | 整个代码库 / 几百本书 | 跨文件改代码、长项目记忆 |
核心直觉窗口大了,不代表你真要把所有东西都塞进去。窗口只是"工作台大小",台上东西太多,模型照样会看漏中间那段。
② 关键概念表
| 名词 | 大白话 |
| 位置编码 RoPE | 告诉模型"这个字在第几个位置"的坐标 |
| 外推 / YaRN | 训练时只见过 4K,靠技巧让它看懂 128K |
| Ring Attention | 超长文本分片算,像传戒指一样绕着算,省显存 |
| "迷失中间" | 两头的内容记得清,正中间的反而容易漏 |
怎么把窗口做大的
模型靠位置编码知道每个词的先后顺序。原始 RoPE 只在短文本上训过,直接拉长会"认不出位置"。YaNR / RoPE 缩放就是把坐标"按比例压缩",让模型把没见过的超长位置,当成它熟悉的短位置来理解,这叫外推。
③ 三个例子
例 1 · 整本书问答
把一本 30 万字的小说整本喂进去。
你问"第 3 章里那个人后来怎么了",它能跨前后几百页找到伏笔并回答——不用你手动翻、不用 RAG 切片。
例 2 · 跨文件改代码
整个微服务代码库(几十万个 token)一次性给它。
你说"把这个字段从 int 改成 string",它能同时看到定义文件、调用处、测试用例,一次性把所有相关地方改对。
例 3 · "迷失中间"翻车现场
在 100 万 token 的开头和结尾各埋一个小线索。
模型很容易找到首尾的线索,却漏掉藏在正中间的那一条。这就是长上下文的软肋——别全信"它都看到了"。
④ 防坑提醒
坑 1:以为窗口大就不用 RAG 了不对。窗口大≠免费——塞得越长,越贵、越慢,还会"迷失中间"。精准检索(RAG)把相关片段捞出来,又省又准,二者是配合关系。
坑 2:以为标称 1M 就真能用上 1M很多模型标称上限很高,但在超长上下文里准确率会断崖式下降。关键结论仍要靠 RAG 兜底。
坑 3:忽略成本长上下文是按 token 计费的,一次喂 100 万 token 问一个小问题,账单会很难看。按需喂,别炫富。
⑤ 折叠自测(点开即答)
基础1上下文窗口是什么?
模型一次能同时看到的文字总量(token 数)。窗口越大,一次能处理的文档/代码越多。
中档2RoPE 外推(如 YaRN)解决什么问题?
模型训练时只见过短文本,位置编码"认不出"更长的位置。YaRN 等技巧把位置坐标按比例缩放,让它能"外推"到几倍长的上下文。
拔高3为什么有了长上下文,RAG 还没被淘汰?
因为① 越长越贵越慢;② 会"迷失中间",正中间信息容易漏;③ RAG 只捞相关片段,信噪比更高。实战是"长上下文 + RAG"配合,而非二选一。
⑥ 费曼三问(合上讲,自己讲给自己听)
用大白话回答,讲不顺就是没懂
问 1:把整本书喂进去,模型为什么还可能漏看中间某句话?
问 2:RoPE 外推到底在"调"什么,让模型看懂更长的文本?
问 3:什么场景该直接上长上下文,什么场景该用 RAG?
上下文窗口:一次能同时看到的 token 总量 工作台大小
RoPE / YaRN:位置编码外推,短训变长用 坐标缩放
Ring Attention:分片绕算,省显存跑超长 戒指传递
迷失中间:首尾清楚、中间易漏 别全信
与 RAG 关系:配合而非替代,又省又准 按需喂
🛠 实战场景:整本书喂,还是先 RAG
| 任务 | 建议 | 原因 |
| 读完一整本书写读后感 | 长上下文 | 需要全局呼应 |
| 在 100 页报告里找一个条款 | RAG | 精准检索更省更准 |
| 跨整个代码库改字段名 | 长上下文 | 要看全调用链 |
| 客服知识库问答 | RAG | 只捞相关片段 |
| 总结会议纪要 | 长上下文 | 一次性吞下录音转写 |
经验法则:要全局理解就长上下文,要精准定位就 RAG,实战常常两个一起上。
🧪 生活联想
1书桌
窗口大小像书桌面积,桌面越大摊的书越多。
2找东西
桌上堆满一屋子书,中间那本反而难找——这就是迷失中间。
3效率
与其把书全摊开,不如先索引定位(RAG),再翻到那几页。
对照自己下次长文档问答,先想清楚:是整本喂进去,还是先 RAG 搜相关段落?后者又省又准。
📖 名词速查
| 名词 | 大白话 |
| 上下文窗口 | 一次能同时看到的 token 总量 |
| RoPE | 旋转位置编码,告诉模型词的先后顺序 |
| YaRN | 对 RoPE 做缩放,让短训模型看懂超长文本 |
| 外推 | 把训练没见过的长位置当成熟悉的短位置理解 |
| Ring Attention | 把长文本分片绕着算,省显存 |
| 迷失中间 | 首尾清楚、正中间信息容易漏 |
⚡ 高频 FAQ
问:窗口是不是越大越好?不是。越大越贵越慢,还会"迷失中间"。够用就好,配合 RAG 更划算。
问:为什么我标称 1M 的模型中间问题答不对?超长上下文里准确率会下降,尤其是中间位置。关键结论仍要用 RAG 兜底。
问:长上下文和 RAG 冲突吗?不冲突,是配合:长窗口看全局,RAG 精准捞相关片段,二者一起用效果最好。
🔁 5 天复习计划
| 天 | 任务 | 自检 |
| 第 1 天 | 读①②,理清窗口与位置编码 | 说清 RoPE 作用 |
| 第 2 天 | 读③④,跟一遍三个例子 | 讲清迷失中间 |
| 第 3 天 | 做⑤折叠自测 | 三题全对 |
| 第 4 天 | 读⑥费曼三问,不看资料讲 | 能举例 |
| 第 5 天 | 名词速查 + 口诀默写 | 脱稿说清长上下文 vs RAG |
三句口诀① 窗口是工作台,不是越大越好;② RoPE 外推靠位置缩放;③ 长窗口配 RAG,又省又准。
📌 知识链路
前置知识先懂 token 和上下文窗口的基本概念,再理解怎么把它做到 1M。
本节位置给模型加长记忆:能一次吞下整本书、整个代码库。
下一步接着看 AI 编程,理解长上下文怎么帮它跨文件改代码。