最近一段时间,我看到不少关于“无限上下文(Unlimited Context)”的说法。 有的通过层级压缩,有的通过向量检索,有的甚至给出了带求和符号和“定理”的公式,试图从数学上证明:
只要设计得当,LLM 就可以拥有近乎无限的上下文能力。
一开始我也觉得这个方向“很合理”。 直到我真正把它当作一个系统问题而不是一个感觉问题来审视。
这篇文章并不是反对工程上扩展上下文能力,而是想解释: 为什么我认为“无限上下文”这个表述在技术上是不成立、甚至是有误导性的。
一、首先要问清楚:什么是“上下文”?
在很多讨论里,“上下文”这个词被默认理解为:
模型在一次推理中能够利用的所有相关信息
但在实际系统中,这个定义至少可以拆成三种完全不同的东西:
- Prompt 中的文本
- 外部存储中“可能被取回”的信息
- 系统中被视为“当前有效真值”的状态
很多“无限上下文”的论证,其实混合了这三者,但没有加以区分。
一旦你把它们混在一起讨论,“无限”就会变得看起来很自然。
二、向量检索 ≠ 上下文的存在
常见的论证路径是这样的:
- 模型有有限的上下文窗口
- 但我们可以把历史信息存在向量数据库里
- 每次根据 query 检索 top-k
- 所以理论上可以访问无限信息
这里存在一个关键但经常被忽略的跳跃:
“信息存在” ≠ “信息必然可用”
向量检索本质上是:
- 相似度近似
- 概率性的召回
- 非完备的匹配
它无法保证:
- 所有必要前提都会被取回
- 关键但“不显眼”的条件不会被遗漏
- 多个弱相关条件能被同时满足
因此,它更接近于一种启发式提示机制,而不是上下文本身。
把“可检索的信息总量”称为“上下文容量”,在概念上是偷换的。
三、压缩不是守恒的
另一个常见说法是:
只要不断对旧上下文进行压缩和摘要,就可以在有限窗口中承载无限历史。
这个说法的问题不在工程,而在信息论直觉上:
- 压缩 ≠ 等价表示
- 摘要 ≠ 可逆变换
一旦某个约束、条件或关系在压缩过程中被丢弃,它在后续推理中就永远消失了。
这并不是实现不够好,而是不可避免的结构性损失。
四、当“无限”来自假设本身
有些公式型论证会这样处理:
- 向量存储容量 V:理论上无上限
- 层级数量 n:可以不断增加
- 所以有效上下文容量 → ∞
问题在于:
这里的“无限”来自前提设定,而不是推导结果。
如果我们允许任意一个系统组件被假设为 unbounded,那几乎任何系统都可以被称为“无限”。
这在数学上不构成定理,在工程上也不构成保证。
当我回复指出某位已经把工具商业化(?)的博主文档中的问题时,系统提示我被拉黑了。
五、真正的问题不在“容量”,而在“真值”
在我后来的系统设计中,我逐渐意识到:
决定系统是否可靠的,不是它“记住了多少”,而是它“认为什么是真的”。
如果一个系统:
- 没有明确的世界真值层
- 没有区分“事实”“角色认知”“用户认知”
- 没有机制判断输出是否违反既有状态
那么即使你给它再大的“上下文”, 它依然可能在下一句话中自相矛盾。
这时再谈“无限上下文”,其实已经偏离了问题本身。
六、一个更有用的替代视角
相比“无限上下文”,我现在更倾向于用这些表述:
- 持久化世界状态(Persistent World State)
- 结构化事实存储(Structured Facts)
- 受约束的生成(Constrained Generation)
- 上下文是投影,而不是本体
在这个视角下:
- Prompt 只是世界状态的一个切片
- 检索只是访问世界的一种方式
- 模型输出需要对状态变化负责
这并不“更玄”,反而更朴素。
有一种误解是 “deepseek的新论文提及的Engram 在做真值层”,但实际上它并不是。 它更像:
一个内部记忆机制 —— 把一些重复出现的结构直接载入神经模型内部,从而减少它每次都要重新“推理出来”。
这就是为什么AI的基础设施还需要NSP——更高维度的逻辑检查器来约束其生成的结果。
结语
我并不认为扩展上下文、RAG、记忆系统是错误方向。 它们在工程上非常重要,也非常有价值。
但我越来越确信一件事:
当我们开始用“无限”来描述一个系统时,往往意味着我们已经放弃了对边界的精确定义。
而在复杂系统中, 失去边界感,往往比容量不足更危险。