打开网易新闻 查看精彩图片

你有没有想过,维基百科每个月有几百万次编辑,背后到底是谁在把关?

答案可能会让你意外:主要是一群志愿者,凭肉眼看文字差异去判断这次编辑到底加了什么、改了什么、有没有说瞎话。这套系统用了二十多年,但它有个致命缺陷。当你打开一个维基词条的编辑历史,看到的是密密麻麻的文字对比,红色删除线加绿色新增内容,但这行字背后到底代表什么知识变化,系统完全不会告诉你。

这就是约翰霍普金斯大学的两位研究者Alexander Martin和Benjamin Van Durme要解决的问题。他们发现,无论是人工编辑维基百科,还是用AI自动更新文档,都陷入了同一个死胡同:要么改了但说不清改了什么,要么干脆推倒重来。

这件事到底难在哪

先说一个具体场景。假设你在读英文维基百科上一个塞尔维亚政治人物的词条,条目写得挺详细,但如果你恰好懂塞尔维亚语,去看塞语版本的同一个词条,会发现里面记录了一些英文版完全没提到的信息,可能是某场官司的细节,也可能是某个亲属关系。

这不是巧合。**维基百科不同语言版本的内容覆盖程度极不均衡,往往是哪个地区的事件,哪个语言的志愿者写得最详细,其他语言版本就相对空白。**这意味着大量真实存在、有据可查的知识,被锁在了语言的墙内,你用英文搜索引擎根本找不到。

那怎么办?现在主流的做法有两条路。第一条路是把整篇文档连同新资料一起丢给大语言模型,让它重写一遍。这样做的问题是,模型确实会把新信息塞进去,但没人知道它具体加了什么,删了什么,会不会把本来对的内容改错了。第二条路更简单粗暴,直接抛弃旧文档,让AI根据所有资料从零生成一份新的。这在需要频繁更新的场景里代价极高,比如一个每天都要重新生成的市场分析报告,每次都从头写一遍,等于把之前所有的心血全部推倒重来。

这两条路都回避了同一个核心问题:**修订一份文档时,你到底新增了什么知识,这些知识跟原文有没有冲突,谁都说不清楚。**

论文作者从软件工程里找到了灵感。程序员改代码从来不会直接覆盖主分支,而是提交一个"拉取请求"(Pull Request),列清楚改了哪些文件、加了什么功能、别人可以审查、讨论、决定要不要合并。这套机制已经运转了十几年,稳定又透明。

如果文档编辑也能这样呢?

于是他们提出了知识拉取请求

*知识拉取请求(Knowledge Pull Request,简称KPR):一种让文档更新变得可审查、可追溯的框架,核心思路是把"改了什么文字"和"加了什么知识"这两件事拆开来看。*

这个框架的关键产出叫ChangeLog,翻译过来就是"变更日志"。它包含两个部分。第一部分叫"主张提案"(Claim Proposal),列出所有从新资料里提取出来的、值得添加的事实性陈述,并且标出它们该放进文档的哪个章节,如果和原文冲突还会专门标红警示。第二部分叫"文档差异"(Document Diff),就是传统意义上的文字改动记录,展示改完之后文档会变成什么样子。

打个比方,这就像你去医院做体检,报告不会只告诉你"你的身体状态和上次不一样了",而是会列出具体哪几项指标变了,变化的原因是什么,需不需要你特别关注。如果医生只甩给你一份"整体感觉略有不同"的模糊结论,你根本没法判断该不该担心。KPR做的事情,就是把文档修改从"感觉不一样了"变成"第几行指标变了,为什么变,要不要你确认"。

*主张(Claim):一句独立、可验证的事实陈述,比如"某场官司发生在2013年"。这是整个系统运转的最小单位,比一整段话或一整篇文章都更精确。*

为什么非要拆到"主张"这么细的颗粒度?因为句子和段落经常混杂着好几件事,你没法只针对其中一个点做判断。而单条主张就像乐高积木里的一块砖,你可以单独检查它对不对,单独决定要不要用它。这个思路其实在事实核查领域已经有先例,FActScore和VeriScore这些工具早就发现,把长文本拆成一条条原子事实去核实,比整段整段地判断要靠谱得多。

KPR具体怎么运作

整套流程分三步。

第一步是把所有资料,包括新资料和原文档本身,都拆解成一条条独立的主张。这里有个技术细节值得一提:**如果原始资料是非英语的,系统不会先翻译成英文再拆解,而是直接从原语言"跨语言拆解"出英文主张。**

研究者做过对比实验才发现这个顺序很重要。先翻译再拆解,翻译过程中的偏差会传导到拆解结果里,导致准确率下降;而先在原语言里拆解,再翻译主张,或者干脆直接跨语言拆解成英文,两种方式的准确率差不多,但后者只需要一次模型调用,效率更高。这就是为什么最终选择了跨语言直接拆解的路线。

第二步是审查这些主张,决定每一条该怎么处理。系统会对每条候选主张做四个判断:这条信息原文档里是不是已经有了(覆盖判断)?它跟原文档有没有冲突(冲突判断)?它跟这篇文档的主题相不相关(相关性判断)?如果都通过了,应该放进哪个章节(路由判断)?

*知识冲突(Knowledge Conflict):当新资料里的某条主张,跟文档里已有的内容说法不一致时,系统不会擅自替你决定信哪个,而是标记出来留给人工审核。*

这一步的设计思路其实很谨慎。想象你是一个记者,收到两份消息源,一份说某场选举的得票率是2.7%,另一份说是3%。你会怎么处理?大概率不会自己拍脑袋选一个数字写进报道,而是要么去核实哪个来源更可靠,要么在报道里注明"存在不同说法"。KPR做的正是后者,它选择把冲突摆到台面上,而不是替你悄悄抹平。如果系统自作主张选了一个答案,读者根本不知道这里其实存在争议,这才是真正危险的地方。

第三步是把审核通过的主张真正写进文档。**系统只重写那些收到了新主张的章节,其他没有变化的部分原封不动地保留下来。**这一点很关键,因为它意味着修改是局部的、可控的,而不是整篇文章推倒重写。

这套流程整体运作起来,效果如何呢

研究团队设计了两组实验来检验KPR。

第一组实验叫"跨语言知识修订",用英文维基百科当作主文档,其他语言版本当作资料源,测试KPR能不能把其他语言里独有的知识补充进英文版,同时不破坏原有内容。他们从MegaWika 2.0这个数据集里抽取了599篇文章,覆盖49种语言。

第二组实验叫"查询驱动报告更新",基于一个叫RAGTIME的多语言检索增强生成任务,模拟的场景是:一份根据某个查询生成的研究报告,过一段时间有了新资料,要不要更新,怎么更新。他们专门构造了三种情形:时间推移型(新资料是后来才出现的)、冲突型(新资料和旧内容说法不一致)、均衡型(新旧信息量差不多)。

这两组实验,都拿KPR去跟三种对照方法比较。第一种叫ConText,直接把原始资料文本喂给模型去重写,不做任何主张拆解。第二种叫ConClaim,跟KPR一样先拆解成主张,但不做任何过滤审核,把所有拆出来的主张全部塞进重写过程。第三种叫Scratch,也就是彻底抛弃旧文档,用所有资料从零生成新文档。

结果怎么样

先看跨语言维基百科修订的结果。研究者用一套叫MiRAGE的评估体系,衡量三个指标:信息精确度(添加的内容是否忠实于原始资料,没有被扭曲)、信息保留率(原文档里的内容有没有被完整保留)、信息新增率(新资料里的内容有没有被成功加进去)。

数据摆出来很直接。KPR在信息精确度上达到0.878,信息保留率0.950,信息新增率0.891,三项全面领先ConText和ConClaim。而且对比方式很有意思:从ConText换成ConClaim,也就是从"喂原始文本"换成"喂拆解好的主张",精确度和新增率都提升了;再从ConClaim换成KPR,也就是加上审核过滤这一步,两项指标又进一步提升,尤其是新增率提升幅度最大。

这说明了两件事。第一,**把资料拆成独立的事实陈述,比直接甩一大段原始文本给模型,效果要好得多。**第二,在拆解基础上再加一层审核过滤,效果又能更进一步。

这就好比你请一个助理帮你整理一份长篇会议纪要。如果你直接把录音转写的整段文字甩给他,让他自己去提炼重点,他很可能抓不住关键,甚至加进去一些跑题的内容。但如果你先自己把要点拆成一条条独立的句子,再让他去判断哪些该写进纪要,他的准确率会明显提高。而如果你在这基础上再帮他筛一遍,把已经写过的、跟主题无关的都剔除掉,只留下真正该补充的部分,他整理出来的东西自然更精准。这就是为什么"拆解加过滤"这套组合拳,比单纯"拆解"或者"什么都不做"要强。

再看这份修订过的文档,能不能真正帮到人。研究者构造了一批问答测试集,专门测试模型在读了修订后文档之后回答问题的准确率。结果显示,**没经过任何修订的原始英文文章,在回答多语言相关问题时的准确率平均只有29.5%,甚至比模型完全不看任何资料、纯靠自己记忆回答(35.8%)还要低。**这是因为那些问题的答案压根没写在英文版里。

而经过KPR修订之后,这个数字跳到了69.2%,遥遥领先ConText的48.4%和ConClaim的58.5%。有意思的是,在测试模型对英文原有内容的掌握度时,三种修订方式的表现几乎没差别,都只比原文略降了不到一个百分点。这说明KPR在大幅补充新知识的同时,并没有牺牲原有内容的质量,两头都占住了。

更让人意外的是接下来这组对比。研究者专门挑出100道最难的多语言问题,是那些所有测试模型闭卷都答不出来的题目,然后拿一个配备了网络搜索能力的前沿大模型(GPT-5.6)去挑战,同时也让一个只有70亿参数的小模型,配上KPR修订后的文档去回答同样的问题。

结果是,小模型加KPR文档答对了50题左右,而配备网络搜索的GPT-5.6只答对了32题,即便给GPT-5.6加上把问题翻译成源语言的额外优化,也只提升到41题,依然没追上KPR。

*源语言(Source Language):这里指的是某条知识最初被记录下来的那种语言,比如某个塞尔维亚事件的细节最先出现在塞尔维亚语维基百科上,塞尔维亚语就是这条知识的源语言。*

这个结果值得琢磨一下。这些资料本身是公开的、被搜索引擎收录的维基百科页面,理论上搜索引擎应该能找到。但事实是,**即便信息就摆在网上,搜索也未必能把它捞出来,尤其是当这些信息只存在于某个特定语言版本里的时候。**这说明拥有一份提前整理好的、经过修订的文档,可能比依赖实时搜索更靠谱。这就像你手头有一本提前做好标注的参考书,和你现场去图书馆翻找资料,哪怕图书馆藏书再丰富,临时找也未必能精准命中你需要的那一页。

第三,来看编辑成本这个维度。研究者设计了一套指标,模拟一个人工审核者需要花多少精力去检查和批准这些修改,包括改动幅度、需要人工确认的连续编辑块数量、新增了多少文字、原文保留了多少比例。

结果显示,KPR在保留原文比例上表现最好(97.3%),需要审核的连续编辑块数量也最少。ConClaim虽然改动幅度最小,但需要审核的编辑块数量反而是KPR的两倍还多,因为它没有过滤这一步,所有被路由过来的主张全部原样塞进重写流程,导致模型对很多本来不需要动的内容也做了改写。

这就像装修房子。如果你请的施工队每次都要把整面墙敲掉重新砌,工作量看起来是变小了,但每一处细小改动都散落在墙的各个角落,你验收的时候得跑来跑去反复检查十几个地方。而如果施工队提前规划好,把所有改动集中在几个连续的区域完成,你验收起来就轻松得多,哪怕总的改动量差不多大。KPR做的正是后者,它把变化集中成少数几块连续的编辑,方便审核者一次性确认。

第二组实验的表现如何

再看查询驱动报告更新这组实验。这里的场景更复杂,因为资料来源不再是同一篇文章的不同语言版本,而是彼此独立、可能互相矛盾的多份文档,报告本身也需要随着新资料反复重新生成。

在时间推移、内容冲突、信息均衡这三种构造出来的情形里,**KPR在几乎所有指标上都保持领先,尤其是在"冲突"这个最棘手的场景里,表现出了明显的优势。**

具体来说,当新旧资料互相矛盾时,ConText这种直接喂原始文本的方法,反而在整合新信息这件事上表现得最差,它没有机制去标记冲突,只能在重写过程中"悄悄"选择相信某一方,这种隐性处理反而抑制了它吸收新信息的能力。而KPR选择的做法是把冲突的主张暂时搁置,不强行塞进重写结果,这样一来它在整合新信息的精确度上反而是所有方法里最高的。

这个现象挺耐人寻味的。**一个方法如果不给自己设"我不确定"这个选项,遇到矛盾信息时反而会表现得更保守、更谨慎,因为它必须硬着头皮做出一个选择,而这个选择往往是错的。**这就好比一个从不承认自己不知道答案的学生,考试时遇到模棱两可的题目,宁愿瞎蒙一个也不愿意空着,结果反而更容易全盘出错;而一个愿意标注"这道题我不确定"的学生,虽然看起来没那么"自信",但整体正确率反而更高,因为他至少不会把确定的题目也答错。

从这些结果里,研究团队总结出了两条贯穿全文的核心发现。

第一条是,**用"事实主张"而不是"原始文本"作为知识整合的基本单位,效果始终更好。**无论是跨语言维基百科修订,还是查询驱动的报告更新,只要把资料先拆解成一条条独立的主张再喂给模型,精确度和召回率都会同步提升。这跟此前事实核查领域的发现是一致的,原子化的事实陈述天生就比整段整段的文本更适合被机器精确处理。

第二条是,**主张审核这一步,也就是过滤掉已有内容、标记冲突、判断相关性,能进一步提升重写质量,同时让最终的改动变得更集中、更容易审查。**这跟代码审查里的道理很像:如果你提交的代码改动散落在项目的几十个文件里,审查者根本没法高效地看完,而如果改动被清晰地组织成几个逻辑连贯的模块,审查效率会高得多。

这项研究也坦诚承认了几个还没解决的问题。

首先是计算成本。整套流程里,从拆解到分类到路由再到重写,每一步都要调用大语言模型,这意味着运行成本不低。研究者提到,未来或许可以用更轻量的模型来承担分类和路由这些相对简单的判断任务,把大模型的算力留给真正需要创造性写作的重写环节。

其次是人工审核这个环节实际上没有被真正测试过。整个实验流程里,遇到标记出来的冲突,系统统一选择的处理方式是"先搁置不处理",并没有真的找人来审核、裁决这些冲突该怎么解决。换句话说,KPR搭建出了一套"让人可以审查"的框架,但这套框架到底能不能真正提升人工审核的效率和准确性,还需要真实的用户研究去验证。

写在后面

读完这篇论文,最触动我的不是KPR的某个具体技术细节,而是它对"什么是好的知识更新"这个问题给出的一个朴素但常常被忽略的答案:透明本身就是一种价值。

现在很多AI应用的思路是把一切都自动化、黑箱化,你给它输入,它给你输出,中间发生了什么不重要,只要结果看起来对就行。但这篇论文提醒我们,在涉及知识、事实这类需要被信任的内容时,"过程可见"和"结果正确"同样重要。一个编辑者如果没法知道AI到底改了什么、为什么这么改,那他就没法真正对这份文档负责,这跟软件工程里代码评审的逻辑是完全一致的,好代码不仅要跑得通,还要让审查者看得懂改动的逻辑。

还有一个细节让我印象很深,就是那个"跨语言知识往往锁在语言墙里,搜索引擎捞不出来"的发现。这颠覆了我一个下意识的假设,我一直以为只要信息是公开的、被索引过的,理论上就应该能被找到。但实际情况是,语言本身构成了一道隐形的屏障,哪怕数据就摆在那里,跨语言检索这件事依然没有想象中那么顺畅。这或许提示我们,多语言知识的价值挖掘,还远没有被充分释放。

至于KPR会不会真的走进维基百科的日常编辑流程,或者被某个企业级文档系统采用,现在还很难说。但这套"拆解成事实、逐条审核、标记冲突、保留原文"的思路,感觉不止适用于维基百科,任何需要持续更新且需要被信任的文档,可能都用得上。你手头有没有那种每隔一段时间就要更新一次,但每次更新都让人心里没底的文档?

Q&A

Q1:知识拉取请求(KPR)是什么?

A:KPR是一种让文档持续更新变得可审查、可追溯的框架,核心是把"文字怎么改"和"知识怎么变"拆开来记录,生成一份包含主张提案和文档差异的变更日志,方便人工审核每一处改动。

Q2:KPR相比直接用AI重写文档有什么优势?

A:KPR在信息精确度、原文保留率、新增信息量上都优于直接重写或从零生成的方法,而且修改集中在少数连续编辑块里,审核起来更省力,遇到信息冲突时会标记出来而不是悄悄替用户做决定。

Q3:用KPR修订后的维基百科文章,实际效果如何?

A:实验显示,用KPR修订后的文章回答多语言问题的准确率能到69.2%,远高于原文的29.5%,甚至一个70亿参数的小模型配合KPR修订文档,回答难题的表现也超过了配备网络搜索的前沿大模型。