
前几天群里有朋友问我“为什么我的大模型刚开始还挺聪明聊了半小时就开始答非所问连我前面提过的要求都忘了”说实话我之前也被这个问题困扰过。如果你经常用大模型大概率遇到过这些情况明明第三轮就提过的要求到第十轮它就忘了对话越长响应越慢一看 token 消耗蹭蹭往上涨。更要命的是你还以为是模型不够聪明换了个更贵的模型结果问题照旧。问题可能根本不在模型而在你喂给它上下文的方式。问题根源上下文爆炸先纠正一个常见误解很多人以为模型能记住对话里说过的每一句话。实际上大模型是无状态的。你每发一次提问客户端都会把整个对话历史作为上下文重新发给模型。对话越长这个包裹就越大。这带来三个直接后果注意力被稀释。模型的注意力要分摊到更多内容上真正重要的信息权重被冲淡响应变慢。注意力机制的计算量随序列长度近似平方级增长上下文越长推理越慢成本飙升。API 按 token 计费每一轮提问你都要为全部历史买单我遇到过最夸张的情况一个会话累积到 8 万多 token每次提问要等 30 秒以上。你花的钱、等的时间大部分不是在为这个问题付费而是在为全部历史付费。技术原理大模型为什么会失忆1. 中间迷失效应Lost in the Middle2023 年斯坦福等机构的研究者发表过一篇论文《Lost in the Middle》揭示了一个很反直觉的现象模型对上下文中信息的记忆呈 U 型曲线——开头和结尾记得最牢中间部分最容易丢。也就是说你把关键要求埋在长上下文的中间模型很可能直接看漏。这不是模型偷懒而是当前架构的普遍特性。2. 全量重发机制绝大多数对话产品每一轮都会重发完整历史。假设对话历史已有 2 万 token你新提的问题只有 50 个 token那么这次请求的输入就是 20050 个 token——其中 99.75% 是历史。越聊越贵越聊越慢就是这么来的。3. 无关信息是噪音不是帮助更反直觉的一点塞进去的信息越多回答不一定越好。如果上下文里 90% 的内容和当前问题无关模型就得先排除这些干扰反而更容易跑偏。精准检索永远好过全量堆砌。怎么自救5 个真正好用的技巧技巧一话题切换就开新对话最简单也最有效的一招。一个话题一个会话换话题就新开。如果担心丢上下文把旧会话的关键结论总结成一小段贴进新会话开头即可。技巧二滚动摘要长对话不可避免时定期让模型自己做总结“请用要点形式总结我们到目前为止讨论的背景、已达成的结论和待解决的问题。”然后拿着这份摘要开新对话。几百 token 的摘要往往足以承载几万 token 历史里的关键信息。技巧三用检索代替全塞如果你的场景涉及大量文档别把整个文档塞进上下文。正确的思路是检索增强生成RAG把文档切成小块并向量化提问时先检索出最相关的两三个片段只把这些精准片段交给模型模型需要的是相关信息不是全部信息。技巧四重要信息放开头和结尾利用 U 型曲线✅ 系统级要求、核心约束写在上下文开头✅ 当前任务目标在结尾再强调一遍❌ 不要把关键要求埋在长篇背景材料中间技巧五定期清理冗余历史直接调 API 的话不要无脑全量发送 messages删掉与任务无关的闲聊轮次把多轮反复修改的过程压缩成一句结论只保留最近 N 轮对话 一段背景摘要优化前后对比指标优化前全量堆历史优化后管理上下文单次输入量随轮数线性膨胀稳定在固定区间响应速度越聊越慢全程稳定API 成本每几轮翻一倍大幅下降回答质量易忘要求、跑偏注意力集中输出更稳注具体提升幅度取决于对话长度和使用方式上表为定性对比。什么情况下要特别注意必须优化 单次对话超过 20 轮还要继续聊 需要在对话里引用长文档 跑 7×24 小时的机器人 / Agent历史只增不减建议优化 API 账单让你心疼 对回答稳定性要求高客服、知识问答等场景 经常被模型忘了我说过什么困扰常见问题Q模型宣称支持 128K 甚至更长的上下文还需要管理吗A需要。装得下和用得好是两回事。上下文越长成本越高、速度越慢中间迷失效应依然存在。长上下文是兜底能力不是随便堆料的理由。Q做摘要不会丢信息吗A会丢一部分但摘要的目标是保留关键信息不是全部信息。对绝大多数任务一份高质量摘要比原始全量历史效果更好。实在不能丢的关键要求手动带进新对话即可。Q开新对话会不会让模型不认识我了A模型本来就没有跨会话的记忆它看到的世界就是你这次给的输入。短上下文意味着计算更少、响应更快、价格更低没有任何损失。Q怎么判断上下文已经爆了A两个信号。一是响应明显变慢二是模型开始引用几轮前无关的内容、忘记你提过的要求。出现这两条就该摘要或者开新会话了。Q那些宣称永久记忆的产品是不是就没这个问题A大部分永久记忆本质上也是检索后再喂给模型只是把上下文管理从手动变成了自动。理解这套原理你才能判断它什么时候靠谱、什么时候不靠谱。总结大模型越聊越笨往往不是模型的问题而是上下文管理的问题。记住这几句话✅ 模型是无状态的每轮提问都在重发全部历史✅ 注意力是稀缺资源无关信息是噪音✅ 话题切换开新会话长对话用滚动摘要✅ 文档场景用检索代替全量堆砌✅ 重要信息放开头和结尾避开中间地带用好大模型靠的往往不是更贵的模型而是你喂上下文的方式。