名称: 事实检查 描述: 根据来源验证生成输出中的声明。用作内容生成后的独立过程,以捕捉幻觉。关键约束 - 不能可靠地与生成过程结合在单一过程中。 许可证: MIT 元数据: 作者: jwynia 版本: “1.0” 领域: 研究 集群: 方法论
事实检查技能
系统验证生成内容中的声明。设计用于捕捉幻觉、虚构和未支持的断言。
为什么独立过程重要
根本问题: 大型语言模型通过预测下一个内容来生成合理的内容。同样的机制会产生幻觉——听起来正确但并非真实的自信陈述。生成模式下的LLM无法可靠地捕捉自己的幻觉,因为:
- 注意力集中在生成上,而不是验证
- 连贯性压力使错误声明在上下文中感觉正确
- 相同的权重会产生并确认错误
- 没有外部基础来反驳虚构
解决方案: 验证必须是独立的认知过程,具有:
- 专注于每个声明的新鲜注意力
- 明确的来源检查(而非内存/训练数据)
- 对内容持对抗态度
- 尽可能的外部基础
诊断状态
F1: 无验证过程
症状: 内容生成并交付,未经任何事实检查。 风险: 幻觉未被检测到就传递出去。 干预: 在交付前运行验证过程。提取声明,根据来源检查每个。
F2: 自我验证(无效)
症状: 在同一过程中要求“检查你的事实”同时生成。 风险: 错误信心——错误被同一过程确认。 干预: 先完成生成,然后运行独立的验证过程,有明确的来源要求。
F3: 基于内存的验证(不可靠)
症状: 根据“我所知道的”检查声明,没有外部来源。 风险: 幻觉被虚构知识验证。 干预: 要求每个验证声明有明确的来源引用。如果无来源,标记为未验证。
F4: 选择性验证
症状: 只检查部分声明;其他假设正确。 风险: 未检查的声明可能包含错误。 干预: 系统提取所有可验证声明。检查每个,或明确标记未检查项。
F5: 验证完成
症状: 所有声明提取,每个根据来源检查,置信度分配。 指标: 存在来源引用,未验证声明标记,置信度明确。
验证过程
阶段1: 声明提取
从内容中提取每个可验证陈述。
要提取的声明类型:
- 事实断言(“X是Y”,“X导致Y”)
- 统计数据和数字(“40%的…”,“在2023年…”)
- 归因(“根据X…”,“研究显示…”)
- 定义(“X意味着…”,“X被定义为…”)
- 历史声明(“X发生在…”,“X由…创立”)
- 因果声明(“X导致Y”,“X防止Y”)
- 比较声明(“X优于Y”,“X是最大的…”)
要跳过的内容:
- 明确标记为意见
- 假设和推测(如果标记)
- 从陈述前提的逻辑推导
- 直接引用(验证归因,而非内容)
阶段2: 声明分类
按可验证性分类每个声明:
| 类别 | 描述 | 验证策略 |
|---|---|---|
| 可验证-硬 | 数字、日期、名称、引用 | 必须与来源完全匹配 |
| 可验证-软 | 一般事实、过程、机制 | 来源应基本支持 |
| 归因 | “X说…”,“根据…” | 验证来源存在并说过类似内容 |
| 推断 | 从证据得出的结论 | 验证前提,评估推理 |
| 意见作为事实 | 主观陈述作为客观事实 | 标记为需要重新措辞或限定 |
阶段3: 来源验证
为每个声明尝试验证:
## 声明验证日志
### 声明1: “[精确声明文本]”
- **类别:** [可验证-硬/软/归因/推断]
- **来源检查:** [具体来源]
- **发现:** [确认/部分支持/未找到/矛盾]
- **置信度:** [高/中/低]
- **注释:** [差异,需要限定]
### 声明2: ...
验证结果:
| 结果 | 含义 | 行动 |
|---|---|---|
| 确认 | 来源明确支持声明 | 保留,引用来源 |
| 部分支持 | 来源支持部分,而非全部 | 限定或缩小声明 |
| 未找到 | 未找到来源 | 标记未验证,考虑移除 |
| 矛盾 | 来源说相反内容 | 移除或纠正 |
| 过时 | 来源过时;当前状态可能不同 | 更新或添加时间性警告 |
阶段4: 置信度分配
为内容分配整体置信度:
| 级别 | 标准 |
|---|---|
| 高 | 所有关键声明已验证;未发现矛盾 |
| 中 | 大部分声明已验证;一些未验证但合理 |
| 低 | 重要声明未验证;一些需要纠正 |
| 不可靠 | 发现多个矛盾;需要重大修订 |
幻觉模式
常见幻觉类型需警惕:
1. 合理虚构
模式: 听起来正确但不存在具体细节。 例子: 虚假论文引用、不存在的统计数据、虚构引用。 检测: 根据主要来源验证具体声明。
2. 自信推断
模式: 合理推断陈述为既定事实。 例子: “研究显示…”(无具体研究),“专家同意…”(无引用)。 检测: 要求任何外部支持声明有具体来源。
3. 时间混淆
模式: 混合不同时期信息。 例子: 旧统计数据呈现为当前、已失效组织描述为活跃。 检测: 检查来源日期,验证当前状态。
4. 归因漂移
模式: 正确信息归因于错误来源。 例子: 引用分配给错误人物、发现归因于错误研究。 检测: 专门验证归因,而不仅仅是内容。
5. 融合
模式: 合并多个来源细节为单一虚构来源。 例子: 虚构研究结合了不同论文的真实发现。 检测: 验证具体来源存在并包含所有归因声明。
6. 精度夸大
模式: 给模糊知识添加虚假精度。 例子: “大约47.3%”当仅支持“大约一半”。 检测: 检查来源是否确实提供该精度水平。
验证检查清单
发布事实检查内容前:
- [ ] 声明提取? 所有可验证陈述识别
- [ ] 来源检查? 每个声明根据外部来源验证
- [ ] 具体而非内存? 验证使用实际来源,非LLM训练数据
- [ ] 矛盾标记? 声明与来源冲突记录
- [ ] 未验证标记? 无来源声明明确识别
- [ ] 置信度陈述? 整体可靠性水平传达
- [ ] 独立过程? 验证在生成后完成,而非期间
与研究技能集成
| 研究阶段 | 事实检查角色 |
|---|---|
| 研究期间 | 验证来源本身中的声明 |
| 合成后 | 验证合成是否准确代表来源 |
| 交付前 | 最终过程捕捉输出中的幻觉 |
交接模式:
- 研究技能收集和合成信息
- 内容基于研究生成
- 事实检查技能作为独立过程运行
- 纠正完成,置信度分配
- 输出交付,带验证状态
操作约束
此技能不能做什么
- 生成期间验证 — 必须是独立过程
- 捕捉所有幻觉 — 一些可能遗漏
- 无来源验证 — 无来源 = 未验证,而非“通过知识验证”
- 替代领域专业知识 — 可检查来源存在,非评估质量
验证最关键时
| 上下文 | 验证级别 |
|---|---|
| 发布内容 | 要求完整验证 |
| 决策支持 | 关键声明必须验证 |
| 教育内容 | 预期高准确性 |
| 随意对话 | 可接受轻验证 |
| 创意小说 | N/A(不同标准) |
反模式
| 模式 | 问题 | 修复 |
|---|---|---|
| “我有信心” | 信心 ≠ 准确性 | 要求来源引用 |
| “据我所知” | 内存不可靠 | 检查外部来源 |
| “一般说来” | 模糊性隐藏不确定性 | 具体或标记未验证 |
| “研究显示” | 哪项研究? | 引用具体来源 |
| 验证同时生成 | 同一过程无法捕捉自己错误 | 独立过程强制 |
| 检查一,假设其余 | 部分验证 | 检查所有或标记未检查 |
输出格式
交付事实检查内容时:
## [内容标题]
[带声明的内容体]
---
### 验证状态
**整体置信度:** [高/中/低]
**已验证声明:**
- [声明1] — 来源: [引用]
- [声明2] — 来源: [引用]
**未验证声明:**
- [声明3] — 未找到来源;视为不确定
**已做纠正:**
- [原始声明] → [纠正声明] (来源: [引用])
**警告:**
- [任何限制或限定]
输出持久性
此技能将主要输出写入文件,以便工作跨会话持久。
输出发现
在进行任何其他工作前:
- 检查项目中
context/output-config.md - 如果找到,查找此技能的条目
- 如果未找到或无此技能条目,先询问用户:
- “我应该在哪里保存此事实检查会话的输出?”
- 建议:
explorations/fact-check/或此项目的合理位置
- 存储用户偏好:
- 如果存在上下文网络,在
context/output-config.md中 - 否则,在项目根目录
.fact-check-output.md中
- 如果存在上下文网络,在
主要输出
为此技能持久:
- 提取的声明 - 识别的所有可验证陈述
- 验证结果 - 每个声明带来源和状态
- 置信度评估 - 整体内容可靠性
- 已做纠正 - 从原始的任何更改
对话 vs. 文件
| 存文件 | 留在对话 |
|---|---|
| 验证状态报告 | 来源讨论 |
| 声明逐条结果 | 澄清问题 |
| 置信度评估 | 验证过程 |
| 纠正和警告 | 实时反馈 |
文件命名
模式: {内容名称}-factcheck-{日期}.md
例子: research-synthesis-factcheck-2025-01-15.md
来源框架
此技能扩展研究集群,具有生成后验证。区别于研究(收集信息),并作为输出质量控制操作。
相关: skills/research/SKILL.md(生成前), frameworks/doppelganger/(真理层次结构)