完整学习LLM(六):上下文窗口是什么,为什么模型会忘东西
请根据这份部署文档,告诉我 battle monitor 怎么上线.RAG 检索到了 5 段资料.历史对话里还有我前面问过的问题.系统提示词里还写着回答规则.这些东西最后都要放到哪里?答案就是:放进上下文窗口.所以今天这篇就专门聊一个很基础,但很容易误解的概念:上下文窗口是什么?为什么模型会忘东西?为什么不是窗口越大就一定越好?0.背景:为什么要学上下文窗口我最开始用大模型时,对它的感觉是:它好像能记住我刚才说过什么.比如我先说:我现在在写一篇关于 RAG 的文章.然后我再问:帮我把刚才那个主题换一个标题.模型通常能知道刚才那个主题指的是 RAG.这就很像记忆.但用久了以后会发现:聊太长,它会忘.资料太多,它会漏.前面明明说过,后面它却像没看见.这个时候就不能只说一句:模型记性不好.更准确的说法是:这次请求里,模型能看到的内容是有限的.这个有限范围,就是上下文窗口.1.先给一个直觉:上下文窗口就是这次请求的可见范围我现在对上下文窗口的理解是:上下文窗口 模型在一次请求里能够看到和处理的 token 范围.注意这里有两个关键词:一次请求token 范围也就是说,模型不是把我们所有聊天内容都永久放在脑子里.每次调用模型时,系统会把一批内容打包给它.这批内容可能包括:系统提示词开发者提示词历史对话用户当前问题RAG 检索出来的资料工具调用结果预留给模型输出的空间这些内容加起来,不能超过模型允许处理的上下文范围.可以先看这张图:这张图想表达的是:对话和资料是一条很长的流.上下文窗口只覆盖其中一段.新问题和新资料进来时,太早的内容可能会离开窗口.所以模型忘了,很多时候不是它真的产生了人类意义上的遗忘.而是:那段内容没有被放进这一次请求里.2.上下文窗口里到底装了什么很多人会把上下文窗口理解成:聊天记录长度.这不算错,但不完整.上下文窗口不只是聊天记录.它更像一次请求的总预算.里面装的东西可能很多:系统规则- 你要怎么回答,哪些不能做历史对话- 用户前面问过什么,模型前面答过什么当前问题- 用户这一次真正要问什么检索资料- RAG 找回来的文档片段工具结果- 数据库查询结果,接口返回内容,代码执行结果输出空间- 模型接下来要生成答案的位置这些东西都要占 token.所以一个很现实的问题是:窗口不是只给输入用的.输出也要占空间.比如一个模型的上下文窗口最多能处理一批 token.如果输入已经塞得很满,那留给输出的空间就会变少.反过来,如果希望模型输出很长,输入就不能无限塞.这就是为什么我说上下文窗口更像预算:这张图里最重要的是第二条:RAG 资料塞太多时,模型不一定更聪明.因为塞进去的内容越多,模型越需要在里面找重点.如果资料里混进了很多无关内容,模型反而可能被干扰.这也是为什么 RAG 系统不能只做一件事:把所有搜索结果都扔给模型.它通常还需要:召回重排过滤低分片段压缩摘要控制 TopK说白了:上下文窗口有限,所以要把最有价值的内容放进去.3.为什么模型会忘东西这里可以拆成三种情况.第一种:内容根本没进这次请求这是最常见的.比如我前面很早说过:我的项目叫 Lighter.但后面聊了很长.如果系统为了控制上下文长度,把早期对话裁掉了.那模型这次请求里就看不到这句话.它自然可能不知道 Lighter 是什么.这不是参数忘了.而是:这次输入里没有这条信息.第二种:内容进来了,但太靠前或太分散有些时候,内容确实在上下文里.但上下文太长.关键信息埋在中间.模型可能没有稳定抓住它.这就涉及一个很有名的问题:Lost in the Middle简单说就是:长上下文里,模型不一定能同等有效地利用每个位置的信息.有些信息放在开头或结尾更容易被用到.埋在中间时,模型可能更容易漏掉.所以长上下文不是万能药.窗口变大以后,还要考虑:哪些内容放前面哪些内容放后面哪些内容要压缩哪些内容要重复强调第三种:用户以为它是长期记忆还有一种误解是:我告诉过模型一次,它以后就应该一直记得.但大多数普通调用里,模型并不会因为一次聊天就改写自己的参数.它能利用的通常是:这次请求里的上下文如果系统有记忆功能,那也是另外一层工程能力.比如:把用户偏好保存到数据库下次聊天前再取出来重新塞进上下文这和模型参数本身记住不是一回事.可以用这张图区分:这张图里我想强调一句话:上下文窗口是临时工作台.外部资料是资料库.模型参数是训练时形成的能力.这三件事不要混成一个东西.4.用一个例子理解:为什么它前面知道,后面又不知道假设我们在写一个后端部署文档问答助手.一开始用户说:我的项目是 battle monitor.它由 Go API、PostgreSQL、Nginx 组成.然后用户问了很多问题:数据库怎么配置?Nginx 怎么反代?Docker Compose 怎么写?日志怎么看?健康检查接口是什么?聊到后面,用户突然问:那这个项目上线前还要检查什么?如果系统把所有历史都完整塞进上下文,模型大概率知道这个项目指 battle monitor.但如果历史太长,系统只保留最近几轮:用户: 日志怎么看?助手: ...用户: 健康检查接口是什么?助手: ...用户: 那这个项目上线前还要检查什么?这时候模型可能只知道:有日志有健康检查可能是某个项目但它不一定知道:

相关新闻

unity 源码 左右移动吃金币 躲避障碍 念单词游戏 SourceCode

unity 源码 左右移动吃金币 躲避障碍 念单词游戏 SourceCode

https://download.csdn.net/download/weixin_71802416/93036782

2026/6/28 3:28:17阅读更多 →
为三种OpenAI客户端创建IChatClient对象

为三种OpenAI客户端创建IChatClient对象

penAIClient和AzureOpenAIClient是一个与OpenAI的API进行交互的客户端,我们可以指定模型名称调用其GetChatClient方法来获取一个对应的ChatClient对象。虽然名字雷同,但是这个ChatClient类型可没有实现IChatClient接口,我们需要调用为它定义的…

2026/6/28 3:28:17阅读更多 →
曲线曲面求交解析方案-平面+曲线

曲线曲面求交解析方案-平面+曲线

曲线曲面求交解析方案-平面曲线 文章目录曲线曲面求交解析方案-平面曲线一. 通用约定1. 输入对象2. 容差规则3. 结果规则二. 直线与平面求交1. 有限线段的端点距离分类2. 穿越时的精确交点3. 无限直线情况三. 圆/椭圆与平面求交1. 为什么不直接用两平面交线与圆/椭圆求交2. 统一…

2026/6/28 3:28:17阅读更多 →
Manim物理模拟:别自己写欧拉了!做物理模拟动画时,我遇到过一个坑。

Manim物理模拟:别自己写欧拉了!做物理模拟动画时,我遇到过一个坑。

当时想做一个弹簧振子的 Manim 动画:一个小球连接在弹簧上,在平衡位置附近往复振动。我一开始的思路是——手动写欧拉法迭代。# 当时写的“玩具级”数值积分代码 x 1.0 # 初始位移 v 0.0 # 初始速度 dt 0.02 # 时间步长 k 2.0 # 弹簧劲度系数 …

2026/6/28 5:08:22阅读更多 →
长期吃补铁补锌片有副作用吗?科学解读营养素补充安全性

长期吃补铁补锌片有副作用吗?科学解读营养素补充安全性

长期吃补铁补锌片有副作用吗?结论先行:只要选择合规产品、按照推荐剂量服用,长期吃补铁补锌片一般不会产生明显副作用,副作用风险大多来自产品不合规或超剂量服用,而非长期补充本身。长期吃补铁补锌片有副作用吗&#…

2026/6/28 5:08:22阅读更多 →
AI算力爆发,联发科、高通等“光芯片军团”能否叫板博通、Marvell双巨头?

AI算力爆发,联发科、高通等“光芯片军团”能否叫板博通、Marvell双巨头?

AI算力爆发下光通信芯片格局生变:联发科、高通等“光芯片军团”叫板双巨头 2026年6月,英伟达Vera Rubin平台正式进入全面量产阶段,配套的Spectrum-X以太网硅光CPO交换机同步实现规模化交付——这标志着AI算力集群正式从“电互联”跨向“光互联…

2026/6/28 5:08:22阅读更多 →
YOLO检测头改进- 第38篇:Anchor-Free与Anchor-Based检测头融合方案

YOLO检测头改进- 第38篇:Anchor-Free与Anchor-Based检测头融合方案

1. 引言 目标检测算法根据检测方式可以分为两大流派:Anchor-Based和Anchor-Free。Anchor-Based方法通过预设锚框(Anchor Box)来预测目标位置,代表算法包括Faster R-CNN、SSD、YOLOv2-v5等;Anchor-Free方法直接预测目标的关键点或中心偏移,代表算法包括CornerNet、Center…

2026/6/28 5:08:22阅读更多 →
C++ 强制类型转换为什么要用 static_cast / reinterpret_cast?

C++ 强制类型转换为什么要用 static_cast / reinterpret_cast?

C 强制类型转换为什么要用 static_cast / reinterpret_cast? 为什么不直接用 C 语言的 (type)val? 其实C 搞出 4 个强制转换,不是为了复杂化,而是为了“安全、清晰、可搜索、可维护”。 C 风格的 (type) 转换太暴力、太危险、太…

2026/6/28 5:08:22阅读更多 →
UnityUI中使用中文文本

UnityUI中使用中文文本

生成支持中文的.asset文件找到支持中文的字体,如:Windows 系统自带:C:\Windows\Fonts\simhei.ttf(黑体)、msyh.ttf(微软雅黑)导入Unity(导入的字体文件)选中刚导入的字体文件 → 右键 → Create…

2026/6/28 5:03:22阅读更多 →
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

2026/6/28 0:08:01阅读更多 →
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…

2026/6/28 0:08:01阅读更多 →
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

2026/6/28 0:08:01阅读更多 →
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…

2026/6/28 0:08:01阅读更多 →