可核验AI答案不是在段落末尾补几个链接,也不是让模型在回答里声明“我基于资料作答”。真正的证据链工程要把问题、检索、证据、主张、引用、审计、评测和纠错连接成一条可检查的生产链路。本文把可核验性定义为:读者能从答案中的每个关键事实回到明确证据;系统能记录该事实由哪个版本、哪段资料、哪个检索策略、哪个生成请求产生;运营团队能用指标判断证据是否覆盖主张、引用是否精确、答案是否忠实于资料、风险是否超过上线阈值。文章基于RAG、RAGAS、ARES、RAGChecker、SelfCheckGPT、NIST生成式AI风险画像、OpenTelemetry GenAI语义约定以及主流模型平台的引用与结构化输出机制,提出一套面向教程网站、企业知识助手、研究助手和智能体系统的证据链框架。结论是:成熟AI应用的事实可靠性不应押在单次模型生成上,而应由证据对象、主张对象、引用粒度、可观测性、离线评测和线上抽检共同承担。
可核验AI;证据链;RAG评测;引用工程;主张抽取;事实一致性;AI可观测性;结构化输出;上下文工程;生产级知识系统
许多AI知识库、研究助手、客服助手和写作助手在演示时会展示引用链接。用户看到链接后容易产生信任,产品团队也容易把引用当成可靠性的证明。但生产事故往往发生在更细的位置:链接确实存在,却没有支撑答案里的关键结论;引用指向整篇文档,而真正的依据在另一页;检索召回了旧版本制度,答案却说成当前规则;模型把两个证据片段拼成一个原文不存在的结论;回答里只有部分主张可核验,其余主张来自模型内部概率补全。此时页面不是“没有引用”,而是“引用无法承担证明责任”。
证据链工程要解决的不是美化答案,而是建立事实责任。一个AI系统给出“某产品支持离线部署”“某报销上限为五千元”“某模型接口支持结构化输出”“某论文提出无参考RAG评测方法”这类结论时,系统必须知道这些句子各自来自哪里、证据是什么粒度、证据版本是否有效、是否存在相反资料、是否经过评测集覆盖、是否允许当前用户查看。没有这些机制,AI应用只能依靠“模型大概不会乱说”的假设;有了这些机制,团队才能把错误定位到资料、检索、重排、生成、引用、缓存、权限或评测中的具体环节。
本文把“可核验”视为AI应用的工程属性,而不是写作风格。可核验性需要读者界面、数据结构、索引策略、提示约束、模型输出格式、日志字段、评测指标和人工复核共同配合。对于PromptX Wiki这样的教程网站,它意味着文章和教程必须能把概念、公式、架构图、参考资料连接起来;对于LocalAIHub这样的社区服务,它意味着讨论和经验帖不能只堆观点,而要沉淀可复查的实践证据;对于企业AI系统,它意味着每次回答都能接受内部审计、用户质疑和线上回放。
可核验性也不是要求AI只做复制粘贴。智能体和大模型的价值正在于综合、转写、比较、推理和执行。问题在于,系统必须区分“证据中明说的事实”“从证据可推出的结论”“模型给出的解释”“缺少证据但可以作为假设的判断”。成熟系统不禁止推理,而是让推理路径可见,让证据强度可度量,让不确定性不被包装成事实。
RAG最初把语言模型的参数记忆和外部非参数记忆结合起来,用检索到的文档片段改善知识密集型任务。Lewis等人在RAG论文中强调,单靠模型参数访问和精确操作知识仍有限,外部检索能让系统更新知识并提供来源线索。这个思想进入产品后,被扩展成企业知识库问答、开发文档助手、研究资料阅读、客服制度检索和内部流程代理。RAG的工程价值不只是“让模型知道更多”,而是把事实答案从不可见的参数空间部分转移到可维护的资料空间。
但是,RAG本身不自动保证真实。检索可能漏掉关键证据,召回可能充满噪声,文档可能过期,生成模型可能忽略上下文,引用可能对不上句子。Liu、Zhang和Liang关于生成式搜索可核验性的研究把可信引用拆成两个要求:回答中的陈述应被引用充分覆盖,引用本身也应准确支撑关联陈述。RAGAS把RAG评测拆成多个维度,包括检索系统识别相关上下文的能力、模型是否忠实利用上下文、生成质量等;其官方指标文档也把context precision、context recall、faithfulness等作为核心方向。ARES进一步用合成训练数据、轻量评审模型和少量人工标注评估上下文相关性、答案忠实性和答案相关性。RAGChecker则把诊断做得更细,强调对检索模块和生成模块分别定位问题。它们共同说明一个事实:RAG答案需要分层评测,不能只看最终文本是否顺眼。
幻觉检测研究给证据链工程补了另一块拼图。SelfCheckGPT从黑盒生成模型出发,通过多次采样之间的一致性来识别潜在幻觉。它并不要求访问模型内部概率,而是利用“如果事实来自模型稳定知识,多次回答应更一致;如果来自猜测,多次回答更容易互相冲突”的直觉。这个方法不能替代外部证据,但提醒工程团队:当证据缺失或证据弱时,可以用一致性检查、反问式生成、独立模型复核等方法发现高风险内容。
平台能力也在向证据链靠拢。OpenAI Responses API支持内置工具如文件搜索和网络搜索;结构化输出提供JSON Schema约束,使系统更容易要求模型输出可解析的主张、证据、置信度和拒答原因。Anthropic Claude提供文档引用功能,用于回答文档问题时追踪来源;Google Vertex AI的Grounding with Google Search把模型回答和公开网页数据连接,并返回与搜索建议和来源有关的元数据。这些能力并不等价,引用粒度、可控性、数据来源和适用条款也不同,但方向一致:模型回答需要与外部信息源建立机器可处理的关系。
治理和可观测性把可核验性从功能层推向生产层。NIST AI RMF Generative AI Profile把生成式AI的风险管理放在治理、测量、管理等活动中,关注内容来源、错误信息、隐私、安全和人类依赖等问题。OpenTelemetry的GenAI语义约定则尝试给生成式AI请求、响应、token、模型、系统指令和工具调用等观测字段提供统一命名。对证据链而言,这意味着“引用是否正确”不能只存在于页面中,还要进入日志、链路追踪、指标和事故复盘。
现有研究和平台能力已经提供了许多部件,但产品团队仍需要一套可落地的连接方式。本文提出的框架不是另一个RAG流水线教程,而是把“证据如何承担证明责任”作为中心问题,把资料、检索、主张、引用、审计和评测放在同一张工程图里讨论。
讨论证据链之前,需要先区分四个对象。资料是系统可访问的原始或准原始信息,例如网页、PDF、Markdown、表格、代码、工单、政策文档、论文和数据库记录。证据是从资料中抽取或定位出来、足以支撑某个具体判断的片段,通常带有来源、版本、位置、权限、时间和解析状态。主张是答案中可以被判断真假的陈述,例如“RAGAS提供faithfulness指标”“该制度适用于正式员工”“本接口返回字段包含citations”。引用是把主张连接回证据的标记,它可以出现在句尾、段落旁、表格行、代码注释或交互式详情中。
这四个对象不能混用。把整篇文档当证据,粒度往往太粗;把一段检索上下文当引用,未必支撑具体主张;把模型回答当资料,会形成自我引用;把URL当证明,会忽略网页版本和具体位置。证据链工程的第一步,就是把资料、证据、主张和引用作为不同实体保存,而不是只保存一段最终答案。
一个可核验答案至少应满足三层关系。第一层是可定位:用户能从答案跳到证据位置,工程师能从日志找到对应资料版本。第二层是可判定:证据内容确实支持主张,或者至少能说明主张是推论而非原文事实。第三层是可复现:同一资料版本、同一检索策略和同一模型配置在合理范围内能重建相似证据和相似结论。缺少第一层,无法查;缺少第二层,查了也不能证明;缺少第三层,事故复盘只能猜。
下面的架构图把证据链放在AI应用的主路径中。图中重点不是组件数量,而是每个组件产生的对象必须进入后续判断。资料摄取产生版本化知识单元,检索产生候选证据,生成产生主张和答案,审计层把主张与证据关系固化,评测层持续抽查链路质量。
这个结构要求AI答案不再是一个字符串,而是一个带关系的产物。答案文本可以面向用户保持简洁,但系统内部必须保留关系图。用户界面只展示必要引用;审计界面展示主张、证据、模型、检索、权限和评测;开发者日志记录延迟、token、模型版本和工具调用。把这些内容混在一个大prompt里不能形成生产能力,必须有明确对象和存储。
证据链工程可以按六个阶段建设:资料治理、证据生成、主张生成、证据绑定、答案发布、评测纠错。每个阶段都有不同责任,不能让模型一肩挑。模型可以参与摘要、抽取和判断,但确定性元数据、权限过滤、版本管理、指标计算和审计留痕应由系统完成。
资料治理阶段负责让资料成为可引用对象。每个资料源至少需要source_id、title、uri、owner、created_at、updated_at、valid_from、valid_to、license、permission_scope、parser_version、content_hash。对于网页,要记录抓取时间和正文抽取算法;对于PDF,要记录页码、标题层级和表格结构;对于数据库,要记录查询条件和字段含义;对于代码,要记录仓库、commit、文件路径和行号。没有版本和位置,就无法解释“当时为什么这么回答”。
证据生成阶段把资料切成可支撑判断的片段。证据粒度应比文档小,比孤立句子大。制度条款常常需要“条件、例外、适用范围”一起出现;论文结论常常需要实验设置和指标一起出现;API文档需要字段名、类型、约束和示例一起出现。证据不是越短越好,关键是能独立承担证明任务。证据对象还应记录它是原文片段、表格行、代码范围、查询结果、人工标注,还是模型抽取摘要。原文证据强于模型摘要;实时查询证据强于缓存快照,但更需要可复现查询。
主张生成阶段要让答案可拆解。模型自然生成的回答通常是连续段落,其中混合了事实、解释、建议、假设和过渡语。系统若只在段落末尾贴一个引用,就很难知道引用支持了哪句话。更稳的做法是让模型先输出结构化草稿:每个claim包含文本、类型、风险、所需证据数量、是否可拒答、是否为推论,再由系统生成面向用户的自然语言。OpenAI结构化输出这类能力能降低格式失控风险,但仍要配合schema校验、字段枚举和失败重试。
下面是一个简化的主张对象。它不是用户界面内容,而是答案生成与审计之间的协议。
{
"claim_id": "c-001",
"claim_text": "RAGAS将RAG系统评测拆分为检索上下文质量、答案忠实性和生成质量等维度。",
"claim_type": "research_summary",
"risk_level": "medium",
"requires_current_source": false,
"evidence_policy": {
"min_supporting_evidence": 1,
"allow_inference": true,
"require_exact_span": true
},
"linked_evidence": [
{
"evidence_id": "e-ragas-paper-abstract",
"support": "direct",
"span": "abstract",
"confidence": 0.86
}
],
"unsupported_action": "revise_or_drop"
}
证据绑定阶段决定答案是否能发布。系统要检查每个关键主张是否有足够证据,证据是否在用户权限内,证据是否过期,是否存在冲突证据,引用粒度是否满足风险等级。低风险解释性段落可以引用章节级证据;高风险制度、价格、医疗、法律、财务、代码修改建议必须引用更精确的位置。若无法满足,应把主张降级为假设、要求用户补资料、触发搜索或直接拒答。
答案发布阶段要分离“用户可读”和“机器可审计”。用户界面不应堆满内部字段,但应让每个关键事实旁边有可点击依据,并在证据不足时明确说“不足以判断”。机器侧则要保存完整trace:输入问题、用户角色、资料版本、检索器、候选证据、重排分数、上下文、模型、解码参数、输出主张、引用绑定、最终文本、token、延迟和异常。没有这些日志,线上抽检只能看到答案,无法修复根因。
评测纠错阶段把一次次回答变成系统改进。每次用户点踩、人工复核、自动检测失败、证据过期、模型升级、索引更新,都应回到评测集和知识库治理中。错误不应只被当作“模型偶发”,而要分类为资料缺失、解析错误、权限过滤、召回失败、重排失败、上下文压缩损坏、生成歪曲、引用错配、答案过度推理、界面误导或评测缺口。只有分类稳定,质量才会持续上升。
生产系统中,一个主张应经历明确状态,而不是从模型输出直接进入页面。状态机能帮助团队控制风险:未绑定证据的主张不能发布;冲突证据未处理的主张不能被说成确定结论;过期证据必须触发重检索;高风险主张需要人工或更强模型复核。
状态机的价值在于压住“流畅但无证据”的诱惑。许多模型能把一个弱证据包装成强结论,甚至会用“因此可见”“这说明”把不相干片段接在一起。状态机要求系统把“直接支持”和“推论支持”分开,把“找不到证据”和“证据冲突”分开。用户看到的答案可以自然,但内部状态不能模糊。
不同场景的状态阈值应不同。教程网站解释概念时,允许适度综合;企业制度问答应更保守;医疗、法律、金融、教育评价和自动执行类智能体要更严格。对于会触发工具调用的智能体,证据状态机还应接入行动审批:没有被验证的主张不能作为写入数据库、发送邮件、下单、改代码或删除文件的依据。
可核验性需要指标,但单一分数会掩盖问题。一个系统可能召回率很高,但引用精度很低;也可能答案忠实,但证据覆盖不足;还可能离线评测优秀,线上因为资料过期而失败。因此,证据链评测应拆成至少五类指标:证据覆盖、引用精确、答案忠实、拒答正确、链路成本。
证据覆盖衡量关键主张是否有证据支撑。设答案中的关键主张集合为 ,可接受证据集合为 ,函数 表示证据 是否支持主张 ,则证据覆盖率可以定义为:
这个公式刻意按主张计数,而不是按引用计数。一个答案有十个链接却只支撑两个关键主张,覆盖率仍然低。对于高风险场景,可以给不同主张加权:制度金额、法律责任、医疗建议、自动执行参数权重大于背景解释。加权后,指标变为:
其中 是主张风险权重, 是指示函数。这个加权版本更符合生产现实,因为一个无关紧要的背景句缺引用,和一个付款金额缺引用,风险完全不同。
引用精确度衡量“被引用的证据是否真的支撑引用位置”。设答案中所有引用标记为 ,每个引用 指向证据 并绑定到主张 ,则引用精确度可以定义为:
引用精确度低时,用户界面看似有依据,实际更危险,因为它给错误主张披上了可信外衣。许多RAG系统的引用失败不是没有检索,而是引用粒度不对:把整篇文档、整段上下文或相邻片段当成依据。治理时应优先抽查高点击、高风险、高投诉页面的引用精确度。
答案忠实性衡量答案是否只使用证据允许的信息。RAGAS和ARES都把faithfulness或answer faithfulness放在重要位置,原因正是模型可能在正确证据旁边生成额外结论。忠实性评测可以采用人工标注、LLM-as-judge、自然语言推理模型、主张抽取加蕴含判断等方式。自动评审必须抽样校准,因为评审模型本身也会错。成熟团队会保留一组人工金标样本,用于检测自动评审是否漂移。
拒答正确性常被忽略。可核验系统不只是回答正确,还要在证据不足时不乱答。设不可回答问题集合为 ,系统拒答或要求补充资料的集合为 ,则不可回答拒答率可定义为:
同时还要看误拒率:可回答问题被拒答,会伤害用户体验。证据链系统的难点在于同时控制幻觉和过度保守。阈值过低,模型会乱答;阈值过高,系统会拒绝大量本可回答的问题。阈值应由业务风险、用户容忍度、资料质量和人工接管成本共同决定。
链路成本包括延迟、token、检索查询、重排调用、审计存储和人工复核。证据链不是免费能力。一个可用的成本模型可以写成:
其中 应按用户体验看九十五分位延迟,而不是平均值; 是自动评审成本; 是人工复核成本。若团队不建模成本,很容易把每个回答都做成多模型、多轮、多检索的昂贵流程。更合理的方式是按风险分层:低风险问题走轻量链路,高风险问题才触发额外搜索、交叉验证和人工审批。
下面的表格给出一组可落地的评测维度。它不是固定标准,而是用于设计项目自己的质量门。
| 维度 | 主要问题 | 可用指标 | 常见失败 | 修复方向 |
|---|---|---|---|---|
| 证据覆盖 | 关键主张有没有依据 | Coverage、WeightedCoverage | 背景有引用,结论无引用 | 主张抽取、证据绑定、删除无证据结论 |
| 引用精确 | 引用是否支持对应句子 | CitationPrecision、人工抽检通过率 | 链接到整篇文档但不支撑该句 | 缩小引用粒度、保存span、引用级评审 |
| 检索召回 | 正确证据是否进入候选集 | context recall、gold evidence recall@k | 知识库有答案但没找出 | 混合检索、查询改写、元数据过滤修正 |
| 上下文精度 | 给模型的上下文是否少噪声 | context precision、rerank NDCG | 相似但无关片段干扰生成 | 重排、去重、冲突过滤、证据压缩 |
| 答案忠实 | 答案是否歪曲证据 | faithfulness、claim entailment | 证据正确但模型扩写过度 | 结构化主张、生成后校验、拒答策略 |
| 拒答质量 | 无证据时是否停止 | RefusalRecall、误拒率 | 不知道也编答案 | 不可回答样本集、阈值、补检索机制 |
| 时效一致 | 是否使用当前有效资料 | expired evidence rate | 引用旧政策、旧价格、旧API | valid_from/valid_to、缓存失效、资料责任人 |
| 权限安全 | 是否引用无权资料 | unauthorized evidence rate | 多租户资料越权 | 检索前过滤、日志脱敏、权限回归测试 |
| 可观测性 | 能否复盘生成过程 | trace completeness | 只有最终答案无中间链路 | GenAI span、证据对象、模型与token日志 |
| 成本延迟 | 链路是否可上线 | p95 latency、cost per answer | 评审链路太慢太贵 | 风险分层、缓存、异步抽检、模型路由 |
表格中的指标要一起看。若证据覆盖高但引用精确低,说明证据存在却没有正确绑定;若检索召回低但答案忠实高,说明系统很保守但会漏答;若拒答正确高但误拒也高,说明用户体验会差。指标组合比单分数更接近真实质量。
引用工程最容易犯的错误,是把URL当作证据本身。URL只是入口,不是证明。网页会更新,PDF页码会变化,文档章节会重排,数据库记录会被修改,代码行号会随commit漂移。真正可审计的证据需要位置和版本:网页正文的段落哈希、PDF页码和坐标、Markdown标题路径、表格行列、数据库快照、代码commit和行号、API响应时间戳。
引用粒度应和主张风险匹配。若文章解释“RAG结合检索和生成”,引用RAG论文页面即可;若答案说“某员工报销上限为五千元”,必须引用制度当前版本的具体条款;若智能体要调用付款接口,证据必须绑定到审批记录、订单金额、收款方、权限和用户确认。粒度越粗,审计空间越大;风险越高,粒度越细。
引用展示也要避免误导。许多系统在段落末尾放一排引用,让用户以为整段每句话都有依据。更好的方式是按主张标注,或者在展开面板中显示“该引用支持的句子”。对于长答案,可以采用段落级引用加关键句精确引用的组合。对于表格答案,每一行应保留行级来源;对于比较答案,每个比较维度最好能回到对应来源,而不是整个表格只放一个参考链接。
证据链还要记录反证。用户问“某平台是否支持X”,资料中可能有一页说旧版本不支持,另一页说新版本支持。系统不能只引用其中一页就下结论,而应检查版本和生效时间。若无法判断,应说“资料存在冲突”,并展示冲突来源。冲突管理是可核验性的核心,因为真实组织资料经常不干净。
外部网页引用还要考虑抓取和授权。Google Vertex AI的Grounding with Google Search说明了用公开网页数据 grounding 的场景和服务条款相关要求;不同平台对搜索建议、来源展示和网页排除机制有不同规定。企业系统如果抓取公开网页或内部网页,应保存抓取时间、robots策略、使用许可和原始快照,避免之后无法复现。
自然语言适合用户阅读,不适合系统审计。证据链系统应让模型在关键阶段输出结构化对象,再把对象渲染成自然语言。结构化输出不是为了让模型“像API一样听话”,而是为了把主张、证据、风险和拒答原因变成可验证字段。
一个常见流程是:第一轮检索和重排得到候选证据;第二轮模型生成claim列表,每个claim必须引用候选证据id或声明unsupported;第三轮系统检查claim和evidence关系;第四轮模型根据通过检查的claim生成答案;第五轮另一个评审器抽取最终答案主张,确认没有新增未绑定事实。这个流程比单轮生成慢,但对高风险问答更稳。
结构化输出schema应尽量小而严格。字段太多,模型更容易填错;字段太松,系统无法判断。最小可用字段包括claim_text、claim_type、risk_level、evidence_ids、support_type、uncertainty、action_if_unsupported。枚举字段比自由文本更好;证据id必须来自候选集,不能让模型编造;风险等级应由系统规则和模型判断共同决定,高风险宁可上调。
OpenAI结构化输出文档强调JSON Schema约束能让输出符合开发者定义的结构,并支持显式拒绝等机制。工程上仍要注意:schema只保证形状,不保证事实正确。一个结构完美的claim也可能引用错证据。因此结构化输出应与证据判定、引用抽检和人工金标结合,而不是被当成事实验证器。
对于不支持强约束结构化输出的本地模型,可以采用受限解码、工具调用、JSON修复、二次校验和失败重试。若模型长期无法稳定产出对象,不要在高风险链路中硬上;可以让它负责草稿,再由更稳定模型或确定性程序做抽取和绑定。生产系统应按任务选择模型,而不是把所有环节交给一个模型。
可观测性是证据链从“功能”变成“运营能力”的分界线。没有日志和trace,团队只能凭用户截图排查;有了完整trace,团队可以回答:用户问了什么,系统改写成什么查询,哪些检索器返回了哪些候选,重排器为什么选中某些证据,模型看到了哪些上下文,生成了哪些主张,哪些主张被删除或降级,最终答案引用了哪些资料,花了多少token和延迟。
OpenTelemetry GenAI语义约定正在定义生成式AI操作的span、事件、属性和指标。虽然相关规范仍处在发展状态,具体字段会变化,但理念很重要:AI请求不应只记录HTTP状态码,还要记录模型、系统指令、输入输出、token、工具、错误类型和链路关系。证据链系统应在这个基础上扩展evidence_id、claim_id、source_version、citation_id、judge_score、risk_level等字段。
审计日志要区分可存和不可存。用户问题、模型输入、证据片段可能包含隐私、商业秘密或权限数据。不能为了可观测性把所有敏感内容明文写入日志。更成熟的做法是分层保存:普通日志保存id、哈希、长度、模型、token、状态和错误;安全审计库保存脱敏片段;高权限复盘流程才能访问原文。日志本身也要有权限、保留期限和删除机制。
下面的序列图展示一次高风险问答的审计路径。用户只看到答案和引用,但后台同时记录检索、证据、主张和评审过程。
这个链路的关键是保存“被丢弃的信息”。如果只保存最终答案,团队不知道模型原本生成过哪些 unsupported claim,也不知道评审器拦下了什么。被拦截的主张是改进资料和提示词的高价值信号。若大量用户问题都产生相同unsupported claim,可能说明知识库缺资料;若大量主张被评为conflict,可能说明资料版本治理有问题;若模型总是新增未绑定事实,可能说明生成提示词或模型选择不合适。
普通问答的证据链已经复杂,智能体系统更复杂,因为答案可能变成行动。一个浏览器代理、代码代理、客服代理、采购代理或运维代理,会根据模型判断调用工具。若判断没有证据,行动风险会被放大。证据链工程必须进入智能体的计划、工具选择、参数生成和执行确认。
智能体计划中的每个事实前提都应可核验。比如代码代理计划修改某个函数,前提可能是“测试失败来自参数校验缺失”;客服代理准备退款,前提可能是“订单符合退款政策”;运维代理准备重启服务,前提可能是“健康检查失败且无迁移任务”。这些前提不能只来自模型猜测,应绑定日志、测试输出、政策条款、监控指标或用户确认。
工具调用参数也要有证据。若智能体调用refund(order_id, amount),amount应来自订单系统或政策计算,而不是模型从对话里自由抽取;若调用edit_file(path, patch),path和patch应来自代码检索、测试错误和最小修改原则;若调用send_email(to, body),收件人和正文中的事实应有来源。对于写操作,证据链还要进入人工确认界面,让用户看到行动依据,而不是只看到“是否确认执行”。
多智能体系统不能把证据责任分散掉。一个研究智能体检索资料,一个写作智能体写答案,一个审稿智能体评审,最后主智能体汇总。若每个角色只传自然语言,证据会在接力中丢失。更稳的做法是让各智能体共享claim/evidence对象,评审智能体只能评价对象关系,写作智能体只能使用已验证主张,主智能体负责最终风险状态。多智能体不是让多个模型互相赞同,而是让证据、主张和审计在角色之间保持结构化。
蜂群协作场景还要处理证据冲突。不同智能体可能检索到不同资料或给出不同判断。系统不应简单投票,而应比较来源权威性、版本时效、引用粒度、任务相关性和评审置信度。三票弱证据不能压过一条当前有效的权威条款。多智能体共识应是证据加权后的共识,不是文本意见的数量优势。
设想一个企业AI政策助手,员工可以询问差旅、报销、采购、数据安全、模型使用和工具接入规则。这个系统的风险不在于回答写得不流畅,而在于错误答案会影响员工行为。若助手把旧版报销制度当成新制度,员工可能按错标准提交;若助手把内部模型使用边界说宽,员工可能上传敏感资料;若助手引用不精确,财务和安全部门无法追责。
资料治理首先要建立制度台账。每份制度有责任部门、版本、发布日期、生效日期、废止日期、适用对象、密级和审批状态。制度PDF被解析成章节、条款、表格和附件;每个条款都有稳定id;表格行列保留单位、币种、地区和人员类别。旧版本不删除,但默认不进入当前问答;用户若明确询问历史政策,系统才按时间过滤。
检索阶段采用混合策略。员工问题通常口语化,例如“去上海出差住酒店最多报多少”“能不能把客户名单发给外部模型”“采购SaaS工具要不要安全审批”。系统把问题改写为制度术语,同时保留原问;关键词检索命中“住宿费”“客户名单”“外部模型”“SaaS采购”,向量检索处理同义表达,元数据过滤按部门、地区、员工类型和当前有效日期裁剪候选。重排器不只看相关性,还要看条款是否可直接回答。
生成阶段先生成主张对象,而不是直接回答。对于“去上海出差住酒店最多报多少”,主张可能包括“问题涉及差旅住宿标准”“上海属于某城市级别”“该员工类型适用某住宿上限”“若会议统一安排酒店存在例外”。每个主张绑定不同证据:城市级别表、员工类型规则、住宿标准表、例外条款。答案最终可能只有三句话,但后台有四条证据关系。
审计阶段保存request_id、用户部门、权限摘要、制度版本、条款id、表格行列、生成模型、评审结果和最终引用。若员工后来质疑答案,财务人员可以看到答案依据的是哪一版制度、哪一行表格。若制度更新,系统能找出受影响的高频问答,触发缓存失效和评测重跑。若用户问的是政策未覆盖的新情况,系统应拒答或建议咨询责任部门,而不是编造“通常可以”。
这个案例说明,可核验证据链并不是给答案贴链接,而是把组织知识变成可运营资产。它需要制度责任人、资料版本、权限过滤、表格解析、主张绑定、引用展示、人工复核和指标监控。模型只承担其中一部分推理和表达工作。
真实资料经常冲突。官网文档与GitHub README不同步,产品价格页和API文档更新时间不同,企业制度正文和附件表格不一致,客服知识库和合同条款说法不同。可核验系统不能假装冲突不存在,也不能让模型自行选择一个看起来合理的答案。
冲突检测可以从元数据和内容两层做。元数据层检查版本、生效时间、资料权威级别和责任部门。内容层检查同一实体、同一属性、同一条件下是否出现不同值或相反判断。对于数字、日期、布尔结论、枚举字段,冲突更容易检测;对于解释性文本,需要主张抽取和自然语言推理辅助。冲突检测不必追求一次全自动解决,重要的是不要把未解决冲突包装成确定答案。
不确定性表达应具体。差的表达是“可能不准确,仅供参考”;好的表达是“当前资料中没有找到适用于试用期员工的住宿标准,已找到正式员工标准和差旅总则,但不足以推断试用期规则”。前者是免责话术,后者告诉用户缺什么证据、已有证据是什么、为什么不能回答。对生产系统来说,清楚拒答比自信错误更有价值。
证据强度也要分层。原始权威文档强于二手博客;当前生效制度强于历史制度;API官方文档强于社区示例;可复现测试输出强于模型解释;数据库实时查询强于用户口述。证据链系统可以给证据设置source_authority、freshness、granularity、directness等评分,用于冲突裁决和风险展示。但评分规则应可解释,不能成为另一个黑箱。
不确定性还会来自模型和评审器。LLM-as-judge可以提高自动化评测效率,但评审模型会受提示、样本、领域和语言影响。高风险系统应把自动评审结果视为信号,而不是最终真理。人工抽检、专家标注、线上反馈和事故复盘仍然必要。ARES等工作强调用少量人工标注校准自动评估,这个思想在产品中同样适用。
证据链工程不只适用于问答系统,也适用于AI教程网站和社区内容。长文教程常见问题是概念泛化、引用漂浮、结构像列表、资料过期、内容互相重复。若一个网站已经有RAG全流程、评测体系、可观测性、智能体、模型网关等文章,再新增内容时就不能换个标题重复讲同一套框架。新文章必须有独立问题、独立证据和独立贡献。
教程文章的证据链可以体现在三个层面。第一是文献证据:引用原始论文、官方文档和标准,而不是只引用二手总结。第二是结构证据:用图表和公式表达系统关系、状态转移、成本模型和评测指标,让读者能检查论证是否严密。第三是语料证据:写作前扫描已有文章标题、标题层级和段落指纹,避免把旧内容改写成新文。对于PromptX Wiki这种教程库,Mermaid图、KaTeX公式和Markdown表格不是装饰,而是让复杂工程关系变得可复查。
内容平台还应建立文章级元数据。每篇文章记录主题、关键词、主要来源、相近旧文、差异点、图表数量、公式数量、最后验证时间。新增文章若与旧文相似度过高,应改题或放弃,而不是用同义词重写。长文如果只是一串“第一、第二、第三”的浅列表,即使字数超过一万,也不符合生产级内容要求。深度来自问题定义、机制分析、证据比较、边界讨论和可验证方法,不来自篇幅本身。
在社区服务中,证据链还能改善讨论质量。LocalAIHub一类社区如果讨论“某本地模型是否适合生产”“某部署框架是否稳定”“某RAG方案是否值得用”,帖子应鼓励作者提供硬件、模型版本、数据规模、评测样本、失败日志、配置片段和复现实验,而不只是表达感受。社区不需要每帖像论文,但要让经验可比较、可复现、可纠错。
主流平台提供的引用、grounding、文件搜索和结构化输出能力很有用,但它们通常只是证据链的一段。产品团队需要理解能力边界,不能把平台返回的citation当成完整审计系统。
| 能力类型 | 解决的问题 | 不能解决的问题 | 证据链中的位置 |
|---|---|---|---|
| 文件搜索引用 | 把回答与上传文档或文件结果连接 | 资料版本治理、权限策略、引用是否支撑具体主张 | 候选证据和引用入口 |
| 网络搜索grounding | 获取公开网页和较新信息 | 网页许可、快照保存、冲突裁决、企业内部资料 | 外部证据补充 |
| 文档引用 | 回答时展示来源片段 | 主张级覆盖率、跨文档冲突、线上评测 | 用户可核验展示 |
| 结构化输出 | 让模型输出可解析对象 | 对象事实正确性、证据真实性、权限安全 | 主张抽取和协议层 |
| LLM-as-judge | 自动评估相关性和忠实性 | 评审漂移、领域误判、金标缺失 | 离线评测和抽检 |
| OpenTelemetry GenAI观测 | 统一记录模型调用链路 | 业务证据对象、引用正确性、内容质量 | 运行时追踪底座 |
这个表格的含义很直接:平台能力应被纳入证据链,而不是替代证据链。若应用只调用文件搜索,然后把模型输出直接展示给用户,系统仍然不知道每个主张是否被证据支持。若应用只要求JSON Schema输出,系统得到的是结构化文本,不是事实验证。若应用只记录OpenTelemetry span,系统知道调用发生了,却未必知道答案对不对。
成熟做法是把平台能力封装在自己的证据协议里。无论底层使用OpenAI文件搜索、Claude文档引用、Vertex grounding、本地向量库、PostgreSQL全文检索还是浏览器抓取,系统内部都统一转成evidence对象和claim对象。这样模型和平台可以更换,审计、评测和用户体验不会重写。
团队不需要一开始建设庞大平台。最小证据链可以从三个场景开始:高频知识问答、高风险制度问答、长文研究助手。每个场景选一百到三百个真实问题,人工标注正确证据,建立资料版本和引用粒度要求,然后逐步引入自动化。
第一阶段只做资料和引用规范。所有资料进入系统时记录来源、版本、权限和位置。答案必须引用到章节或段落,不能只引用文件名。人工抽查每周固定比例,记录引用是否支撑答案。这个阶段的目标不是自动化最高,而是建立共同语言:什么算证据,什么算主张,什么算支持。
第二阶段引入主张抽取和证据绑定。让模型输出claim列表,系统检查每个claim是否有evidence_id。无证据主张默认删除或降级。对高风险问题,生成后再抽取最终答案主张,检查是否新增未绑定事实。这个阶段会显著减少“最后一句突然发挥”的问题。
第三阶段建立离线评测。用人工金标样本测试检索召回、上下文精度、答案忠实、引用精确和拒答质量。每次模型、提示词、切分策略、嵌入模型、重排器或资料解析器变化,都跑回归评测。不要只看总分,要保留失败分类。失败样本比成功样本更能推动系统变稳。
第四阶段接入线上观测和反馈。每次回答记录trace和证据关系,用户可以对答案或引用反馈。高风险答案进入抽检队列;资料更新触发相关缓存和评测重跑;相似错误聚类后变成知识库修复任务或提示词修复任务。此时证据链开始形成闭环。
第五阶段再扩展到智能体行动。先让智能体在只读工具上建立证据链,再逐步开放写操作。每个写操作都要求前提主张、证据来源、参数来源和人工确认。行动失败后,系统不仅记录错误,还要记录当时依据是否充分。智能体越能干活,证据链越不能弱。
证据链工程提高可靠性,但不能保证绝对正确。资料本身可能错误,权威来源也可能更新滞后;解析器可能漏掉表格脚注;检索可能在长尾问题上失败;评审模型可能误判;人工标注也可能不一致。可核验性解决的是“错误能否被发现、定位和纠正”,不是把AI变成无错机器。
证据链还会增加成本和复杂度。主张抽取、证据绑定、评审和日志都会消耗延迟与token。若所有问题都走最高标准链路,用户体验可能变差。生产系统必须按风险分层,把复杂链路用于事实密集、高风险、可审计场景;低风险闲聊和创意生成可以采用轻量策略,但也应避免伪造事实引用。
另一个局限是引用不等于理解。模型可能引用正确资料,却在综合时误解条件;也可能把局部证据推广到不适用场景。解决这类问题需要更强的任务评测、领域专家样本和交互式澄清。证据链提供检查工具,但不替代领域知识。
最后,用户界面必须平衡透明和负担。把所有证据、评分、日志都展示给普通用户,会让页面难以使用;完全隐藏又会降低可核验性。更好的设计是分层展示:默认展示关键引用和不确定性,展开后显示证据片段和来源,审计角色可查看完整链路。生产级UI要服务最终用户,不应泄露内部字段和调试术语。
可核验AI答案的核心不是“引用更多”,而是“每个关键事实都能承担证明责任”。证据链工程把AI应用从一次性生成,变成资料、检索、主张、引用、审计和评测组成的长期系统。它要求团队把资料版本化,把证据对象化,把主张结构化,把引用粒度化,把运行过程可观测化,把错误样本评测化。
RAG、平台引用、结构化输出、LLM-as-judge和GenAI可观测性都是重要工具,但任何单项工具都不等于成熟服务。成熟服务的标志是:用户能检查依据,运营能发现漂移,工程师能复盘链路,资料责任人能修复源头,模型升级能跑回归,智能体行动能说明前提。这样的系统仍会犯错,但错误不会长期藏在流畅文本里。
对于AI教程网站,证据链意味着文章要像应用论文一样提出问题、给出方法、展示图表公式、引用原始资料、说明边界,并与旧内容保持差异。对于社区服务,证据链意味着经验帖要提供可比较的环境、数据、日志和复现路径。对于企业AI应用,证据链意味着AI不只是回答者,而是组织知识、风险和行动之间的可审计接口。
未来的AI产品竞争,不会只看哪个模型更会生成漂亮答案,也会看哪个系统更能管理事实、证据、责任和纠错。能被查,才能被信任;能被复盘,才能进入生产;能持续修正,才算真正成熟。