Source A 说电动车市场份额 35%。Source B 说 42%。综合代理标记为矛盾。人工复核发现:Source A 来自 2022 年行业联盟报告,Source B 来自 2024 年政府统计。这不是矛盾——是两年内增长了 7 个百分点。
没有日期,35% 和 42% 看起来像冲突的声明。有了日期,它们讲述的是市场增长的故事。“矛盾”和”趋势”之间的差别就是一条元数据。
虚假矛盾问题
一个研究系统每份报告标记 18 个矛盾。人工复核发现其中 14 个(78%)是假的——同一指标在不同时间点的测量值反映的是自然演变。只有 4 个是真正的同期冲突。
根因:子代理输出包含声明和来源 URL,但没有日期。综合代理无法区分”数值不同因为年份不同”和”数值不同因为来源意见不一致”。
在子代理输出 schema 中添加 data_collection_date 和 publication_date 之后:
| 指标 | 添加日期前 | 添加日期后 |
|---|---|---|
| 每份报告标记的矛盾数 | 18 | 5 |
| 误报率 | 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 年收集的数据。只有从文档内容本身提取的日期才是可靠的。
一句话总结: 每条声明都要附带数据收集日期和发布日期——没有时间元数据,综合代理无法区分两年的市场增长趋势和事实性矛盾。