参考文献也是编出来的:生成文档里的引用要按三档校验

一、先说清楚这篇不管什么、只管什么
据公开报道,代码托管平台上出现了一个自动生成学术论文初稿的工具,宣称能够带参考文献产出,另外还具备检索能力。工具名称与它的宣称一律按公开报道处理,我们不据此评价它的实际效果,也不推断它产出的引用准确率有多高——这类结论只能由使用者拿自己的样本测出来,任何厂商的说法都不算。
需要划的边界有两条。第一条:本文不涉及任何规避学术不端检测的做法。校验引用是为了让文档可核,不是为了让它通过机器检查,这两件事方向相反,把校验做成对抗只会让文档更难核。第二条:本文不评价任何期刊、任何出版物或任何研究方向的水平,讨论对象只是”一条引用能否被接收方验证”。
我们真正要处理的情景比论文宽得多:调研报告、投标材料、合规说明、给客户的技术方案,越来越多环节由生成模型参与起草,而它们的共同特征是接收方没有时间逐条重读。这些场景里的引用错误并不比学术场景危害小——一份投标书里指向不存在标准的条款引用,或者一份调研报告里方向被引反了的结论,都会在后续环节被当作已核实的事实继续传递。所以问题的正确提法是:接收方怎样用一套分层规则,把”这条引用能不能信”变成机器与人都能回答的工程判断。
二、三档校验:可信度是分层的,不是有无问题
我们习惯把引用可信度拆成三层,每一层回答一个不同的问题,成本和失败形态都不同。
| 档位 | 回答的问题 | 可实现手段 | 典型失败形态 | 检出成本 | 这一层漏掉的 |
|---|---|---|---|---|---|
| 第一档:存在性 | 这个被引对象是否真的存在 | 标识符格式与校验位检查;在书目库或索引库中能否命中;解析后能否落到一个可访问的记录 | 编号合规但查无此物;标题命中而编号指向另一篇 | 低,可全量自动跑 | 真实文献被错引、被引错方向 |
| 第二档:一致性 | 文中写的这条引用,与它指向的那篇是不是同一篇 | 题名、年份、作者、卷期页码多字段交叉比对;至少取两个独立来源;字段投票与差异记录 | 作者被截断、预印本与正式版并存、页码偏移一位、年份取了提交年 | 中,需多源查询与规则维护 | 引用的确存在且一致,但内容不支持这句话 |
| 第三档:支撑性 | 被引文献的结论方向,是否支撑本文引用它的那句话 | 原文片段与引用句做语义比对;按主题与风险分层抽样;人工复核 | 结论方向相反;只引用了方法却当作结论;引用了前提假设当作已被证实 | 高,需要读到原文并有人判断 | 无——这一层本身也会有判断分歧 |
这张表的关键读法是最后两列。第一档便宜,全量跑得动,但它筛掉的问题远少于大家以为的:一条编号能被解析、能在库里命中,说明的是”有这篇东西”,跟”这句话能不能用它”毫无关系。第二档需要维护多源与规则,但它是自动化的收益边界,再往上就进入需要人参与的区间。绝大多数流水线的做法是把第一档当全部,于是文档看起来”引用都过了检查”,实际上支撑关系一条都没验证过。
三、第一档的实现要点与它的天花板
第一档看起来最简单,做起来有若干坑。标识符检查不能只做正则格式,还要做校验位与区间检查,因为生成出来的编号往往”格式漂亮、内容随机”。库命中的判断要注意匹配对象:按编号命中与按标题命中是两条路径,二者不一致时要单独记录,这属于第一档里最可疑的信号,不能默认取其中一个。解析后的落地地址能访问不等于内容存在,重定向到检索页、落到一个同名不同物的记录,都是常见的假通过。
关于数据源本身要提醒一句:开放书目库不是权威。它们由抓取、投稿与自动抽取累积而成,包含错误条目、重复条目与已被撤稿但仍未标记的条目;把两个库都不一致的条目当成”已验证”,等于把错误复制了两遍。我们的做法是给每条书目来源标注可靠性档位与更新时间,并在文档里记录本次校验依据的是哪个库的哪个快照。这样日后复算时能解释”当时为什么判它通过”。
第一档的天花板是明确的价值:它适合做硬门槛,不通过就整条退回,不进人工环节。这也意味着它必须足够便宜、足够确定,规则不能靠人的临场判断。
四、第二档:一致性靠多字段投票,而不是一个总分
一致性校验的实现思路是:把一条引用拆成若干独立字段,逐字段找至少两个来源比对,按字段而不是按整条引用给状态。原因是字段之间的可靠性差别很大。题名最容易命中但也最容易被改写;年份在预印本、会议版、期刊版之间会漂移;作者列表在长名单里常被截断成”第一作者等”;卷期页码最刚性,也最容易一位之差。
我们建议的状态是四种而不是两种:一致、不一致、缺失、无法比对。第四种很关键——某个来源没有该字段,与”两个来源给出不同值”是完全不同的信号,混在一起会让报表失去意义。所有比对结果要保留原始值,不要只留一个布尔值,否则复核的人无法判断分歧在哪。
有一个必须避免的做法:用生成这段引用的同一个模型去自查引用是否正确。模型对同一上下文给出的判断与生成时的判断共享同一套倾向,这类”自证”在工程上不成立,它只能证明输出稳定,不能证明内容真实。第二档至少要用独立于生成环节的检索通道,取不到独立通道时,就应当把该条引用标为”未经独立核验”,而不是当作通过。
五、第三档与引用锚点三元组
支撑性校验要落到一条具体关系上:本文的这句引用,与被引文献的哪一段之间是什么关系。为了让人工抽检不必每次重读全文,这件事必须留下结构化痕迹。我们把它定成”引用锚点三元组”,字段如下。
| 字段 | 含义 | 填写要求 | 用途 |
|---|---|---|---|
| 引用句标识 | 本文中使用该引用的句子或段落编号 | 由文档结构自动生成,不接受手填 | 定位与回溯 |
| 原文片段 | 被引文献中支持或被声称支持的那段文字 | 逐字摘录,含所在章节标题 | 判断支撑关系的最小证据 |
| 定位信息 | 页码或章节位置,附所读版本标识 | 版本必须写明,预印本与正式版分开 | 复核时无需重新检索 |
| 关系类型 | 支撑、方法来源、背景、对比、反对 | 五类内选一项,禁止留空 | 防止把相反结论当支持性引用 |
| 方向判定 | 原文结论与本文表述的方向是否同向 | 同向、反向、无关三值 | 反向即为必须处理的错误 |
| 比对方式 | 自动语义比对、人工阅读或两者皆有 | 记录模型版本或复核人 | 可追溯性与责任归属 |
| 抽检标记 | 是否属于抽样复核的样本 | 分层抽样规则自动生成 | 支撑性核验率的统计基础 |
这七个字段里,”关系类型”和”方向判定”是分层的落点。自动生成环节最容易出的错不是编造文献,而是把方法引用当结论引用、把反对意见引用当支持意见引用。这两类错误在第一档、第二档都查不出来,只有落到”原文片段加方向判定”这种最小单元时才会显形。第三档不可能全量做,因此必须抽样:按主题分层,按风险分层——直接影响结论或报价的引用高比例抽,仅作背景介绍的少抽,写进对外承诺的那一类全量人工复核。抽样规则要在文档定稿前就写下,不能出事后补。
六、流水线的分档策略与接收方怎么定验收
把三档接成一条流水线,我们的分配方式很固定:存在性做硬门槛,不通过就退回,不进入后续;一致性做告警,状态为不一致或无法比对的条目集中由人处理,允许带着明确标记进入草稿;支撑性做分层抽样,未过或未经核验的引用在最终文档里必须显式标注为”未核验”,而不是悄悄留着。最后这一条是整个方案里最重要的纪律:一条没人验过的引用与一条验过失败的引用,风险是同级的,但前者在报表里会被统计成”通过”,于是文档的可信度被虚增。显式标注会让下游读者有防御机会,静默通过不会。
接收方给交付文档定验收标准时,可以把三档分别做成可量化项:引用核验覆盖率(跑了哪一档、覆盖多少条)、抽样比例与抽样规则、未核验条数的上限、以及责任归属条款(谁提供、谁核验、发现错误后如何处理与通知)。这四项在合同里写清楚,比写一句”内容须真实准确”有用得多,因为后者无法执行。
同一套校验搬到企业文档上对应关系是直接的:学术场景里的参考文献,在调研报告里对应数据来源与出处链接,在投标材料里对应标准与规范条目,在合规说明里对应法规条款与项目验收依据。条目类型不同,三档的问题形式没有变——它存在吗,它是我们写的那个它吗,它真的支撑这句话吗。
洹拓在交付里承担的是两件具体的活:把三档校验做成文档流水线里的可运行环节,并把锚点三元组作为文档的结构化附属物一并交出去,让接收方复核时不必重读全部原文。我们不会把”AI 生成的引用都不可信”当成结论,也不会反过来承诺任何准确率数字——能承诺的只有流程:哪几条跑了哪一档、结果状态是什么、未核验的有几条、由谁签的字。一份文档的可信度,最后就落在这几句话能不能被复算上。