古文献残字靠 RAG 补全,命名实体还原准确率从 5.6% 涨到 27.85%

Leveraging External Knowledge for Historical Document Restoration via Retrieval-Augmented Large Language Models

Gabeen Kim, Kyeongpil Kang

ACL 2026 Findings of the As

cs.CL

2026-07-24

受损古籍里有近半数残字是命名实体(人名、地名等),光靠上下文猜不出;ARI 用 RAG 把外部史料检索进 LLM,命名实体还原准确率从 Qwen3-32B 的 5.57% 提到 27.85%,专家评审胜率 46% 居首。

这篇在解决什么

韩国古籍《承政院日记》(Journal of the Royal Secretariat, JRS)里,有 4.19 万个字因年代久远而残缺,散落在 1.11 万份文档中。这些残字里有 44.8% 是命名实体,人名、地名、官职、年号这一类专有名词。

问题在于,现有的复原方法基本是掩码语言建模(masked language modeling),只看文档自身的上下文来猜空。这在补普通字时还行,可命名实体往往需要文档之外的历史知识。作者举了个英文例子:补「In 1492, Columbus first landed in [M]」里的 [M],你得知道这段历史,光看句子结构猜不出来。

方法

框架叫 ARI(Archive Restoration Intelligence),把三样东西拼起来:预训练 LLM(Qwen3 32B/8B)自带的隐式历史知识、RAG 检索来的显式外部史料、以及在古汉语(Hanja)语料上的微调。

输入是结构化的:任务描述 + 时间元信息(在位国王、年月日)+ 检索到的相关文档 + 带位置标记 [Dn] 的残缺文本。RAG 这块做仔细的对照:BM25 检索优于基于 embedding 和随机的检索,最终检索 20 篇文档,并做 80% 相似度阈值的去重。基线是 BERT-Res(用扩展的 Hanja 词表从头训的 ModernBERT-large,25% 的 mask 优先落在命名实体上)。

结果

在 JRS 上的消融清楚地展示了每个组件的贡献(以 Qwen3-32B 命名实体准确率为例):基线提示 5.57%,加元信息几乎没用(5.63%),加静态示例小幅到 6.27%,换成动态示例(BM25 检索)跳到 24.28%,再加去重到 27.85%。RAG + 去重两项加起来贡献了绝大部分增益。同一设置下普通随机掩码字的准确率从 13.37% 提到 61.45%。

配置(Qwen3-32B)命名实体准确率普通字准确率
基线提示5.57%13.37%
动态示例(BM25)24.28%60.36%
去重(80%)27.85%61.45%

和闭源大模型比,未做 RAG 时 Sonnet 4.5 的命名实体准确率最高(13.30%),Gemini-2.5-Pro 9.57%,Kimi K2 6.53%;微调后的 ARI-32B 在命名实体和普通字两类上同时登顶,超过参数量大得多的闭源模型。

最有说服力的是专家评审。三位汉文文献与韩国史专家对 100 份真实残损文档打分,ARI-32B 的 Accuracy@1 是 38.3%、胜率 46%,高于 Gemini-2.5-Pro(27.3%/30%)和 BERT-Res(20.7%/24%),nDCG@10 也以 0.477 领先。

为什么重要

这是一篇典型的「老任务 + 新工具」的工作:古籍复原这个领域长期被 MLM 主导,RAG 几乎没人系统用过。它给出的可迁移结论是,任何「需要外部领域知识才能填的空」类任务,都可能从「检索 + LLM」里拿到大头收益,而且不必非得上最大的闭源模型。一个 32B 开源模型微调后就能反超。

对数字人文和档案机构,这是个能直接上手用的工具,代码已开源。

局限与存疑

作者自己列了几条:构造数据集和真实残损文档之间可能有分布偏差;输入上限 4096 token,约 1.7% 的超长数据被滤掉;只用了文本模态,没有用原始文档图像的视觉特征;在时间跨度更远的语料(如早于训练集的《高丽史》)上,性能因语言历时变化而下降。训练成本也着实不低,ARI-32B 花了约 1500 个 H200 GPU 小时。

读完一个存疑点:专家评审只评了 100 份文档、三位专家,样本偏小;而 RAG 的增益高度依赖检索质量,论文在未见过的历时领域上性能下滑,正说明这个方法对「检索库里到底有没有相关史料」很敏感。

术语

原文与代码

相关论文

全部论文解读