
凭空捏造法庭判例的 AI——以及我们为杜绝这类捏造而构建的架构
我清楚地记得那一刻,我不再信任大多数人构建法律AI的方式。
那是一个周二的深夜,我正在阅读一份庭审记录,来自Mata 诉 Avianca 案。不是摘要,也不是一串推文。是真正的诉讼文件。一名律师提交了一份法律意见书,援引了Varghese 诉中国南方航空公司案、Shaboon 诉埃及航空案,以及Petersen 诉伊朗航空案 —— 完整列出了案卷编号、日期和引用的判决要旨。逼真到对方律师不得不去查找它们。这些案件根本不存在。是 ChatGPT 凭空捏造的。而当这名律师回到 ChatGPT 去复核时,模型还兴高采烈地确认了自己的捏造:“是的,这些案件确实存在,可以在知名的法律数据库中找到。”
我放下那份记录,心想:这不是提示词的问题。这是架构的问题。而大多数法律AI行业却假装并非如此。
那起事件——最终导致了 5,000 美元的罚款、一次司法申斥以及声誉的塌方——成了我在 Veriprajna 的团队如今所构建之物的奠基案例研究:面向法律AI的引用强制型 GraphRAG 系统。在这类系统中,AI 在物理上无法输出一个与知识图谱中经过验证的条目不相对应的案件引用。不是“很可能不会”。而是无法做到。
我想解释为什么这个区别至关重要、构建它需要付出什么,以及为什么我相信:给一个基础模型套上聊天机器人界面就称之为“法律AI”的时代已经结束了。
为什么 ChatGPT 会凭空捏造一起法庭案件?
这是每个人都会问的问题,而几乎没有人能正确回答。
常见的解释是“幻觉”——这个词已经被滥用到失去了它的诊断价值。在Mata 诉 Avianca 案中真正发生的事情更为具体,也更令人无从辩解。当时模型被要求查找关于航空公司对乘客受伤所负责任的判例。它并没有去检索数据库。它根本没有数据库。它预测的是下一个在统计上最可能出现的词序列。
“Varghese”是一个听起来可信的原告姓名。“中国南方航空公司”是一个听起来可信的被告。像“2017 WL 3245891”这样的案卷编号符合真实引用的句法模式。模型拼凑这些片段的方式,和它拼凑一首诗或一封营销邮件的方式如出一辙——通过最小化一种叫做困惑度的东西,它本质上是衡量模型对自身输出有多“惊讶”的一个指标。低惊讶等于流畅的文本。而流畅的文本并不等同于真实的文本。
模型被训练去最小化困惑度——即它对下一个词有多惊讶。它并没有被训练去优化溯源性——即那个词是否能追溯到某个真实存在的东西。
这就是核心的张力所在。大语言模型优化的是连贯性。而法律要求的是溯源性。这是两个根本不同的目标,任何提示词工程都无法弥合这道鸿沟。你可以告诉 GPT-4:“你是一位谨慎的律师,只引用真实的案件。”它会点头照做——直到它的训练数据里不包含你所需要的那个案件为止,届时它就会捏造出一个听起来对味的案件,因为“听起来对”正是它被优化去做的事。
斯坦福的研究人员对此进行了严格的测试。通用型聊天机器人,即便是那些具备联网能力或基础检索能力的,在复杂的法律查询上,也会在58% 至 82% 的情况下产生幻觉。这不是边缘案例。而是常规的法律研究问题。
套壳陷阱
在Mata 案之后,我开始盘点市面上的法律AI工具。它们中的大多数都是业界委婉地称之为“套壳”的东西——在 OpenAI 或 Anthropic 的 API 之上叠了一层薄薄的用户界面。一句写着“你是一位乐于助人的法律助手”的系统提示词。也许有个 PDF 上传功能。也许字体好看一点。
我曾和一位潜在客户通过电话——她是一家中型律所的总法律顾问——她告诉我,他们一直在评估其中一款工具。“它很快,”她说,“但上周它把一份异议意见当作多数派判决要旨引用了。我的助理律师差点就把它提交上去了。”她停顿了一下。“可怕的是,那个案件是真实存在的。只是那个判决要旨……错了。”
这正是法律幻觉中让我夜不能寐的地方。Mata 案之所以骇人听闻,是因为那些案件是完全被捏造出来的。但那些更隐蔽的错误——真实的案件、错误的判决要旨;有效的成文法、却已被废除;具有约束力的判例、却来自错误的司法管辖区——更难被发现,而且可以说更加危险。一个假案件会在第一道验证环节就被标记出来。而一个真实的案件,被引用来支持一个它其实并不支持的论点呢?那可能会挺过一轮又一轮的审查。
套壳的做法无法解决这个问题,因为它并不拥有数据层。它不知道哪些案件存在。它不知道哪些案件已经被推翻。它不理解第二巡回上诉法院的一项裁决对第九巡回区的法院并无约束力。它只是一个连接到概率引擎的花哨文本框。
而其经济账更是惨烈。对套壳市场的分析表明,尽管有些能够迅速实现营收,但绝大多数都会失败,因为它们缺乏任何可防御的技术。随着基础模型的改进,每一个曾让套壳变得有用的功能——摘要、起草、问答——都会被吸收进基础模型本身。你是在租来的土地上盖房,而房东是 OpenAI。
当你给 AI 一张法律的地图时会发生什么?

这就是我的团队执念开始的地方。
针对幻觉的标准解法是检索增强生成——RAG。你不再依赖模型的记忆,而是从数据库中检索相关文档,将它们作为上下文喂给模型。这是一个实实在在的改进。但对于法律而言,它还不够,我想用一个曾让我们抓狂数周的具体例子来解释为什么。
我们当时正在一个问题上测试一个标准的 Vector RAG 流水线:某项 1990 年的环境法规在 2023 年最高法院的一项裁决之后是否仍然可以执行。Vector RAG 做了它该做的事:它找到了与查询在语义上相似的文本块。它返回了那项法规。它返回了最高法院的意见书。它返回了一篇同时讨论两者的法律评论文章。
大语言模型把它们缝合成了一个自信、行文优美的答案,而这个答案完全是错误的。它把那篇法律评论文章——一篇有说服力但不具约束力的学术评论——当作了与最高法院判决要旨具有同等分量的东西。更糟的是,它没有发现那项法规实际上已经失效,因为连接该法规与那项使其失效的裁决之间的权威链条,是穿过一个向量搜索并未检索到的中间上诉审案件的。这种关联不是语义上的。它是结构上的。
我记得我的首席工程师,在调试这个问题调到一半时,转向我说:“问题不在于检索。问题在于向量并不理解关系。”
她说得对。而这正是GraphRAG背后的洞见——基于图的检索增强生成。
我们不再把法律文档存储为向量空间中孤立的点,而是把它们映射进一个知识图谱:一个网络,其中每一部成文法、每一起案件、每一项法规和每一条法律原则都是一个节点,而它们之间的关系——引用、推翻、区分、解释、维持——都是显式的、带标签的边。我在我们研究的交互式版本中详述了完整的架构。
Vector RAG 问的是:“找出看起来像这个查询的文本。”GraphRAG 问的是:“找到成文法,遍历‘解释’这条边去找到判例法,然后遍历‘推翻’这条边以确保它依然有效。”
这不是一个微妙的差别。这是凭感觉在图书馆里搜索,与同时借助卡片目录、引证索引和 Shepard's 报告来搜索它之间的差别。
如何阻止一个 AI 凭空捏造引用?

这是我们花了最长时间才做对的部分,也是我最引以为傲的部分。
拥有一个知识图谱是必要的,但还不够。图谱给了你结构。但大语言模型依然是在逐个词元地生成文本,在任何一点它都可能偏离图谱、开始凭空捏造。我们需要一种机制,它不只是鼓励模型去引用真实的案件——它要在物理上阻止模型去引用假案件。
我们把这称为图约束解码,其核心机制是一种叫做 KG-Trie 的东西。
用大白话来说,它是这样工作的。我们取出知识图谱中每一个有效的实体——每一个案件名、每一个判例汇编引用、每一个案卷编号——并用这些标识符构建一棵前缀树(Trie)。当大语言模型在生成文本、走到即将输出一个引用的那一点时,约束机制便被激活。它检查:根据 Trie,有效的下一个词元有哪些?
如果模型已经生成了“Mata v. A”——Trie 会允许那些能补全以该字符串开头的有效案件名的词元。“Avianca”是有效的。其他一切的概率都被设为负无穷。被阻断。
如果模型试图生成“Varghese v. Chi”——Trie 找不到任何有效的后续。生成被叫停。模型被迫回溯,要么找到一个真实的引用,要么输出类似“未找到判例”的内容。
AI 无法幻想出一个案件,因为它在物理上就无法输出一个不在经过验证的数据库中的案件的词元序列。
这是一种结构性保证,而不是一种概率性保证。我们说的不是“模型产生幻觉的可能性降低了 95%”。我们说的是那条捏造的通路被封死了。一个假引用的词元序列从字面意义上就无法被生成出来。
现在,我想精确地说明这做到了什么、又没做到什么。它防止的是捏造——凭空发明一个不存在的案件。它并不防止误读——引用一个真实的案件却从中得出错误的结论。那是一种推理错误,它仍然需要人工审查。但消除捏造的意义是巨大的。它把最灾难性的失败模式——Mata 案那样的场景——彻底从桌面上拿掉了。
在开发早期有一个夜晚,我们运行了第一次端到端测试。我们用当初在Mata 案中产生那些假引用的完全相同的查询去提示这个系统。这个受约束的系统试图生成“Varghese”,撞上了 Trie 的墙,回溯,然后返回了一个带有有效引用链条的真实案件。我的工程师在凌晨 1:47 把一张截图发到了我们的群聊里。没有人用文字回复。只有一排火焰表情。
为什么套壳做不到这一点?
人们不断地问我这个问题,而答案是架构层面的,而非商业层面的。
图约束解码需要在生成过程中实时操纵模型的词元概率——也就是它的 logits。你需要在解码层面访问推理引擎。像 GPT-4 这样的标准商业 API 并不暴露这一点。你可以发送一个提示并获得一个响应。你无法在词元生成的中途拦截生成过程并注入约束。
这就是为什么我们构建在开放权重模型之上——Llama、Mistral——或者通过允许自定义解码循环的企业级端点来部署。我们自己托管模型。我们掌控推理流水线。我们在每一个词元生成的当下,把 KG-Trie 约束直接注入到它的概率分布中。
一个套壳,就其定义而言,无法做到这一点。它调用的是别人的 API。它是乘客,而不是驾驶员。
没人谈起的最难的部分
构建那套约束机制在智识上是令人满足的。而构建它底下的那个知识图谱则是一场苦役。
法律文本的杂乱程度足以让一个数据工程师落泪。同一个案件可能被引述为“Mata v. Avianca”“Mata”“678 F. Supp. 3d 443”“Avianca 那个案子”,或者干脆就是“Id.”——一个两个字母的缩写,意思是“我刚刚提到的那个案件”。所有这些都必须解析到图谱中同一个规范节点上。漏掉一个,你的引用网络里就出现了一个缺口。
我们花了数月来构建实体解析流水线,处理去重(“Smith v. Jones, 123 F.3d 456”和“Smith, 123 F.3d at 456”是同一个案件)、消歧(“Smith v. Jones (1995)”对“Smith v. Jones (2002)”——不同的案件,相同的名称),以及解析“Id.”引用这一特有的地狱般难题——要用滑动窗口的上下文解析来完成。
然后还有否定性处理——即那套“红旗”系统。一个把已被推翻的案件当作有效权威的法律知识图谱,比毫无用处还要糟糕。我们摄入引证器信号——诸如“overruled(已推翻)”“abrogated(已废止)”“superseded(已取代)”这样的措辞——并把它们编码为图谱中的阻断边。当系统遍历一条路径并撞上一条 OVERRULES(推翻)边时,那条路径对于具有约束力的权威而言就被作废了。如果有人询问关于生育权的Roe 诉 Wade 案,图谱会立即浮现出来自Dobbs 诉 Jackson 案的 OVERRULES 边。而一个向量搜索可能仍会热情洋溢地引用Roe 案,因为支持它的历史文本的庞大数量主导了相似度得分。
关于图谱模式、实体解析流水线和约束架构的完整技术剖析,请参见我们的研究论文。
这对一家律所究竟意味着什么?
我曾和一位管理合伙人有过一次对话,他直言不讳地说:“我不在乎什么知识图谱。我在乎的是我的助理律师会不会在法官面前让我难堪。”
有道理。那么让我来翻译一下。
至于Mata 诉 Avianca 案的代价,并不是 5,000 美元。它是公开的羞辱、通知客户的义务、执业过失的风险敞口,以及向每一个潜在客户发出的信号:这家律所不核实自己的工作。对于一家大型律所而言,一份幻觉出来的诉讼文件就是一起关乎存亡的声誉事件。
引用强制型 GraphRAG 起到了一份针对捏造的保险单的作用。套壳的做法提供的是低廉的前期成本和无限的责任。我们的做法则需要在数据层和约束架构上进行实实在在的投入,但它把引用捏造的风险降到了零。
这里还有一个不那么显而易见的效率论点。眼下,如果一家律所用 AI 来做研究,一名助理律师就必须核实每一处引用。这个核实步骤往往比研究本身还要耗时,这就违背了初衷。GraphRAG 的基准测试显示,在多跳推理任务上——也就是那种在诉讼中真正要紧的、复杂的、要把点连起来的研究——它比标准 RAG 有30-35% 的提升。更重要的是,由于引用在结构上被保证是有效的,人的角色便从“事实核查员”转变为“策略审查者”。你不再花三个小时去确认那些案件是否存在。你把那段时间花在论证是否有说服力上。
当每一处引用都在结构上得到验证时,律师的工作便从对 AI 做事实核查,转变为思考策略。真正的杠杆就在那里。
还有一个对合规而言至关重要的透明度维度。一个套壳无法解释它为什么选了某个案件。而一个 GraphRAG 系统可以展示确切的遍历路径:“我选择案件 A,是因为它解释了成文法 B,并且得到了法院 C 的维持,而后者在你的司法管辖区具有约束力。”那条审计追踪链条不只是锦上添花——它正在成为一项监管上的预期。
接下来会走向何方?
整个行业正在从聊天机器人走向智能体——那种不只回答问题、还能规划并执行多步骤任务的 AI 系统。一个被要求起草驳回动议的法律智能体,需要研究适用的标准、找到支持性的判例法、核实那些案件是否为有效法律、检查程序性要求,并组装出论证。
一个运行在向量搜索之上的智能体没有地图。它有的是一堆文档和一个不错的猜测。而一个运行在知识图谱之上的智能体拥有一个它可以遍历的显式结构:成文法 → 解释性案件 → 程序规则 → 特定司法管辖区的要求。那张图谱就是智能体的规划层。
这就是为什么我相信,现在对图谱基础设施的投入会在日后带来复利式的回报。套壳留下的是聊天记录。而知识图谱留下的,是一张结构化的、不断成长的、价值日益增长的法律权威地图,它随着每增加一个案件、每编码一条关系、每摄入一个否定性处理信号而变得愈发有用。
诚实的反对意见
人们从两个方面提出反驳,我想直接地回应这两点。
第一:“这不就是多绕了几步的 Westlaw 吗?”不是。Westlaw 是一个给人用的搜索引擎。它返回律师去阅读和解释的文档。而我们构建的是一个给 AI 用的约束架构——一个管辖 AI 能说什么、不能说什么的系统。Westlaw 帮助律师找到法律。GraphRAG 阻止 AI 凭空发明法律。它们是互补的,而不是竞争的。
第二:“你就不能微调一下模型,让它别再产生幻觉吗?”我们试过。在工作的早期,我们在经过验证的法律数据集上做了微调实验。它降低了幻觉率。但它并没有消除幻觉。一个经过微调的模型仍然是一个概率引擎。它是一个更好的概率引擎,但在法律引用中,“更好”意味着“出错更少”,而“出错更少”并不是任何法院会接受的标准。保证零捏造的唯一办法,是让捏造在结构上变得不可能,这意味着约束输出空间,而不只是改进输入数据。
“够用就好”的终结
这就是我反复回到的那一点。法律职业建立在一个简单的前提之上:当你引用权威依据时,那个依据必须是真实的。不是很可能真实。不是通常真实。而是真实。
在Mata 案之后的两年里,法院一直在不断加码制裁、就 AI 披露发布常规命令,并明确表态:“是 AI 干的”并不是一种抗辩。这个职业正在划下一条线:如果你使用 AI,它的输出就必须经过核实。而如果核实这份输出比手动做这份工作还要耗时,那么这个 AI 就不是一个工具——它是一份负债。
套壳时代解决的是错误的问题。它让法律研究变得更快。它本该让法律研究变得值得信赖。没有信任的速度,不过是高效的执业过失。
我们在 Veriprajna 构建的,不是一个碰巧懂点法律的聊天机器人。而是一个受约束的推理系统,其中每一处引用都是一次穿过知识图谱的、经过验证的遍历,每一条关系都是显式且可审计的,而生成式模型在物理上被阻止跨入虚构的领域。
这个发明了具有约束力的判例这一概念的职业,理应拥有一个真正尊重它的 AI。