跳到主要内容

引用链接依然有效,但内容已不再是模型引用的原文

· 阅读需 10 分钟
Tian Pan
Software Engineer

一个 RAG 智能体用一段简洁的文字和一条引用回答了客户的监管问题。验证层获取了该 URL,看到返回码为 200 OK,勾选通过并发布。六个月后,合规性审计调取了对话记录,点击同一个链接,却发现页面现在的内容与智能体引用的完全相反。URL 没问题,对话记录中的引用也没问题,但两者不再匹配。客户的合规官询问智能体是否捏造了引用,而团队无法证明它没有捏造,因为证明该 URL 过去内容的唯一证据就是智能体自己声称它说过什么。

这不是通常意义上的幻觉。模型检索到了真实内容,忠实地提取了真实的句子,并给出了一个至今仍可解析的真实 URL。世界上任何链接检查工具都会认为这个引用是有效的。然而,审计依然失败了,因为验证层衡量的是错误的属性。可访问性(Reachability)并不等同于忠实度(Fidelity)。URL 只是指向受他人编辑控制的可变文档的指针,一旦文档发生变化,每一份引用它的对话记录都会变成一个随时可能爆发的“幻觉报告”。

2016 年的一项学术引用研究发现,学术出版物中大约四分之三的 URI 引用所指向的内容在引用后发生了实质性变化。这个数字比大语言模型(LLM)早了五年。如果再加上一个每天向成千上万名客户引用这些 URL 的智能体,审计轨迹的腐烂速度将与开放网络的速度同步——也就是说,比你制定的数据留存策略失效得更快。

URL 耐久性不等于来源耐久性

大多数团队交付的验证层将引用视为 (声明, URL) 的二元组,并通过获取 URL 并检查响应状态码来验证。这是一个范畴错误。声明是对文档在特定时间点的表述。URL 则是一个指向当前位于该位置的任何内容的名称。两者在引用时相关,此后永远脱节。

在这种混淆中隐藏着三种失效模式。页面在原位被静默编辑,没有版本标识,且 URL 持续可解析——这是大多数新闻网站、监管门户和公司控制的文档的标准编辑流程。页面被移动,重定向返回了相同逻辑名称下的另一个文档——这在 CMS 迁移和收购中很常见。页面被删除并替换为软 404(返回 200 OK 但不包含原始声明)——这在撤回内容是核心目的的合规场景中非常普遍。

在这三种情况下,验证检查都会通过。但被引用的声明已不再存在于引用的位置。对话记录是唯一记录了模型认为它在引用什么的产物,而对话记录的权威性正是争议所在。

为什么审计框架让情况变得更糟

在低风险的消费级产品中,引用漂移(citation drift)只是一个用户体验问题:用户点击链接,发现内容与智能体说的不符,然后耸耸肩。但在受监管的环境中,这种不对称性是残酷的。构建智能体的团队有动力展示引用。而审计智能体的团队——有时是同一团队的合规对口部门,有时是监管机构,有时是客户的法律部门——则有动力根据实时源进行验证,因为那是唯一真实性独立于智能体声明的来源。

审计员的合理立场是:与被引来源不匹配的引用就是幻觉的证据。而团队的立场——“来源过去确实说过我们引用的内容”——则是一个没有任何证据支持的说法,除了对话记录本身,而这正是受调查的对象。团队每次都会输掉这场辩论,不是因为智能体捏造了引用,而是因为团队的验证层从未保存过唯一能闭环的证据。

更深层的问题在于,团队的合规姿态建立在一个无法经受开放网络考验的假设之上:引用的指代对象在对话记录的生命周期内是稳定的。没有人写下这个假设。也没有人评估过如果这个假设破裂会付出多少代价。与客户的合同规定智能体的回答是可审计的。而架构在没有告知任何人的情况下,悄然继承了开放网络的可变性。

引用时快照,而非审计时快照

以最低架构成本实现最大效果的修复方案是:在引用发生的时刻抓取被引内容,并将其与响应一同存储。当智能体发出引用时,系统获取引用来源的具体段落(或更大范围的内容),对其进行哈希处理,并将内容和哈希值与对话记录一起持久化。审计对比的对象将是对话记录中的引用与快照,而不是对话记录中的引用与 URL 今天提供的内容。

这种模式已有先例。Memento 协议是一种自 2009 年起就存在、作为 Wayback Machine 基础的 HTTP 扩展,它正式区分了 URI-R(原始资源,可变的)和 URI-M(纪念物,资源在特定日期的固定版本)。指向 URI-M 的引用具有耐久性,而指向 URI-R 的引用则没有。大多数 RAG 系统发出 URI-R,因为那是源页面提供的内容。在引用时将 URI-R 与私有快照配对的系统,实际上是在内部实现 Memento 协议在机构层面所做的事情:将引用锚定在一个时刻。

有三点实现注意事项。第一,只快照包含声明的最小范围,而不是整个页面——页面级快照会增加存储压力,并因包含模型从未参考的内容而使审计复杂化。第二,使用内容寻址方案对快照进行哈希处理,以便审计能证明持有快照的团队没有对其进行篡改。第三,快照现在属于敏感数据——如果源页面有付费墙、版权保护或包含个人身份信息(PII),团队就吸收了之前不曾面临的内容许可或隐私问题。请为此做好规划。

将漂移检测作为一等任务

在引用时进行快照解决了审计问题,但它并不能解决面向用户的问题:如果客户今天点击引用链接,发现内容与智能体(agent)当时所说的不同。为此,一种定期重新抓取引用并将其与存储的快照进行对比的重新验证任务(re-verification job)才是正确的原语(primitive)。

该任务的输出并非简单的二元通过/失败,而是一个包含几个有用层级的漂移信号:

  • 完全一致 (Identical):源内容与快照逐字节匹配。引用的持久性与底层页面一致。
  • 表面漂移 (Cosmetic drift):空格、格式或周围的模板内容发生了变化;引用的片段保持完整。引用仍然值得信赖。
  • 实质性漂移 (Material drift):引用的片段已被修改、移动或删除。在 URL 中已无法找到对话记录中的引用。面向用户的 UI 应当显示“自生成此回答以来,来源已发生变化”的警告,理想情况下还应附带智能体实际引用时的快照链接。
  • 反转 (Reversal):引用的片段已被编辑,其表达的意思发生了改变,从而改变了主张的含义。这是审计事故的情况。该对话记录应标记为待审查,任何由此响应派生的下游产物(如摘要、建议、合同条款)都应重新评估。

如果一个团队每晚对引用索引运行此任务,就能持续获得信号,了解他们引用的语料库中有多少正在发生“侵蚀”。该信号也是采购决策的输入——漂移率高的来源,智能体应当减少依赖,或者在引用时明确说明注意事项。

数据保留与主张的生命周期

快照模式迫使人们思考的架构问题,也是团队最不愿回答的问题:快照应该保留多久?引用有一个自然的保留期——即任何引用它们的响应的生命周期。如果团队为了满足监管机构的要求而将对话记录保留七年,那么引用的快照也必须保留七年。如果一个团队在引用时进行快照,但按 30 天滚动窗口清理快照,那么他们建立的审计追踪将按照存储预算的速度、而非按照履行义务的速度衰减。

如果采购合同规定智能体的输出是可审计的,那么隐含地,它也是一份针对审计所需每项证据的保留合同。团队的数据工程师和合规官通常还没有进行过这种沟通。这种问题第一次出现通常是在存储账单超过模型账单时,财务团队会问,为什么一个聊天机器人要为一个文档仓库付费。坦率地说,答案是:从聊天机器人提供引用的那一刻起,它就继承了监管机构的证据保留要求。存储成本就是能够为答案进行辩护的成本。

引用是关于某一时刻的主张

架构上的共识应该是,大语言模型(LLM)响应中的引用并不是指向来源的指针。它是关于该来源在特定时刻所说内容的主张,只是为了方便起见附加了一个 URL。URL 是该主张中最容易验证的部分,也是信息量最少的部分。困难的部分——也是验证层真正需要做的——是以一种在来源编辑后仍能存续的形式,保存赋予该主张意义的内容。

将 URL 视为引用单元的团队,其发布的审计追踪的半衰期取决于他们引用的每个站点的编辑频率。而将引用的片段视为引用单元、在引用时进行快照、对其进行哈希处理并随对话记录一同保留的团队,则发布了一个比来源更长久的审计追踪。在引用发出的那天,这两者的区别是不可见的。但在审计降临的那天,这就是唯一重要的事情。

修复成本并不高。昂贵的是必须先进行的对话:即“智能体引用其来源”这一架构意图,是团队代表开放互联网做出的一项承诺,而开放互联网并未同意受此约束。在审计降临前弥合这一差距的团队,构建了一个名副其实的系统。而没有这样做的团队,则构建了一个尚未触发的幻觉报告。

References:Let's stay in touch and Follow me for more thoughts and updates