[WIP] [v2] 维基百科版本历史:时间感知训练数据的天然金矿
利用维基百科 edit history 中的带时间戳知识变更记录,构建三类高价值时间感知训练数据集,从根本上提升 LLM 的时间感知能力与知识不确定性表达能力。
[WIP] 维基百科版本历史:时间感知训练数据的天然金矿
1. 动机:「知识截止日期」是个工程问题,还是认知问题?
大语言模型有一个众所周知的局限:知识截止日期(knowledge cutoff)。模型在某个时间点之后训练的数据就停止了,因此对于截止日期后的事件,它要么不知道,要么更危险——自信地给出过时的答案。
现有的解决方案大致分两类:
RAG(检索增强生成):通过外部检索引入最新文档,让模型「查阅」而不是「记忆」。这确实有效,但本质上是个补丁——模型本身并没有学会如何随时间推移更新自己的信念,它只是被动地接受外部投喂的内容。当检索结果与训练记忆冲突时,模型往往不知道该信谁。
截止日期标注:在系统 prompt 或上下文中告知模型「你的知识截止于 YYYY-MM」。这更像是一块免责声明,而不是真正的时间感知。模型并不真正理解「在某个时间点,某个事实是 A,而在另一个时间点,它变成了 B」。
这两种方法的共同缺陷是:它们都是外部补丁,没有从训练层面让模型习得时间感知(temporal awareness)。真正的时间感知意味着:
- 给定一个时间约束,能回答「那个时间点」的正确答案
- 对于随时间演变的事实,能主动表达不确定性
- 遇到与训练记忆冲突的新证据时,知道如何更新立场
要习得这种能力,需要大量带时间戳的、显式记录「知识如何变化」的训练数据。而这类数据,恰好隐藏在一个我们熟视无睹的地方:维基百科的编辑历史。
维基百科 edit history 的独特价值
维基百科自 2001 年创立以来,每一次编辑都被完整记录,包含:编辑前内容、编辑后内容、时间戳、编辑者、编辑摘要(edit summary)。截至 2024 年,英文维基百科拥有超过 670 万篇文章、超过 10 亿次编辑记录。
关键在于:每次 edit 不只是一次内容更新,它本质上是对「某个时间点,世界状态发生了变化」的一次结构化记录。这是极少数能把「知识变化过程」本身保存下来的数据来源——不是知识快照,而是知识的时间轴。
2. 三类高价值变更模式
并非所有的 wiki edit 都同等有价值。经过分析,以下三类变更模式对训练时间感知能力具有最高的信号密度:
2.1 数字 / 事实更新类
这类编辑的特征是:某个具体的数字、日期或可验证事实发生了变化。例如:
(2022 年版本) 截至 2021 年,该公司市值约为 2.3 万亿美元。
(2024 年版本) 截至 2023 年,该公司市值约为 2.9 万亿美元。
这类 diff 可以直接用于训练「时间切片事实检索」能力:模型应该知道在不同时间点,同一问题有不同的正确答案。
2.2 知识反转类
这类编辑更罕见但更有价值——某个曾被认为正确的结论后来被推翻:
(旧版本) 研究表明,每天服用小剂量阿司匹林可降低心脏病风险。
(新版本,2018 年后) 最新指南不再建议无心血管病史的健康人群常规服用小剂量阿司匹林,因为出血风险可能超过获益。
这类数据训练的是:不要对旧结论过度自信,当新证据出现时,要更新立场。这正是当前 LLM 最缺乏的认识论习惯之一。
2.3 编辑战争 / 高频修改类
某些 wiki 词条会被反复编辑甚至互相回退(「编辑战争」,edit war)。高编辑频率本身就是一个信号:这个知识是有争议的、不稳定的。
这类模式可以训练模型的「元认知」:对于被频繁修改的知识点,主动表达不确定性,而不是给出武断的答案。
3. 三个具体数据构建方案
方案 A:时间切片问答数据(Time-Stamped Factual QA)
核心思路:从 edit diff 中提取事实变化,构造「给定时间约束」的问答对。
构建流程:
- 从 edit diff 中识别数字/事实更新(使用正则 + NER)
- 提取变更时间戳 T、旧值 V_old、新值 V_new
- 构造两类问答:
T 之前→ 答案为 V_old;T 之后→ 答案为 V_new
JSON 数据格式示例:
{
"id": "tsqa-en-20240315-0041",
"source": {
"article": "Apple Inc.",
"revision_old": 1178234901,
"revision_new": 1189452301,
"edit_timestamp": "2024-03-15T08:22:11Z",
"edit_summary": "Updated market cap to reflect Q1 2024 figures"
},
"fact": {
"subject": "Apple Inc.",
"predicate": "market capitalization",
"value_before": "approximately $2.3 trillion",
"value_after": "approximately $2.7 trillion",
"change_date": "2024-03-15"
},
"qa_pairs": [
{
"temporal_constraint": "before_change",
"question": "As of early 2023, what was Apple Inc.'s approximate market capitalization?",
"answer": "approximately $2.3 trillion",
"answer_valid_until": "2024-03-15",
"confidence": "high"
},
{
"temporal_constraint": "after_change",
"question": "As of Q1 2024, what is Apple Inc.'s approximate market capitalization?",
"answer": "approximately $2.7 trillion",
"answer_valid_from": "2024-03-15",
"confidence": "high"
}
],
"training_signal": "temporal_factual_retrieval"
}
🔄 [v2 改进]
方案 A 的反事实训练风险缓解
方案 A 的核心风险在于:如果模型被大量「同一问题有不同时间点不同答案」的样本训练,可能产生副作用——在没有时间上下文时,模型不知道该输出哪个时间点的答案,进而产生随机或混乱的回答。
建议采取以下措施缓解这一风险:
始终包含时间上下文标记:训练样本中必须包含显式的时间约束(如「基于 [日期] 的知识,回答以下问题」),不允许出现「无时间上下文」的训练格式。这相当于让模型学会「时间上下文 → 对应时间点的答案」的条件映射,而不是学习「同一问题有多个正确答案」这一危险模式。
评估方法:在评估阶段,专门构造「去掉时间上下文」的测试用例,检查模型面对无时间约束的问题时是否变得更保守(输出不确定性声明),而不是随机选择某个时间点的答案。
降级策略:如果实验发现方案 A 对无时间上下文问题的回答质量有显著负面影响,应将方案 A 的数据作为「辅助训练」(小比例混入)而非「核心训练」数据,避免其主导模型行为。
方案 B:知识过期检测数据(Knowledge Staleness Detection)
核心思路:训练模型判断「一段文字所描述的知识是否已经过期」,并给出过期原因。
构建流程:
- 取「被修改的段落」作为 stale 样本
- 取「修改后的段落」作为 current 样本
- 用 edit summary 作为「过期原因」的弱标注
JSON 数据格式示例:
{
"id": "ksd-en-20230720-0812",
"source": {
"article": "COVID-19 vaccine",
"section": "Effectiveness",
"edit_timestamp": "2023-07-20T14:05:33Z",
"edit_summary": "Updated effectiveness data with 2023 bivalent booster studies"
},
"staleness_pair": {
"stale_passage": {
"text": "Clinical trials showed the original mRNA vaccines to be approximately 95% effective against symptomatic COVID-19 infection.",
"knowledge_date": "2021-01-01",
"label": "stale",
"stale_reason": "Effectiveness figures were revised downward for Omicron variants; original 95% figure applies only to ancestral strain"
},
"current_passage": {
"text": "Effectiveness of original mRNA vaccines against the Omicron variant was significantly lower than against earlier variants, with updated bivalent boosters showing improved but variable protection.",
"knowledge_date": "2023-07-20",
"label": "current"
}
},
"task": {
"input": "Given the following passage, determine if the information is current or potentially outdated. Passage: [stale_passage.text]",
"expected_output": {
"verdict": "potentially_outdated",
"reason": "This statement refers to effectiveness data from early clinical trials (2020-2021). The COVID-19 virus has since evolved significantly, and effectiveness figures have been updated multiple times.",
"suggested_action": "Verify with sources dated after 2022 for variant-specific effectiveness data."
}
},
"training_signal": "staleness_detection"
}
方案 C:主动不确定性表达数据(Active Uncertainty Expression)
核心思路:利用 edit 频率作为「知识不稳定性」的代理指标,训练模型对高争议内容主动表达不确定性。
构建流程:
- 统计每篇文章(或段落级别)的编辑频率、回退率、编辑战争标记
- 计算「不稳定性分数」(instability score)
- 构造训练数据:对于高分词条,期望输出包含不确定性声明
JSON 数据格式示例:
{
"id": "aue-en-controversial-0293",
"source": {
"article": "Hydroxychloroquine and COVID-19",
"period": "2020-01 to 2021-12",
"edit_count": 1847,
"revert_count": 412,
"edit_war_flag": true,
"instability_score": 0.94
},
"instability_signals": {
"total_edits_per_month_avg": 77.0,
"revert_rate": 0.223,
"unique_editors": 389,
"has_talk_page_disputes": true,
"dispute_resolution_invoked": true
},
"training_example": {
"user_query": "Is hydroxychloroquine effective for treating COVID-19?",
"naive_response": "Studies have shown mixed results regarding hydroxychloroquine for COVID-19 treatment.",
"target_response": "This is an area where the evidence has been highly contested and has shifted significantly over time. As of my training data, major health organizations including the WHO and FDA do not recommend hydroxychloroquine for COVID-19 treatment based on available trial data. However, given that this topic has seen intense scientific debate and frequent updates, I strongly recommend consulting current peer-reviewed sources and official health guidelines rather than relying on my knowledge, which may be outdated or incomplete on this specific question.",
"uncertainty_markers": [
"has been highly contested",
"as of my training data",
"I strongly recommend consulting current sources",
"may be outdated or incomplete"
]
},
"training_signal": "active_uncertainty_expression"
}
🔄 [v2 改进]
统一数据格式(三方案共用)
方案 A、B、C 各自定义了独立的 JSON 格式,但三类数据在本质上描述的是同一个问题的不同侧面,理应可以联合训练。建议采用以下统一格式,通过
training_task字段区分任务类型:{ "article_id": "Q42", "revision_pair": {"before_id": "...", "after_id": "..."}, "change_type": "factual_update | factual_correction | new_info", "temporal_context": "2023-01-15", "training_task": "temporal_qa | staleness_detection | uncertainty_expression", "input": "...", "target_output": "...", "ground_truth_source": "revision_diff" }统一格式的好处:
- 三个方案的数据可以加载到同一个训练 pipeline,不需要维护三套数据读取代码
training_task字段支持按任务类型灵活采样(如 3:1:1 的 temporal_qa : staleness : uncertainty 混合)ground_truth_source字段明确标注每条数据的验证来源,便于事后质量审计- 为后续扩展新任务类型预留空间(只需新增
training_task枚举值)
4. 技术实现细节
数据获取
维基百科提供两种数据访问方式,各有适用场景:
- MediaWiki API:适合小规模、精准查询。通过
action=query&prop=revisions可获取特定文章的完整编辑历史,包含 diff 内容。适合原型验证。 - Wikipedia Dump 文件:英文维基百科每月发布完整数据转储,包含所有文章的完整版本历史(
enwiki-YYYYMMDD-pages-meta-history*.xml.bz2),压缩后约 20TB+,完整解压超过 100TB。适合大规模数据构建。
Diff 解析与有意义变更提取
原始 diff 包含大量噪声。提取「有意义的知识变更」需要多级过滤:
- 格式变更过滤:剔除仅修改 wiki 标记(
[[]]、{{}}等)、分类标签、外部链接格式的 diff - vandalism 检测:利用 Wikipedia 自带的
ores机器学习评分系统,过滤 vandalism 概率高的编辑 - 机器人编辑过滤:通过用户名匹配(
bot标记)和编辑模式识别,过滤自动化机器人编辑 - 语义变化检测:使用句子级嵌入对比(如 sentence-BERT),只保留语义差异超过阈值的段落对
🔄 [v2 改进]
去噪 Pipeline 具体方案
上述四步过滤在工程上需要更精确的实现规范,否则「有意义知识变更」的实际保留率可能远低于预期。以下是每一层的具体方案:
Layer 1:机器人编辑过滤
- 判断依据:edit summary 包含「bot」字样,或编辑者用户名在 Wikipedia 机器人用户列表中
- 预期覆盖:约占所有编辑的 15–20%
- 实现方式:字符串匹配,无需 ML 模型,速度快
Layer 2:微小编辑过滤
- 判断依据:diff 内容字数 < 20(仅修改标点、拼写、链接格式等)
- 预期覆盖:约占 30%(与 Layer 1 有一定重叠)
- 实现方式:统计 diff token 数量,简单阈值过滤
Layer 3:Vandalism 过滤
- 判断依据:Wikipedia ORES vandalism 检测模型评分(开源可用,支持 API 查询和本地部署)
- 预期覆盖:约 5–10% 的有效编辑包含 vandalism
- 注意:ORES 模型有误报率,建议使用较高的置信度阈值(>0.9)以减少误过滤
Layer 4:内容变更 vs 表述变更分类
- 判断依据:用 LLM 对 diff 进行二分类——「这个编辑改变了实质性信息吗?」
- 示例正例:「市值从 2.3 万亿更新为 2.7 万亿」
- 示例负例:「将 ‘utilizes’ 改为 ‘uses’」(语义等价的表述重写)
- 预期保留率:约 5–10% 的编辑为有实质性内容变更
修正规模估算:
基于上述四层过滤,各层依次处理后,实际可用于构造高质量训练数据的编辑约占总量的 5–10%。以英文维基 10 亿次编辑为基数,最终可用样本约为 5000 万–1 亿条原始 diff,进一步构造 QA 对后约为 500 万–1000 万条(方案 A 的估算)。原文「1000 万条 QA 对」的估算在乐观假设下成立,但应在论文中注明这是基于 5–10% 保留率的下限估算。
规模估算
| 层次 | 数量 |
|---|---|
| 英文维基百科文章总数 | ~670 万篇 |
| 历史编辑总次数 | ~10 亿次 |
| 去除机器人/格式编辑(估计 ~60%) | ~4 亿次 |
| 去除 vandalism(估计 ~15%) | ~3.4 亿次 |
| 有实质语义变化的 diff(估计 ~30%) | ~1 亿次 |
| 可构造高质量 QA 对(方案 A,估计 ~10%) | ~1000 万条 |
即便经过严格过滤,仍可产出千万量级的时间感知训练样本,远超现有手工标注数据集的规模。
5. 与相关工作的对比
现有时间感知数据集的局限
TempLAMA(Dhingra et al., 2022):聚焦于「时间敏感问题」的 QA 评测,包含约 5 万条问题。但数据量有限,且覆盖的时间跨度较窄,难以训练模型的时间感知能力。
TimeQA(Chen et al., 2021):基于维基百科快照构建,关注时间性问答。但它使用的是知识快照而非编辑历史,无法捕捉「知识如何变化」的过程信息。
WikiData 时间戳:WikiData 提供了结构化的时间属性(如 start time、end time),但它是结构化三元组,缺乏自然语言文本语境,无法直接用于训练语言模型的时间感知推理。
本方案的差异化定位
| 维度 | 现有方案 | 本方案 |
|---|---|---|
| 数据规模 | 千~十万量级 | 千万~亿量级(潜在) |
| 时间戳来源 | 手工标注 / 结构化属性 | 原生编辑时间戳 |
| 覆盖内容 | 知识快照 | 知识变化过程 |
| 语言形式 | 结构化 / 半结构化 | 自然语言文本 |
| 不确定性信号 | 无 | 编辑频率、回退率 |
核心差异化在于:本方案不是在记录「某个时间点的世界是什么样的」,而是在记录「世界是如何随时间变化的」。这个视角的转变,才是训练真正的时间感知能力所需要的。
6. 客观评价
真正有价值的地方
这个方向的核心价值在于数据的内生性:时间戳不是人工贴上去的标签,而是编辑行为本身的自然属性。这消除了标注偏差,也意味着数据可以持续自动增长。
编辑战争和高频修改所揭示的「知识争议度」,是现有任何数据集都没有系统性捕捉过的维度。用它来训练不确定性表达,思路新颖且理论依据扎实:如果人类专家都对某个知识点争论不休,模型对这个知识点表达不确定性是完全合理的。
主要挑战
这个方向的挑战同样不能忽视:
-
diff 噪声极高:绝大多数编辑是格式调整、错别字修正、链接更新,有语义价值的不超过 30%,精心设计的有意义知识变更可能只占 5~10%。大量的工程投入会花在过滤上。
-
知识变更的结构化提取困难:从自然语言 diff 中准确提取「主语-谓语-值」的变化,需要精准的 NLP 管线,对模糊表述(如「约」「大约」「据报道」)的处理尤其棘手。
-
英文中心,中文稀疏:英文维基百科编辑密度是中文版的数倍,如果目标是多语言时间感知能力,中文端的数据会非常稀疏。
-
知识反转类数据难以自动识别:最有价值的「知识反转」样本往往需要领域专业判断(比如医学结论的推翻),纯自动化方法难以可靠识别。
研究优先级评估
推荐优先级:中-高,但有明确的前提条件。
这个方向适合有长期投入意愿的团队,因为:
- 数据管线建设成本较高,从 dump 解析到高质量数据集至少需要 3~6 个月工程投入
- 短期内难以看到端到端的训练效果验证
- 但一旦管线成熟,数据集可以持续更新,具有长期复利效应
对于寻找快速发表点的研究者,更合适的切入方式是:先在小规模上验证方案 A(时间切片 QA)的训练效果,发表方法论论文,再逐步扩展到全量数据。
这个方向的终极价值不在于单篇论文,而在于成为时间感知预训练数据的基础设施。做好了,是一个可以支撑很多下游研究的数据底座。
7. 评估闭环
🔄 [v2 改进]
端到端评估方案
原提案缺乏对训练效果的端到端验证设计。以下补充完整的评估闭环:
时间感知评测集构造
构造专用的「时间感知评测集」:
- 规模:约 100 条关于知识变更的 QA,全部经人工验证
- 题目类型涵盖:时间切片事实检索、知识过期判断、知识争议表达
- 关键设计:每道题都有「带时间约束的正确答案」和「无时间约束的预期行为(表达不确定性)」两种评估维度
对比实验
实验组 训练数据 评测重点 控制组 无时间感知数据 时效性基线 实验组 加入本方案数据 时效性提升 主要对比指标:在「知识截止日期」类问题上的处理恰当率(包括:给出正确时间约束下的答案,以及在无时间约束时主动表达不确定性)。
目标指标
在「知识截止日期」类问题上的处理恰当率提升 >20%。这一目标基于以下判断:当前模型在此类问题上的表现约为 50–60%(依靠截止日期提示词),有时间感知训练数据后应能稳定达到 70–80%。
注意事项:评测集本身应使用 2024 年之后的知识变更(以避免与训练数据重叠),且不应使用维基百科数据(以避免数据分布泄漏)。可考虑从新闻数据库或学术数据库中构造评测样本。
本文为研究提案 v2(WIP),在 v1 基础上新增了去噪 pipeline 具体方案、反事实训练风险缓解、统一数据格式和评估闭环设计。数据规模估算为理论上限,实际可用数量取决于过滤策略的严格程度。欢迎讨论与批评。