上下文即拓扑:为什么你的 Agent 记忆会遗忘,以及结构如何解决这一问题

@elpresidank
英语1个月前 · 2026年6月02日
3.8M
669
45
19
126

TL;DR

通过分析“意义代价”(Price of Meaning)定理,本文指出基于嵌入的 RAG 存在根本性缺陷。文章引入了“上下文即拓扑”的概念,利用 Effect Schema 构建确定性且抗幻觉的 AI Agent。

大多数 AI Agent 的记忆都建立在嵌入(embedding)之上。而现在有证据表明,这类系统会遗忘你存储的内容,并自信地编造出你从未存储过的东西。

《意义的代价》(arXiv:2603.27116)将这类系统形式化:任何检索得分是嵌入空间中距离函数的记忆系统。向量数据库、RAG 流水线、基于嵌入相似度的 GraphRAG——全在其中。而该论文证明了令人不安的部分:正是让这些系统具备泛化能力的几何结构,迫使它们遗忘(随着存储增长,保留率衰减至零)和编造(虚假召回无法在不丢弃真实结果的情况下调优)。扩大规模并不能解决这个问题。反而会让情况更糟——恰恰在你最需要记忆的时候。

我不认为答案在于更好的嵌入。我认为应该停止将意义存储为几何形状。

代码库有两种意义

一种是来自邻近性的意义——“这个东西在什么附近?”——这正是嵌入所捕捉的,也是该定理所宣判的。

另一种意义:符号所在的位置。在 AST 中。在类型格中。在模块图中。在模式中。这种意义是结构性的,而非几何性的。它是精确且离散的,你通过导航——沿边移动、解析类型、读取路径——来恢复它,而不是通过最近邻搜索。没有拥挤、没有衰减、没有虚假召回,因为图中的邻接不是近似的。它要么连接,要么不连接。

论文本身指出的出路直接指向这里:精确记录、符号验证器,以及没有连续语义空间造成瓶颈的结构。源代码是罕见的语料库,所有这些精确结构都唾手可得。我构建的代码库甚至将其奉为信条——其架构标准中有一个章节的标题就是 《拓扑即压缩上下文》

关键:一个模式,三项工作

让这一切变得实用的关键是 @EffectTS_ Schema,特别是它的注解模型。

通常情况下,关于某个事物的元数据会被复制到该事物的每个实例中。Schema 注解让你反其道而行之:将意义一次存储在 schema 本身之上,并在需要时恢复。元数据成为结构的一个属性,而不是依附于数据的载荷。

(范畴论爱好者对这种形状有一个精确的名称——它是纤维化——但你不需要了解其中的机制就能利用这个事实:恢复是有限的、精确的、键控查找。没有竞争质量,因为没有竞争者——只有键名指向的那一个条目。零虚假召回,通过构造保证。)

这一招让一个 schema 同时承担三个角色,且三者之间绝无漂移的可能:

  • 它是你检索的索引——你导航以找到正确事物的结构。
  • 它是你交给 Agent 的模具——它必须填充的精确形状。
  • 它是你验证输出的契约——塑造请求的同一个 schema 也为响应解码。

一个真实来源。三项工作。它们不可能不同步,因为它们是同一个对象

这并非假设——这是我正在构建的一个 JSDoc/TSDoc 引擎中的核心技巧。一个标签定义由 JSDocTagDefinition.make(...) 构建,它验证完整元数据,将每次出现精简为 { _tag, value },并将常量意义作为注解提升到 schema 上。一个显示映射直接从 schema 上读取它。113 种标签形状是一个带键索引的判别联合类型,而不是搜索。同样的构造还向上运行一层:代码库自身的架构本体——元素的 Effect 类比、它的层、它的纯度——以同样的方式存储

通过缩小 Agent 的创造空间来引导它

一旦意义成为精确结构,你就停止提示 Agent,转而开始约束它。开放式生成坍缩为有边界的填空:

  • 上下文从结构投影而来——目标符号的 2 跳邻域,那些它真正连接的东西——而不是通过“什么嵌入靠近这个”来检索。
  • 输出形状由 schema 固定——结构无效的输出不是不太可能,而是无法表示
  • 已知事实作为锚点预填充——参数名、类型、签名作为给定输入传递,而不是待生成的内容。Agent 无法幻觉结构,因为结构从未进入讨论范围。(这正是确定性接地研究不断得出的结论——FORGE 通过纯 AST 分析以接近 100% 的精度纠正结构声明,arXiv:2601.19106。结构事实绝不应留给概率生成器。)
  • 输出在提交前解码并与事实对照检查——格式错误的输出被直接拒绝;可对照图验证的声明被验证;其余的被标记。

诚实的版本很重要:约束框架是确定性的,而不是模型本身。你不需要让模型变得确定性。你只需要缩小它允许发挥创造力的表面——精确上下文输入、精确形状输出、确定性锚点锁定——直到留给它创作的部分只剩下真正需要理解的部分。最小的可能创造性残留,置于检查器之后。

两个诚实说明,在此之前不要克隆仓库并期望奇迹。表示层——schema 即纤维化——是真实的,你可以通过上面的链接阅读。推理放大器与封闭验证循环是我正在探索的方向,而非今天正在运行的东西。部件是真实的;系统仍主要是一个论证。我分享这个想法是因为我坚信它是正确的,而不是因为它已经完成。

未来的方向

我将这个更大的模式称为上下文即拓扑:一个代码库,其确定性结构足够丰富,能够存储意义、将其投影为最小上下文、通过构造约束生成、并通过对照结构本身检查来验证生成——一个循环,其中的每条边要么是精确的,要么被标记为待审查。

致谢

直到我仔细研读 @GiulioCanti 在 Schema 方面的工作后,这一切才豁然开朗。“可从基础恢复的意义,而不是在数据中复制” 是整个解锁的关键——这也是他构建的所有内容的主线。fp-ts → io-ts → Effect Schema v3 → v4。整个想法都站在巨人的肩膀上。

如果你正在 Effect 上构建 Agent 工具,或者你目睹过你的 RAG 或图形记忆随着增长而悄然腐朽,我很乐意交流心得。代码是开放的:github.com/kriegcloud/beep-effect

来源

一键保存

使用 YouMind AI 深度阅读爆款文章

保存原文、追问细节、总结观点,并在一个 AI 工作空间里把爆款文章沉淀成可复用笔记。

了解 YouMind
写给创作者

把你的 Markdown 变成干净的 𝕏 文章

图片上传、表格、代码块,往 𝕏 上手动重排太痛苦。YouMind 把整篇 Markdown 一键转成干净、可直接发布的 𝕏 文章草稿。

试试 Markdown 转 𝕏

更多可拆解样本

近期爆款文章

探索更多爆款文章