让答案可核对:检索与生成之间的「证据表」

人工智能 · 2026-10-07

生成式回答难核对,解法是在检索与生成之间加一张证据表:抽取事实+出处+原话,程序做子串校验,只基于表写答案并标引用。本文给出字段设计、三步流程、三个收益与常见错误。


让答案"可核对",而不是"听起来对"

生成式回答最大的问题是**无法核对**:句子通顺、语气自信,但你不知道它依据什么。

解法是让检索与生成之间多一层显式的**证据表**:先把片段整理成结构化事实,再基于事实写答案。

证据表长什么样

每条一行,字段固定:

| 字段 | 说明 |

|---|---|

| 事实 | 一句话陈述(不含推断) |

| 来源 | 文档标题 + 章节/页码 |

| 原文片段 | 支撑该事实的**原话**(截断到 80~120 字) |

| 时间 | 该文档的发布日期 |

| 置信 | 高 / 中 / 低(人工或规则给的) |

这张表是**纯抽取**产物,不允许出现"因此""说明"这类推断词。

三步流程

1. **抽取**:从检索到的片段里抽出事实,逐条附原文与出处;抽不出就写"未找到相关事实";

2. **校验**:程序检查每条事实的原文片段**确实出现在**该来源片段中(子串比对),不通过就丢弃;

3. **成文**:只允许基于证据表写答案,**每条结论标注引用编号**;证据表里没有的,不许写。

三个直接收益

  • **可核对**:用户能点开引用看到原话;
  • **可评测**:事实错误率、引用一致性都能自动算(引用编号与事实是否对得上);
  • **可降级**:证据表为空时,明确回"资料里没有提及",而不是让模型编。
  • 常见错误

  • **把推断写进证据表**("这说明 X 已经失败")→ 后面所有结论都建立在推断上;
  • **引用不核对**(引用编号乱标)→ 必须做**子串级**校验,别只看编号存在;
  • **证据表太长**(几十条)→ 用户不看、模型也读不完;按相关度截断(例如前 8 条);
  • **只给结论不给原文** → 等于回到"听起来对"。
  • 落地顺序

    1. 先做抽取 + 子串校验(这两步就能显著降低编造);

    2. 再把引用编号写进答案模板;

    3. 最后做"证据表为空时的明确回复"与引用一致性指标。

    想要你的品牌在AI回答里被推荐?

    免费诊断 →