K5.6.3 Task 5.6

时间元数据:不是每个差异都是矛盾

Source A 说电动车市场份额 35%。Source B 说 42%。综合代理标记为矛盾。人工复核发现:Source A 来自 2022 年行业联盟报告,Source B 来自 2024 年政府统计。这不是矛盾——是两年内增长了 7 个百分点。

没有日期,35% 和 42% 看起来像冲突的声明。有了日期,它们讲述的是市场增长的故事。“矛盾”和”趋势”之间的差别就是一条元数据。

虚假矛盾问题

一个研究系统每份报告标记 18 个矛盾。人工复核发现其中 14 个(78%)是假的——同一指标在不同时间点的测量值反映的是自然演变。只有 4 个是真正的同期冲突。

根因:子代理输出包含声明和来源 URL,但没有日期。综合代理无法区分”数值不同因为年份不同”和”数值不同因为来源意见不一致”。

在子代理输出 schema 中添加 data_collection_datepublication_date 之后:

指标添加日期前添加日期后
每份报告标记的矛盾数185
误报率78%20%
时间趋势正确呈现0是(呈现为递进)
综合耗时基线-15%

15% 的综合耗时减少来自消除了解决虚假矛盾的工作量。主要收益是准确性——时间趋势现在显示为递进(“35% → 42%“)而不是错误。

应该包含什么

每个子代理输出中的两个日期字段:

  • data_collection_date — 底层数据收集的时间(测量日期)
  • publication_date — 来源发布或最后更新的时间

两个都重要。一份 2024 年报告可能包含 2022 年收集的数据。发布日期告诉你来源的新旧程度;数据收集日期告诉你测量值的新旧程度。

{
  "claim": "EV market share: 42%",
  "source": "Government Statistics Bureau Annual Report",
  "data_collection_date": "2024-Q3",
  "publication_date": "2024-12-15"
}

实现并不复杂。子代理已经在读来源文档了——从中提取日期很直接。schema 的变化就是在输出结构中加两个字段。

综合必须处理的三种场景

有了时间元数据,综合代理可以区分三种场景:

1. 时间趋势(同一指标,不同时期)

市场份额:35%(2022)→ 38%(2023)→ 42%(2024)
来源:行业联盟年度报告

呈现为递进。不是矛盾。

2. 真正的矛盾(同一指标,同一时期)

2024 年市场份额:
- Source A:42%(政府统计)
- Source B:38%(行业联盟)
注:方法论不同;同期数值冲突。

标记为真正的冲突。保留双方及其来源。

3. 仅有旧数据可用

客户满意度:78%(最近数据:2021 年调查)
注:无更新的测量数据。

展示数据并明确标注其时效。2021 年的测量值比没有测量值更有信息量,前提是读者知道日期。

没有时间元数据,三种场景看起来都一样:“同一指标的两个不同数字。“综合代理无法区分它们。

“只用最新数据”的陷阱

常见提议:“每个指标只返回最新的数据点。这样就消除了矛盾。”

这也消除了趋势分析。“42% 市场份额”是一个快照。“2022 年 35%、2023 年 38%、2024 年 42%“是持续增长的故事。增长率、周期性模式和历史背景的研究需要多个时期的数据点。丢弃旧值等于让分析变成盲人。

对只有旧数据可用的指标也会失败。如果客户满意度最后一次测量是 2021 年,“只用最新”规则要么返回 2021 年的值(违背了自身目的),要么什么都不返回(丢失有用数据)。

时间元数据在不丢失任何数据的情况下解决了虚假矛盾问题。综合代理得到了正确呈现趋势、标记真正冲突和标注数据时效所需的一切。

隐式日期不够

另一种替代方案:“训练综合代理从 ‘recent study’ 或 ‘latest data’ 之类的短语中推断日期。“这些短语是模糊的。“Recent”可能是 6 个月也可能是 5 年。“Latest”可能是上周也可能是十年前。来源文档中的明确日期——报告上印刷的实际年份——是精确且无歧义的。

同样的问题也适用于从来源 URL 或文件名推断日期:report-2024.pdf 可能包含 2023 年甚至 2020 年收集的数据。只有从文档内容本身提取的日期才是可靠的。


一句话总结: 每条声明都要附带数据收集日期和发布日期——没有时间元数据,综合代理无法区分两年的市场增长趋势和事实性矛盾。