5.1 KiB
5.1 KiB
数据校验协议
防止错误数据污染 wiki。可验证的数据必须验证,不可验证的必须标注。
核心原则
Wiki 是知识资产,不是垃圾桶。 错误数据进入 wiki 后会被后续 query 引用、被其他 ingest 当作"已有结论"比较,错误会 compound。必须在入口把关。
校验时机
在 ingest 流程中,读取源文件之后、写入 wiki 之前插入校验步骤:
读源文件 → 提取关键声明
↓
分类:可验证 vs 不可验证
↓
可验证 → 用工具交叉验证 → 通过/不通过/无法验证
↓
写入 wiki(带校验标注)
可验证数据的识别
以下类型的声明应该尝试验证。具体用什么工具取决于用户环境中可用的 MCP/工具——下表是常见映射,不是硬性要求:
| 数据类型 | 示例 | 常见验证工具(视环境而定) |
|---|---|---|
| 上市公司财务数据 | 营收、净利、ROE | 金融数据 MCP(如 tushare、ifind、wind) |
| 基金/年金规模 | 管理规模、份额 | 金融数据 MCP |
| 宏观经济指标 | GDP、CPI、PMI | 金融数据 MCP |
| 监管文件编号 | 人社部发〔2026〕XX 号 | WebSearch |
| 公司基本信息 | 成立时间、注册资本、法人 | 金融数据 MCP / WebSearch |
| 行业统计数据 | 市场规模、增速、份额 | WebSearch / 行业数据 MCP |
| 日期和事件 | "2026年3月发布" | WebSearch |
工具发现:Agent 在首次 ingest 时通过环境检查(见 source-validation.md)确认可用工具。没有对应工具时,该类数据标注 verified: false,不阻塞 ingest。
不可验证的声明:观点、分析、预测、推断、主观评价。这些跳过校验,按 source-validation.md 的来源分级标注。
校验流程
Step 1: 提取可验证声明
从源文件中识别包含具体数字、日期、文号的事实性声明:
源文件原文:
"截至2024年底,中国企业年金基金累计规模达到3.2万亿元,覆盖企业12.8万家"
提取出 2 个可验证声明:
- 声明 A:企业年金累计规模 3.2 万亿(截至 2024 年底)
- 声明 B:覆盖企业 12.8 万家(截至 2024 年底)
Step 2: 尝试验证
按优先级使用可用工具:
1. 专业数据 MCP(如金融、医疗、法律等领域数据接口):有接口 → 直接查
2. WebSearch:搜索官方发布的同期数据
3. Wiki 内交叉:看 wiki 中其他页面是否有相关数据
4. 无可用工具:跳过,标注 unverified
Step 3: 判定结果
| 结果 | 处理 | frontmatter 标注 |
|---|---|---|
| verified — 工具返回数据一致(误差 < 5%) | 正常 ingest | verified: true |
| disputed — 工具返回数据不一致 | 暂停,展示差异,让用户决定 | 用户确认后标注 verified: user-confirmed |
| unverifiable — 没有工具或数据源不覆盖 | 正常 ingest | verified: false |
| partial — 部分声明验证通过,部分未验证 | 逐条标注 | 混合标注 |
disputed 时的用户交互
以下示例以金融领域为例,实际执行时替换为用户的目标领域和工具:
⚠️ 数据校验发现差异:
声明:"XX 基金累计规模达到 3.2 万亿元(2024 年底)"
数据工具查询结果:3.58 万亿元(2024 年底)
差异:-10.6%
可能原因:
- 源文件数据有误
- 统计口径不同
- 数据工具更新延迟
请选择:
1. 使用工具验证数据(3.58 万亿)→ 替换源文件数据后 ingest
2. 使用源文件数据(3.2 万亿)→ 标注 user-confirmed 后 ingest
3. 两者都记录 → 以 contested 方式 ingest
4. 放弃本条 → 跳过此声明
页面中的校验标注
在实体/概念页面中标注验证状态:
## 基金规模
截至 2024 年底,XX 基金累计规模达 3.58 万亿元。
✅ verified(数据工具 2025-01-15 查询)
(来源:[[2026-04-06-source-doc]],原文数据 3.2 万亿经工具校正)
## 历史
- ~~累计规模 3.2 万亿元~~(来源:[[2026-04-06-source-doc]] 原文,经工具校正为 3.58 万亿)
工具可用性
| 场景 | 有工具时 | 无工具时 |
|---|---|---|
| 专业领域数据 | 对应 MCP 自动验证 | 标注 unverified,建议用户手动确认 |
| 公开信息 | WebSearch 交叉验证 | 标注 unverified |
| 内部数据(口述/会议) | 无法验证 | 标注 source_type: 口述,confidence: medium |
Skill 在被动模式(无搜索工具)下:所有数据标注为 verified: false,依赖 source-validation.md 的来源分级作为可信度参考。不会阻断 ingest,但会在每个数字旁标注"未验证"。
与 ingest-protocol 的关系
校验插入在 ingest-protocol.md 的 Step 1 和 Step 2 之间:
Step 1: 读取源文件,提取关键信息
Step 1.5: 【数据校验】提取可验证声明 → 工具交叉验证 → 判定结果
Step 2: 搜索已有 wiki
Step 3: 逐页比较新旧
...
如果 Step 1.5 发现 disputed 数据并暂停,用户确认后才继续 Step 2。