与一个在生产环境中运行了一年的普通 RAG 系统面对面,试着问它四个问题。“你为什么那么说?”模型给出了一个关于客户合同续签日期的自信回答,但回溯到源条款的路径却不存在。“重新验证这个主张——源已更改。”合同上周已被修改。每个从中衍生出的事实都值得怀疑。你无法找到它们,因为你不知道它们来自哪个文档。“在这两个相互矛盾的事实之间做决定。”一个说 Alex 在 Google 工作,另一个说在 Stripe。两者都没有置信度分数或源时间戳。写入的新旧程度与证据的新旧程度毫无关系。“追溯这个幻觉。”模型说会议在周四。但周四并没有会议。你无法判断是 LLM 编造了日期,还是记忆中的错误数据误导了它。
这四种失败有一个共同的原因。它们各自缺少一列。源标识符、捕获时间戳、置信度分数、响应引用日志。每条在写入时只需几个字节。没有它们的代价是无限的:每个主张都无法审计,每个矛盾都无法解决,每个幻觉都无法追溯。
在 19 个系统中,这个模式是一致的。最强的实现将溯源视为法庭对待证据的方式——每一个主张都带着一条完整的保管链,否则就根本不接受。最弱的实现不携带任何溯源,每次在生产中出现问题时都要付出代价。本文将介绍语料库中浮现出的六个溯源层次、将它们区分开的三个实现成熟度层级,以及从一开始就把这件事做对所需的真实成本。
六个维度,一个原则
逐一阅读 19 个系统后,六个不同的溯源维度显现出来。它们不是层级关系,而是相互正交的。一个系统可以有源溯源但没有因果溯源。可以有版本控制但没有置信度评分。最强的实现覆盖全部六个维度。最弱的实现一个都不覆盖。
标识回答“究竟是哪个事实?”OpenContext 在每次摄取时为每个上下文片段生成 UUID,并将其作为引用方案暴露给 Agent,Agent 可以直接在响应中使用。该标识符能经受住重命名、移动和重组,因为它绑定在内容上而非路径上。mem9 在每一行上携带稳定的记忆 ID,外加一个带有 If-Match 并发保护的显式版本计数器。没有标识溯源,当事情出错时你甚至连自己在谈论什么都无法命名。
源回答“它来自哪里?”Hindsight 在每条观察上记录源类型和标识符,因此系统可以回答哪个对话或文档产生了某个事实。mem9 在每一行上携带源、Agent ID 和会话 ID。Supermemory 在记忆旁存储文档 ID。没有源溯源,当源发生变化时你无法级联更新,因为你不知道哪些事实依赖于它。
因果回答“哪个 Agent 步骤使用了它?”Hindsight 将每个检索并用于回答的事实捕获到一个观察层中,附带完整的检索上下文——哪个检索器展示了它、它达到的排名,以及 Agent 是否实际消费了它。Moraine 将每个追踪步骤视为自己的溯源记录,使 Agent 的整个执行过程可作为一系列源可寻址的事件进行恢复。没有因果溯源,你无法区分“系统检索到了这个事实”和“Agent 使用了这个事实来生成那个响应”。
捕获置信度回答“我们写下它时有多确定?”Graphify 在其知识图中为每条边标记三级捕获置信度:CONFIRMED(已确认)用于确定性提取,LIKELY(很可能)用于高置信度的 LLM 推断,AMBIGUOUS(不确定)用于不确定的主张。AMBIGUOUS 边会作为“知识缺口”呈现给人工审核,而不是被默认为事实。Hindsight 在每条观察上携带一个置信度分数,该分数会通过其新鲜度生命周期随时间衰减——新鲜观察受信任,陈旧的观察则被降权或淘汰。mem9 首先在影子模式下运行近似重复检测,记录分数但不采取行动,直到工程师根据真实数据校准阈值。没有捕获置信度,不确定的事实和确定的事实会以相同的权重被检索,Agent 无法区分可靠的主张和推测。
版本化回答“我们之前相信什么?”Supermemory 将记忆视为带类型边的版本化 DAG——更新、扩展、衍生——从而给每个信念提供提交历史。mem9 将写入路径一分为二:就地修改用于人工编辑,追加并归档用于 LLM 驱动的重写(新内容语义上替换旧内容)。Tolaria 完全让 Git 承载版本历史,将单行差异作为一级用户可见的人工制品。没有版本化溯源,你无法回退到系统在周二所相信的内容,因为旧的信念被删除了而非归档了。
互惠回答“还有哪些事实共享同一来源?”llm-wiki 在其四信号相关性图中将源重叠的权重置于直接链接之上——来自同一原始文档的两个页面被认为比具有直接维基链接的两个页面关系更强,因为 LLM 在交叉链接上不可靠,而源的前置元数据是机械维护的。EdgeQuake 在整个语料库中为实体和关系累积源 ID,因此同一实体来自不同源的重复提及会增强其溯源权重。second-brain 将源作为其词汇索引复合键的一部分,使单个文档可以从多个流水线中独立索引。没有互惠溯源,你无法回答“显示这个系统中来自同一对话的所有内容”或“我们从那个文档还学到了什么?”
六个维度是正交的,但彼此强化。没有标识,源溯源就毫无用处(你需要先命名事实才能追踪它)。没有置信度,版本控制就更弱(你知道编辑的谱系,但不知道系统对其中任何一个有多确定)。互惠查询依赖于源首先存在。所有六个维度都具备的系统,其记忆不会无声地腐烂。
三个实现成熟度层级
语料库根据溯源存在的位置以及它在读取时能做什么,分为三个层级。
层级 1 是无溯源 RAG,大多数团队的起点。扁平向量存储,包含内容和嵌入。没有源列、置信度分数、版本历史。当检索到一个事实时,你得到文本和相似度分数。你无法追溯它来自哪里、系统对它有多确定、或者它是否已被取代。所有从这里起步的系统都随着时间的推移向层级 2 移动。
层级 2 在行上携带溯源。源 ID、置信度、版本——都与事实一起作为列存在。mem9 位于这里,每一行上都有源、Agent ID、会话 ID 和版本。Supermemory 的版本化 DAG 是层级 2 结构。Graphify 的三级边置信度是层级 2 纪律。溯源对查询可用,但不会自动装饰检索结果。你需要编写使用它的查询。
层级 3 在读取结果上装饰溯源上下文,无需调用者专门请求。Hindsight 是这里的参考——每个检索到的事实到达时已经附带源类型、置信度分数、新鲜度状态和每个检索器的排名。消费结果的 Agent 将溯源视为事实的一部分,而不是单独的查找。mem9 的源话轮装饰介于层级 2 和层级 3 之间,将读取时上下文嫁接到层级 2 模式上。
迁移是单向的。没有系统会从层级 3 开始然后决定移除溯源纪律。一旦列存在,它们就会证明自己的价值。如果你今天正在设计一个记忆系统,问题不是“我需要溯源吗?”而是“我想从哪个层级开始,同时知道每个高于我选择的层级在以后达到都比现在内置更难?”
警示案例:计算了但丢弃了
Understand-Anything 展示了当置信度的基础存在但记录它的列不存在时会发生什么。该系统区分确定性边(由项目扫描器从源文件解析得到)和推断边(由 LLM 在语义分析期间猜测得到)。这个信息是真实且有意义的——结构性的导入边应该比非代码的推断边获得更高的置信度。但两者都以权重 0.7 存储,在图里完全相同。置信度信号在写入时计算,并在持久化前被丢弃。
添加一个置信度字段将是一个很小的改动,却能带来巨大的信息质量回报。该系统已经知道哪些边是可靠的、哪些是猜测的。它只是在重要的地方没有记录这个区别——在稍后检索时的那一行上,当 Agent 需要区分它们时。这个模式在语料库中的多个系统里出现:信息在写入时可用、捕获成本低,然后因为没有人添加列而丢失了。
正确构建的真实成本
溯源需要字节。源 ID、置信度分数、版本计数器——每个都为每行增加几个字段。在规模上这很重要,但远不及在生产中出现问题且你无法追溯系统为何给出错误答案时没有它们的代价。
计算成本低于预期。置信度评分通常需要在写入时额外调用一次 LLM(或者对于结构性事实使用确定性启发式),这个成本会在后续每次读取中被摊销。源追踪除了记录一个已经存在的标识符外没有额外成本。版本控制只需要一个额外的列或每次写入时的一次追加,而不是完整快照。Hindsight 的观察层会增加与检索并用于回答的事实数量成正比的存储,但只记录 Agent 实际消费的内容,而不是它看到的所有内容。
运营成本才是真正的问题。层级 3 的装饰意味着每次检索时流动的数据更多,这会略微增加上下文窗口使用量和响应延迟。实现这一点的系统通过保持装饰简洁来处理它——源类型枚举、置信度浮点数、新鲜度状态——而不是内联完整的溯源树。Agent 获得足够的信息来区分,而不会被元数据淹没。
最强实现的共同点
值得重申语料库中的典范,因为没有任何两个解决了同一片问题:
OpenContext 生成 UUID,这些 UUID 能经受住任何文件系统重组,并将其作为引用方案暴露给 Agent,Agent 可以直接使用。mem9 在每一行上携带源、Agent ID、会话 ID,每次更新携带版本,并用指定的预算将搜索结果装饰上源话轮上下文。Supermemory 将记忆视为带类型边的版本化 DAG,给每个信念提供提交历史。Hindsight 将每个检索并用于回答的事实捕获到一个观察层中,附带完整的源溯源、演化历史和每个检索器的排名。Graphify 为每条边标记三级捕获置信度,将不确定的边呈现给人审阅,而不是将其视为事实。
统一的观察很直白:溯源不是元数据,而是事实的一部分。以这种方式对待它的系统,其记忆不会无声地腐烂,其矛盾可以被裁决,其幻觉可以被追溯,其信念历史可以回溯到过去的任何时间点,而无需提前预见到这种需求。
而那些不这样做的系统,其用户最终会明白,他们一直信任的记忆不过是一座孤岛。
溯源是你在写入时能买到的最便宜的保险。这种纪律是在你发现自己需要它之前就把它买好。
觉得本文有用?请分享,让更多人看到 :)
下一篇文章将介绍混合检索和 RRF——这个模式让你能够结合向量和关键词信号,而不会让其中一个淹没另一个——当溯源告诉你某个事实是可靠的,但仅凭相关性会将其埋没时,这一点尤为重要。那篇文章即将推出。





