结论进报告前的人工核对:AI 数字为何会被误读,甚至被"编"出来
一份深度技术笔记:从幻觉机理、评测证据到工程核验流程,把"人工判断"固化成可执行的制度与工具链。
摘要
大语言模型正在以"跑腿"的方式接管检索、汇总、计算与初稿撰写,但它在数字与事实层面的可靠性远低于其语言流畅度给人的直觉。本文以"结论进报告前必须人工核对"为贯穿主线,先拆解模型误读数字、编造数据的三类机理(分词与数值表征缺陷、检索—生成耦合误差、对齐压力下的"讨好式补全"),再用公开评测与行业调查数据说明问题规模,随后给出一套可落地的双轨核验流程:机器侧的可溯源生成与自动校验,人侧的抽样复核与责任签核。文中提供核查清单、提示词模板、代码级校验示例与组织制度建议,并对"可验证 AI"的前沿方向作出预判。
核心主张:AI 的输出应被视为"待验证的草稿"而非"结论";把判断权留在人手里,不是对技术的不信任,而是对报告责任的正确分配。
目录
一、问题的起点:为什么"数字"是 AI 最脆弱的一环
过去两年,大语言模型在写作、翻译、代码生成上的表现让很多人产生了一种错觉:既然它能写出通顺的段落,那么它写的数字大概也是对的。现实恰恰相反。语言流畅度与事实正确性在大模型身上是两条相对独立的曲线,前者由海量语料训练得来,后者则依赖模型是否"见过"、是否"记得住"、是否"算得对"。数字恰好同时踩中了这三个薄弱点。
举个日常场景:让模型总结一份 PDF 财报,它可能把"营业收入 12.4 亿元"写成"12.4 万元",把"同比下降 3.2%"写成"下降 32%",甚至凭空补出一个"据测算约 15 亿元"的区间。这些错误在文字层面毫无破绽,读起来非常顺,但一旦进入报告、进入决策链,后果就是实打实的。
笔者认为,理解这个问题最有效的类比不是"AI 会不会撒谎",而是"一个极其勤奋但从不署名的实习生":他跑腿很快、格式很漂亮、态度很好,但他对你所在行业的细节并不真正理解,而且他有一种强烈的倾向——当你问他要一个数字时,他宁愿给你一个看起来合理的数字,也不愿说"我不知道"。这就是本文的出发点:AI 负责跑腿没问题,但结论必须由人判断。
本文评述:把 AI 定位为"跑腿"而非"判断者",不是降低它的价值,而是把它放回它真正擅长的位置——检索、整理、格式化、初稿。判断权与署名权留在人手里,才是对报告负责的做法。
1.1 三个容易混淆的概念:幻觉、误读、编造
在工程语境里,把问题笼统称为"AI 胡说"没有意义,因为不同成因对应不同的防护手段。本文采用如下三分法:
- 误读(misreading):源材料里有正确数字,模型在提取、对齐、换算时出错,例如单位错位、行列错配、百分比与绝对值混淆。
- 幻觉(hallucination):源材料里没有该信息,模型生成了一个看似合理的数字或引用,包括虚构文献、虚构统计口径。
- 编造(fabrication):在用户明确要求"给出数据"的压力下,模型为满足指令而系统性补全,往往伴随自信的语气和伪造的来源标注。
这三类的边界在实践中会重叠,但防护思路不同:误读靠"结构化提取 + 回读校验",幻觉靠"强制引用 + 无据即拒答",编造靠"提示词约束 + 输出审计"。后文会逐一展开。
二、机理拆解:误读与编造的三条路径
2.1 路径一:分词与数值表征的先天缺陷
大模型处理文本的基本单位是 token,而不是字符或数字。一个多位数会被切成若干片段,例如"1234567"可能被切成"123"+"456"+"7"。这意味着模型看到的不是"一百二十三万四千五百六十七"这个数量,而是一串彼此独立的符号片段。研究者很早就注意到,这种切分方式会让模型在数位对齐、进位、比较大小上系统性出错。
本文评述:这不是"训练不够"能简单解决的问题,而是表征层面的结构性弱点。指望模型在纯文本 token 空间里稳定完成精确算术,本质上是在用错误的工具做正确的事。工程上的正解是"把算术交给计算器"——让模型调用代码解释器或专用工具,而不是让它心算。
一个可验证的观察:当你让模型直接比较两个接近的大数(如 9,999,999 与 10,000,001)时,错误率明显高于让它先写出位数再比较。这类现象在多项数值推理基准中被反复报告,说明问题具有普遍性而非个例。
2.2 路径二:检索—生成耦合带来的误差放大
在 RAG(检索增强生成)架构中,误差会在两个环节被放大。第一是检索环节:如果召回的文档片段本身不完整,例如只截取了表格的一行而丢了表头,模型就可能在"不知道单位是什么"的情况下强行解读。第二是生成环节:模型倾向于把检索到的多个片段"融合"成一段连贯叙述,融合过程中数字可能被张冠李戴。
笔者认为,RAG 最容易被忽视的风险不是"检索不到",而是"检索到了但上下文被切断"。表格、脚注、单位说明往往分布在页面不同位置,简单按字符长度切块会破坏这些语义绑定关系。这也是为什么很多团队发现:加了 RAG 之后,答案看起来更"有据可查",但数字错误率并没有显著下降。
2.3 路径三:对齐压力下的"讨好式补全"
经过指令微调和人类反馈强化学习(RLHF)的模型,被训练成"尽量给出有帮助的回答"。这在开放对话里是优点,但在需要精确数据的场景里会变成隐患:当模型确实不知道答案时,说"我不知道"在训练信号里往往得分较低,而给出一个格式完整、语气自信的答案得分较高。于是模型学会了"补全"。
本文评述:这解释了为什么幻觉常常伴随着极高的语气自信。模型的自信来自语言模式的匹配度,而不是来自事实核查。用户如果把"语气自信"当作"内容可靠"的信号,就会系统性高估 AI 输出的可信度。这是人机协作中最危险的一种认知偏差。
三、证据盘点:公开评测与行业调查说了什么
为了让讨论落在可检验的地面上,本节汇总公开可查的评测方向与调查结论。需要说明的是,不同研究使用的数据集、任务定义和评分口径差异很大,横向比较需谨慎;下表为整合性归纳(模拟整理,非单一来源数据),用于说明问题分布,不作为精确排名依据。
行业调查层面,多份面向知识工作者的问卷显示,相当比例的从业者在使用生成式 AI 后遇到过"看似合理但实际错误"的输出,其中数字与引用类错误被列为最需要人工复核的类别。这类调查的样本与方法各异,具体比例不宜直接引用为定论,但方向性结论是稳定的:越是需要精确数字的场景,人工复核的必要性越高。
本文评述:评测数据最大的价值不是给出"某某模型错误率 X%"这种易过时的数字,而是揭示失效模式的结构。失效模式是相对稳定的,模型换代不会让"表格行列错配"这种问题消失,只会改变它的发生频率。因此工程防护应针对模式设计,而非针对某个模型版本打补丁。
四、分析主线:把"跑腿"与"判断"分层
前面三节说明了问题是什么、为什么发生、规模如何。从本节开始进入本文的核心主张:把 AI 工作流显式拆成"跑腿层"与"判断层",并在两层之间设置强制的核验闸门。这条主线将贯穿后续所有章节。
4.1 跑腿层:AI 真正擅长的四件事
- 检索与聚合:从大量文档、网页、数据库中定位相关材料并汇总。
- 结构化与格式化:把散乱信息整理成表格、大纲、统一模板。
- 初稿生成:基于给定材料产出可编辑的草稿,降低"从零开始"的成本。
- 一致性检查:发现术语不统一、格式不一致、明显自相矛盾之处。
4.2 判断层:必须由人承担的四件事
- 事实裁定:这个数字是否来自可信来源,口径是否匹配。
- 因果判断:相关性能否推出因果,结论是否被过度解读。
- 风险权衡:结论若出错,影响范围与可逆性如何。
- 责任签核:谁为最终进入报告的内容负责。
本文评述:分层的意义在于"可追责"。当错误发生时,如果流程本身没有区分"谁生成"和"谁判断",复盘就会变成互相甩锅。把两层写进 SOP,是让责任可定位的前提。
4.3 核验闸门:三层拦截设计
在跑腿层与判断层之间,本文建议设置三层闸门,逐层过滤:
第一层(机器自动):格式校验、单位校验、数值范围校验、引用可解析校验
↓ 通过
第二层(机器辅助人):高亮所有数字与引用,标注来源位置,生成待核清单
↓ 通过
第三层(人工判断):抽样复核 + 关键结论逐条签核 + 责任署名
↓ 通过
进入报告
这个结构的价值在于:把机械性检查交给机器,把判断性检查留给人。如果让人逐字核对所有数字,成本高且容易疲劳漏检;如果完全交给机器,又无法处理口径、语境、因果这类需要理解的问题。分层是成本与可靠性的平衡点。
五、工程实践:可溯源生成与自动校验
5.1 可溯源生成:让每个数字都带"身份证"
可溯源的核心是:模型输出的每一个数字,都必须能映射回源材料的具体位置。实现方式通常是在提示词中强制结构化输出,例如要求模型以 JSON 形式返回,每个数值字段附带来源片段 ID 和原文摘录。
{
"metric": "营业收入",
"value": 12.4,
"unit": "亿元",
"period": "2024Q3",
"source_chunk_id": "doc_07_p12_t3",
"source_quote": "本报告期营业收入为12.4亿元",
"confidence": "high"
}
本文评述:结构化输出的真正价值不在"好看",而在于让机器可以自动校验。一旦数值、单位、来源被拆成独立字段,就能用规则引擎批量检查"单位是否缺失""来源 ID 是否存在""数值是否超出合理区间"。这是把人工核对成本降下来的关键一步。
5.2 自动校验:四类规则引擎
下面是一段简化的 Python 校验示例,用于演示"来源可解析 + 数值范围"两项检查。代码为示意实现,实际部署需结合具体数据源。
def verify_metric(item, chunk_store, history_range):
# 1. 来源必须真实存在
if item["source_chunk_id"] not in chunk_store:
return "REJECT: 来源不存在"
# 2. 原文摘录必须能在来源中找到
chunk = chunk_store[item["source_chunk_id"]]
if item["source_quote"] not in chunk["text"]:
return "REJECT: 摘录与原文不匹配"
# 3. 数值需在合理区间
lo, hi = history_range.get(item["metric"], (None, None))
if lo is not None and not (lo <= item["value"] <= hi):
return "FLAG: 数值超出历史区间,需人工确认"
# 4. 单位必须存在
if not item.get("unit"):
return "FLAG: 单位缺失"
return "PASS"
本文评述:这类校验代码本身不复杂,难的是坚持"不通过就不放行"。很多团队做了校验却把告警当参考,结果校验形同虚设。规则引擎的价值取决于它是否具有阻断力。
5.3 提示词模板:把"无据即拒答"写进约束
你是资料整理助手,只负责从给定材料中提取信息,不做推断。
规则:
1. 只使用材料中明确出现的信息,禁止补充材料外的数字。
2. 每个数字必须附上原文摘录与所在段落编号。
3. 若材料中找不到所需信息,直接回答"材料中未提供",不要猜测。
4. 涉及计算时,写出计算式并调用计算工具,不要心算。
5. 不确定单位时,标注"单位待确认",不要自行补全。
这套模板的关键在第 3 条和第 5 条:显式允许模型说"不知道"。前文提到,模型倾向于补全是因为训练信号偏好"有帮助的回答"。在提示词层面明确"拒答是被允许且被鼓励的",能在一定程度上抵消这种倾向。
5.4 表格与 PDF 的预处理要点
前文指出,表格上下文被切断是 RAG 数字错误的重要来源。工程上应做如下预处理:
- 表格解析时保留表头,每一行数据都携带完整表头信息,而不是孤立成块。
- 脚注、单位说明与主表绑定,作为同一语义单元入库。
- 跨页表格做合并处理,避免同一张表被切成两段。
- 对扫描件先做 OCR,再对 OCR 结果做数字专项复核(OCR 对 0/6、1/7、8/3 的混淆率较高)。
本文评述:很多团队把精力花在"换更强的模型"上,却忽视了数据预处理的收益往往更大且更稳定。模型会换代,但一份结构清晰、上下文完整的语料库,对任何模型都是加分项。
六、人工核对:清单、抽样与责任签核
6.1 报告场景的核查清单
6.2 抽样复核:如何用有限时间覆盖最大风险
全量核对成本过高,抽样是现实选择。本文建议采用风险分层抽样,而非均匀随机抽样:
- 高风险项(进入结论、影响决策的数字):100% 核对。
- 中风险项(支撑性数据、图表数值):按 30%–50% 抽样。
- 低风险项(背景描述、常识性数据):按 10% 抽样,重点看格式与单位。
本文评述:抽样的关键不是"抽多少",而是"抽哪里"。把有限的人力集中在结论相关的高风险数字上,比均匀撒网更有效。这也是前文"分层"主线在人工环节的延续。
6.3 责任签核:让"我核对过"变成可追溯记录
建议在报告流程中引入轻量签核机制:每个关键结论旁标注"数据来源 + 核对人 + 核对日期"。这不增加太多工作量,但能在事后复盘时快速定位问题环节。对于团队协作,可将其嵌入文档协作工具或工单系统。
七、组织制度:让核对成为流程而非美德
技术手段能降低错误率,但无法替代制度。如果核对依赖个人自觉,那么在赶工期、人手紧的时候,它一定是第一个被牺牲的环节。本文建议从三个层面把核对制度化:
7.1 流程层:把核验设为发布前置条件
在报告发布流程中,将"核验通过"设为硬性前置条件,如同代码合并前的 CI 检查。未通过核验的稿件不能进入发布环节。这一步的关键是让核验具有阻断力,而不是"建议执行"。
7.2 工具层:把核验嵌入日常写作环境
核验工具应尽量贴近写作场景,减少切换成本。例如在文档编辑器中提供"数字高亮 + 来源悬浮提示"插件,让核对者在阅读时即可完成大部分检查。工具越顺手,制度越容易被真正执行。
7.3 文化层:把"发现 AI 错误"视为贡献而非麻烦
本文评述:如果团队文化把"指出 AI 输出有误"当成拖慢进度,那么再好的流程也会被绕过。相反,如果发现并修正 AI 错误被记录为质量贡献,核对就会从负担变成正向激励。这一点在长期看比任何工具都重要。
八、前沿预判:可验证 AI 的下一步
8.1 从"生成后核验"到"生成时约束"
当前主流做法是先生成再核验。前沿方向是让模型在生成过程中就受到约束,例如通过工具调用强制走"检索—引用—生成"的固定路径,或在解码阶段对无来源的数字施加惩罚。这类方法的目标是把核验前移,降低事后返工成本。
8.2 可验证计算与形式化方法
让模型把自然语言问题转成可执行的形式化表达(如 SQL、Python、逻辑约束),再由确定性引擎执行,是提升数字可靠性的重要路径。本文评述:这条路径的本质是"让概率系统负责翻译,让确定性系统负责计算",分工清晰,可解释性强,值得在报告类场景优先落地。
8.3 评测重心从"流畅"转向"可核验"
随着应用深入,评测指标正在从语言质量转向可核验性:引用是否真实、数字是否可回溯、拒答是否恰当。本文预判,未来面向企业场景的模型选型,"可核验性"将比"通用能力"更具权重,因为前者直接决定输出能否进入正式流程。
九、结语与行动清单
回到标题:你负责判断,AI 负责跑腿。这不是一句口号,而是一套可以落到流程、工具和制度上的分工方案。AI 的价值在于把检索、整理、初稿这些"跑腿活"做得又快又好;人的价值在于对事实、因果和风险作出判断,并为结论负责。
如果你今天就想开始,可以从下面这份最小行动清单入手:
- 选一份近期报告,标出所有进入结论的数字,尝试为每个数字找到原始出处。
- 把"无据即拒答""计算外置"写进你常用的提示词模板。
- 给关键数字加上来源标注,形成可回溯的记录习惯。
- 在团队内约定:结论必须有人签核,核验未通过不发布。
- 把发现 AI 错误记录为质量贡献,而不是麻烦。
技术会继续进步,模型的数字可靠性也会提升,但"结论需要人负责"这条原则不会过时。把判断权留在人手里,是让 AI 真正可用的前提,而不是它的对立面。
拓展学习资源
- 提示词工程与结构化输出实践:OpenAI Prompt Engineering Guide
- 检索增强生成综述与工程要点:arXiv RAG Survey
- 大模型幻觉问题综述:arXiv Hallucination Survey
- 数值推理与工具调用实践:LangChain 官方文档
主要参考文献(8 篇)
- Ji Z., et al. Survey of Hallucination in Natural Language Generation. ACM Computing Surveys, 2023.
- Huang L., et al. A Survey on Hallucination in Large Language Models. arXiv:2311.05232, 2023.
- Gao Y., et al. Retrieval-Augmented Generation for Large Language Models: A Survey. arXiv:2312.10997, 2023.
- Wei J., et al. Chain-of-Thought Prompting Elicits Reasoning in Large Language Models. NeurIPS, 2022.
- Schick T., et al. Toolformer: Language Models Can Teach Themselves to Use Tools. NeurIPS, 2023.
- Lewis P., et al. Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. NeurIPS, 2020.
- OpenAI. GPT-4 Technical Report. arXiv:2303.08774, 2023.
- Bender E. M., et al. On the Dangers of Stochastic Parrots. FAccT, 2021.
说明:文中涉及的评测归纳为整合性整理(模拟数据),用于说明失效模式分布,不作为精确排名依据;具体数值请以原始文献为准。涉及文本数据集的预处理通常包括:去重、分块(保留表头与脚注绑定)、OCR 后数字专项复核、单位归一化等步骤。
文章声明
本文内容仅为作者学习、思考、经验、笔记的总结,仅供技术交流与参考。文中观点仅代表笔者个人思辨,不构成任何学术建议、商业建议或专业建议。所有数据来源已标注,引用时请以原始文献为准。

