审阅台上摊开一页纸,右侧一列条目被牵出细线连到另一叠卡片上,其中几条线在半空中断开,断口处夹着空白标签

一、先说清楚这篇不管什么、只管什么

据公开报道,代码托管平台上出现了一个自动生成学术论文初稿的工具,宣称能够带参考文献产出,另外还具备检索能力。工具名称与它的宣称一律按公开报道处理,我们不据此评价它的实际效果,也不推断它产出的引用准确率有多高——这类结论只能由使用者拿自己的样本测出来,任何厂商的说法都不算。

需要划的边界有两条。第一条:本文不涉及任何规避学术不端检测的做法。校验引用是为了让文档可核,不是为了让它通过机器检查,这两件事方向相反,把校验做成对抗只会让文档更难核。第二条:本文不评价任何期刊、任何出版物或任何研究方向的水平,讨论对象只是”一条引用能否被接收方验证”。

我们真正要处理的情景比论文宽得多:调研报告、投标材料、合规说明、给客户的技术方案,越来越多环节由生成模型参与起草,而它们的共同特征是接收方没有时间逐条重读。这些场景里的引用错误并不比学术场景危害小——一份投标书里指向不存在标准的条款引用,或者一份调研报告里方向被引反了的结论,都会在后续环节被当作已核实的事实继续传递。所以问题的正确提法是:接收方怎样用一套分层规则,把”这条引用能不能信”变成机器与人都能回答的工程判断。

二、三档校验:可信度是分层的,不是有无问题

我们习惯把引用可信度拆成三层,每一层回答一个不同的问题,成本和失败形态都不同。

档位 回答的问题 可实现手段 典型失败形态 检出成本 这一层漏掉的
第一档:存在性 这个被引对象是否真的存在 标识符格式与校验位检查;在书目库或索引库中能否命中;解析后能否落到一个可访问的记录 编号合规但查无此物;标题命中而编号指向另一篇 低,可全量自动跑 真实文献被错引、被引错方向
第二档:一致性 文中写的这条引用,与它指向的那篇是不是同一篇 题名、年份、作者、卷期页码多字段交叉比对;至少取两个独立来源;字段投票与差异记录 作者被截断、预印本与正式版并存、页码偏移一位、年份取了提交年 中,需多源查询与规则维护 引用的确存在且一致,但内容不支持这句话
第三档:支撑性 被引文献的结论方向,是否支撑本文引用它的那句话 原文片段与引用句做语义比对;按主题与风险分层抽样;人工复核 结论方向相反;只引用了方法却当作结论;引用了前提假设当作已被证实 高,需要读到原文并有人判断 无——这一层本身也会有判断分歧

这张表的关键读法是最后两列。第一档便宜,全量跑得动,但它筛掉的问题远少于大家以为的:一条编号能被解析、能在库里命中,说明的是”有这篇东西”,跟”这句话能不能用它”毫无关系。第二档需要维护多源与规则,但它是自动化的收益边界,再往上就进入需要人参与的区间。绝大多数流水线的做法是把第一档当全部,于是文档看起来”引用都过了检查”,实际上支撑关系一条都没验证过。

三、第一档的实现要点与它的天花板

第一档看起来最简单,做起来有若干坑。标识符检查不能只做正则格式,还要做校验位与区间检查,因为生成出来的编号往往”格式漂亮、内容随机”。库命中的判断要注意匹配对象:按编号命中与按标题命中是两条路径,二者不一致时要单独记录,这属于第一档里最可疑的信号,不能默认取其中一个。解析后的落地地址能访问不等于内容存在,重定向到检索页、落到一个同名不同物的记录,都是常见的假通过。

关于数据源本身要提醒一句:开放书目库不是权威。它们由抓取、投稿与自动抽取累积而成,包含错误条目、重复条目与已被撤稿但仍未标记的条目;把两个库都不一致的条目当成”已验证”,等于把错误复制了两遍。我们的做法是给每条书目来源标注可靠性档位与更新时间,并在文档里记录本次校验依据的是哪个库的哪个快照。这样日后复算时能解释”当时为什么判它通过”。

第一档的天花板是明确的价值:它适合做硬门槛,不通过就整条退回,不进人工环节。这也意味着它必须足够便宜、足够确定,规则不能靠人的临场判断。

四、第二档:一致性靠多字段投票,而不是一个总分

一致性校验的实现思路是:把一条引用拆成若干独立字段,逐字段找至少两个来源比对,按字段而不是按整条引用给状态。原因是字段之间的可靠性差别很大。题名最容易命中但也最容易被改写;年份在预印本、会议版、期刊版之间会漂移;作者列表在长名单里常被截断成”第一作者等”;卷期页码最刚性,也最容易一位之差。

我们建议的状态是四种而不是两种:一致、不一致、缺失、无法比对。第四种很关键——某个来源没有该字段,与”两个来源给出不同值”是完全不同的信号,混在一起会让报表失去意义。所有比对结果要保留原始值,不要只留一个布尔值,否则复核的人无法判断分歧在哪。

有一个必须避免的做法:用生成这段引用的同一个模型去自查引用是否正确。模型对同一上下文给出的判断与生成时的判断共享同一套倾向,这类”自证”在工程上不成立,它只能证明输出稳定,不能证明内容真实。第二档至少要用独立于生成环节的检索通道,取不到独立通道时,就应当把该条引用标为”未经独立核验”,而不是当作通过。

五、第三档与引用锚点三元组

支撑性校验要落到一条具体关系上:本文的这句引用,与被引文献的哪一段之间是什么关系。为了让人工抽检不必每次重读全文,这件事必须留下结构化痕迹。我们把它定成”引用锚点三元组”,字段如下。

字段 含义 填写要求 用途
引用句标识 本文中使用该引用的句子或段落编号 由文档结构自动生成,不接受手填 定位与回溯
原文片段 被引文献中支持或被声称支持的那段文字 逐字摘录,含所在章节标题 判断支撑关系的最小证据
定位信息 页码或章节位置,附所读版本标识 版本必须写明,预印本与正式版分开 复核时无需重新检索
关系类型 支撑、方法来源、背景、对比、反对 五类内选一项,禁止留空 防止把相反结论当支持性引用
方向判定 原文结论与本文表述的方向是否同向 同向、反向、无关三值 反向即为必须处理的错误
比对方式 自动语义比对、人工阅读或两者皆有 记录模型版本或复核人 可追溯性与责任归属
抽检标记 是否属于抽样复核的样本 分层抽样规则自动生成 支撑性核验率的统计基础

这七个字段里,”关系类型”和”方向判定”是分层的落点。自动生成环节最容易出的错不是编造文献,而是把方法引用当结论引用、把反对意见引用当支持意见引用。这两类错误在第一档、第二档都查不出来,只有落到”原文片段加方向判定”这种最小单元时才会显形。第三档不可能全量做,因此必须抽样:按主题分层,按风险分层——直接影响结论或报价的引用高比例抽,仅作背景介绍的少抽,写进对外承诺的那一类全量人工复核。抽样规则要在文档定稿前就写下,不能出事后补。

六、流水线的分档策略与接收方怎么定验收

把三档接成一条流水线,我们的分配方式很固定:存在性做硬门槛,不通过就退回,不进入后续;一致性做告警,状态为不一致或无法比对的条目集中由人处理,允许带着明确标记进入草稿;支撑性做分层抽样,未过或未经核验的引用在最终文档里必须显式标注为”未核验”,而不是悄悄留着。最后这一条是整个方案里最重要的纪律:一条没人验过的引用与一条验过失败的引用,风险是同级的,但前者在报表里会被统计成”通过”,于是文档的可信度被虚增。显式标注会让下游读者有防御机会,静默通过不会。

接收方给交付文档定验收标准时,可以把三档分别做成可量化项:引用核验覆盖率(跑了哪一档、覆盖多少条)、抽样比例与抽样规则、未核验条数的上限、以及责任归属条款(谁提供、谁核验、发现错误后如何处理与通知)。这四项在合同里写清楚,比写一句”内容须真实准确”有用得多,因为后者无法执行。

同一套校验搬到企业文档上对应关系是直接的:学术场景里的参考文献,在调研报告里对应数据来源与出处链接,在投标材料里对应标准与规范条目,在合规说明里对应法规条款与项目验收依据。条目类型不同,三档的问题形式没有变——它存在吗,它是我们写的那个它吗,它真的支撑这句话吗。

洹拓在交付里承担的是两件具体的活:把三档校验做成文档流水线里的可运行环节,并把锚点三元组作为文档的结构化附属物一并交出去,让接收方复核时不必重读全部原文。我们不会把”AI 生成的引用都不可信”当成结论,也不会反过来承诺任何准确率数字——能承诺的只有流程:哪几条跑了哪一档、结果状态是什么、未核验的有几条、由谁签的字。一份文档的可信度,最后就落在这几句话能不能被复算上。