基于检索增强大语言模型利用外部知识的历史文献修复方法 Leveraging External Knowledge for Historical Document Restoration via Retrieval-Augmented Large Language Models
用RAG+微调让LLM调用外部史料知识,精准修复古籍人名地名等命名实体
前置知识
检索增强生成 RAG (Retrieval-Augmented Generation)
RAG 是在大模型生成回答之前,先用 BM25、向量检索等手段从外部知识库中取回若干相关文档,再把这些文档拼进提示词,让模型“看着资料作答”。它弥补了模型预训练时未学到的、或容易遗忘的事实性知识,并显著缓解幻觉。本文把它用在历史古籍修复上,从训练语料里检索相似条目作为修复线索。
本文核心就是把 RAG 作为“外部史料”注入修复流程,理解 RAG 的工作机制才能理解为什么它能把命名实体的 Top-1 准确率从个位数拉升到 39%。
掩码语言建模 MLM (Masked Language Modeling)
MLM 是 BERT 等编码器的预训练范式:随机遮挡输入中约 15% 的 token,让模型根据双向上下文预测被遮挡的词。它与古籍“残缺字恢复”任务高度契合,因此 Pythia、Ithaca、Kang et al. (2021) 等历史文本修复工作都以 MLM 为基础。但它非自回归,多个被遮挡位置之间无法互相依赖。
MLM 是本文所有基线(尤其 BERT-Res)的底层方法,理解它的“只看局部上下文、缺外部知识、非自回归”三重局限,才能看清本文为什么要换成因果语言建模+RAG。
BM25 词法检索
BM25 是一种基于词项频率和逆文档频率(TF-IDF 思想)的稀疏词法检索算法,给定查询与文档,按字面词重叠程度打分排序。本文用 BM25S 库从 200 万条训练语料中检索与残缺文档最相关的 Top-20 条目,作为修复参考。
本文一个反直觉的关键发现是:对 Hanja 这种表意文字,BM25 字面匹配反而优于向量语义检索。这个结论直接决定了整个 RAG 流水线的最终形态。
Hanja(韩国汉字)与表意文字体系
Hanja 是朝鲜半岛历史上使用的汉字,每个字符是一个独立的表意单位(logogram),承载特定语义,而非字母拼合。韩国古籍《朝鲜王朝实录》(AJD) 和《承政院日记》(JRS) 均以 Hanja 写成。正因每字独立表意,字面匹配与命名实体修复才格外依赖外部历史知识。
Hanja 的“一字一概念”特性解释了为何 BM25 优于 embedding、为何 44.8% 的残缺字是命名实体,是理解全文实验选择的必要背景。
因果/自回归语言建模 (Causal Language Modeling)
因果语言建模是 GPT 类解码器的预训练目标:从左到右逐 token 预测下一个词,每个位置都能“看到”前面所有已生成内容。相比 MLM 的非自回归预测,自回归方式能在恢复第 i 个残缺字后把它作为上下文再去恢复第 i+1 个,从而捕捉残缺字之间的依赖。
本文选择 Qwen3(因果 LM)而非 BERT(MLM)作为底座,正是为了建模多个残缺位置之间的依赖关系,这是方法设计的基础。
研究动机
历史文献是人类知识的宝库,但物理载体脆弱。《承政院日记》(JRS) 中约有 41.9K 个残缺字符散落在 1.1 万份文档里,平均每份残缺文档损失 3.77 个字。现有修复方法(针对希腊铭文的 Pythia/Ithaca、针对朝鲜王朝的 Kang et al. 2021)几乎都基于掩码语言建模(MLM),只把“损坏文档本身”作为输入,存在三重硬伤:第一,无法恢复需要外部历史知识的命名实体,例如“1492 年 Columbus 首次登陆 [M]”这类句子,局部上下文不足以确定 [M];而作者用 Gemini-2.5-Pro 统计发现 JRS 残缺字中 44.8% 属于命名实体(人名 PER 占 26.7%、地名 LOC 占 6.9% 等),这正是修复任务的核心。第二,训练时采用固定掩码概率(如 BERT 的 15%),与真实文献约 2.96% 的损坏率严重失配,削弱真实场景表现。第三,MLM 非自回归地预测被遮挡 token,丢失了多个残缺位置间的依赖关系。后果是:Qwen3-32B 在命名实体测试集 DNE 上 Top-1 准确率仅约 5.57%,远不能实用。
本文的目标是本文要构建一个能显式调用外部知识、专攻命名实体的历史文献修复框架,并量化地验证其实用性。具体目标包括:第一,把命名实体恢复的 Top-1 准确率从个位数/十几的基线水平大幅提升到接近 40% 量级,同时不能牺牲普通字符(DRand)的恢复能力,要求保持在 80% 以上。第二,要超越参数量远超自己的闭源大模型(Gemini-2.5-Pro、Sonnet-4.5、GPT-5.1),证明“外部知识+微调”能弥补参数劣势。第三,要成为一个真正的协同工具,邀请训民正音文学与韩国史三位专家,在真实损坏文档(DRD,命名实体密度高达 74.6%)上做盲评,以 Top-1/Top-10/nDCG@10 与 Win Ratio 等指标证明它对领域专家有实际加速价值,而非仅在合成数据上好看。
与已有工作不同的是,以往工作把修复框定为“单文档序列补全”问题,预测能力被文档内上下文所封顶。本文的独特切入是把它重新框定为“知识检索”问题,并同时在三个层面引入此前被忽视的外部知识杠杆:一是现代因果语言模型在海量网络预训练中内化的隐性历史知识(区别于 BERT 类 MLM 检索能力弱、非自回归);二是通过 RAG 从 200 万条训练语料中显式检索相关条目,并注入日期/年号等时间元数据做“时间锚定”;三是曾被忽略的检索结果去重——作者发现 80% 相似度阈值下去重能保留知识多样性、避免近重复条目带来的偏置。此外用动态掩码(跨 epoch 变换遮挡位置,沿用 RoBERTa 思路)替代固定掩码率,弥合训练与真实损坏分布的鸿沟。这些杠杆在希腊铭文或朝鲜史前作中都未被系统叠加过。
核心方法
用一个比喻:修复一份破损的 500 年前王室日记,一个既读过数百万份同类日记(预训练 LLM 的隐性知识)、又能随时翻到同年代其他条目(RAG 检索文档)的人,远胜于只盯着单页残片的人。ARI 正是把这套直觉工程化。技术路线上,它以自回归大模型 Qwen3 为底座,把“损坏文档 + 日期元数据(年号/年/月/日)+ 20 条 BM25 检索到的相关文档 + 5 条 few-shot 格式范例”一起拼进提示词,让模型输出 JSON 形式的修复结果 {"[Dn]": "修复字"}。因果建模让它能捕捉多个残缺位置间的依赖(区别于 MLM 的非自回归),RAG 则为专有名词注入必需的外部事实。最后通过在 Hanja 古籍上的微调,把“会调用检索上下文”这一能力固化进权重,使准确率从提示工程阶段的 27.85% 跃升到 39.31%。
核心创新是把外部知识的注入做成了三层叠加、且每一层都被消融实验证明有效:第一层是预训练因果 LM 内化的隐性历史知识,相较 BERT-MLM 既弱于事实召回又是非自回归;第二层是显式 RAG——检索 Top-20 条 BM25 文档并注入时间元数据;第三层是微调,教会模型真正“使用”检索到的上下文(消融显示微调是把 NE 准确率从 24.28% 推到 39.31% 的关键一击)。全文最重要的反直觉发现是:对 Hanja 这种表意文字,BM25 字面匹配反而优于 embedding 语义检索(16:0 配置 harmonic mean 35.3% 最高),因为每个汉字是离散的表意概念,精确字符重叠比稠密相似度更可靠——这是一个强领域属性、此前未被报告的结论。另一个被忽视的杠杆是 80% 相似度阈值的去重:近重复检索条目会让模型偏置,保留多样性反而提升表现。Qwen3-Reranker-8B 等现代重排器反而把 DNE 拉低到 37.70%,说明现代语料训练的重排器不适用于 Hanja。
方法步骤详情
第一步,数据构造:从 AJD+JRS 共 2.02M 条训练文档剔除验证/测试集重复;按真实损坏分布(均值约 2.96%、每文档至少 1 残缺字)随机损坏,产出 DRand 与 DNE 两套合成测试集,先在 Qwen3、Gemini-2.5、GPT-5.1、Sonnet 4.5 上测 Top-1 作基线。第二步,提示设计:系统提示含 5 条 few-shot 范例;用户提示注入年号/年/月/日做时间锚定,并附 20 条 BM25 检索文档,用 RapidFuzz 在 80% 相似度阈值去重。第三步,微调 ARI:在 100K 样本上微调 Qwen3-32B,25% 优先损坏命名实体,动态掩码跨 epoch 变换遮挡位置;2 epoch,FSDP+Lion-8Bit,余弦学习率峰值 $6 \times 10^{-6}$,batch 64,序列长 4096,共 16.06B 训练 token。第四步,推理:因 byte-BPE 把不在词表的 Hanja 拆成 2–3 字节 token,用字节级约束解码凑成完整字符、取字节 log-prob 均值排序,借 vLLM 输出 Top-K 候选。
技术新颖性
与希腊铭文修复的 Pythia/Ithaca 相比:它们用固定掩码率的 MLM、无检索,ARI 改用因果 LM + RAG + 动态掩码,并专门针对命名实体。与朝鲜史 Kang et al. (2021) 相比:那是在单份损坏文档上跑编码器 MLM,ARI 额外引入三层外部知识。与 Liu et al. (2025) 的零样本方法相比:零样本既打不过微调也不注入检索。此前未见、本文独有的贡献包括:(a) 实证证明 BM25 优于 embedding 检索适用于表意文字修复;(b) 80% 去重阈值的系统分析(图 6 显示峰值在 80%,精确匹配 100% 处反而最差);(c) 元数据注入 + few-shot + RAG 的累积消融(表 4:仅靠提示工程就把 Qwen3-32B 的 NE 准确率从 5.63% 推到 27.85%);(d) 针对 byte-BPE 分词器的字节级约束解码 Top-K 候选生成,让开源模型能给专家提供排序候选。
实验结果
主图(Figure 1)显示 ARI-32B 以 (NE 39.31%, Rand 80.42%) 在两轴均居首,超越 BERT-Res(28.59, 79.38)、Gemini-2.5-Pro(31.82, 73.43) 及参数更大的 Sonnet-4.5、GPT-5.1。关键在于 NE 准确率较 BERT-Res +10.7 点,验证“外部知识”论点,且 Rand 不降反升,说明微调未牺牲通用字符能力。消融(表 4)证明纯提示工程就把 Qwen3-32B 的 NE 从 5.63% 推到 27.85%,其中 BM25(24.28) 优于 embedding(19.88) 与 random(8.55),去重再加分。命名实体细分(图 7):ARI-32B 在 LOC、PER 夺冠,Gemini-2.5-Pro 因中文典籍预训练在 POH 领先。专家盲评(表 5)ARI-32B Acc@1=0.383、Win Ratio=46.0%,优于两基线;定性(表 6)仅 ARI-32B 正确恢复 李厚源、光州 等专有名词,时间域漂移(图 8)在 10–11 世纪外推明显下滑。
查看结构化数据
| 任务 | 指标 | 本文 | 基线 | 提升 |
|---|---|---|---|---|
| DNE 命名实体恢复(合成损坏) | Top-1 accuracy | 39.31%(ARI-32B) | BERT-Res 28.59%、Gemini-2.5-Pro 31.82%、Sonnet-4.5 29.77% | 较 BERT-Res +10.7 个百分点,较 Gemini-2.5-Pro +7.5 个百分点 |
| DRand 普通字符恢复(合成损坏) | Top-1 accuracy | 80.42%(ARI-32B) | BERT-Res 79.38%、Gemini-2.5-Pro 73.43% | 较 BERT-Res +1.0 个百分点,较 Gemini-2.5-Pro +7.0 个百分点 |
| 真实损坏文档(DRD)专家盲评 | Acc@1 / Win Ratio | 0.383 / 46.0%(ARI-32B) | BERT-Res 0.207 / 24.0%、Gemini-2.5-Pro 0.273 / 30.0% | Win Ratio 较 BERT-Res +22 个百分点,较 Gemini-2.5-Pro +16 个百分点 |
| Qwen3-32B 提示工程消融(仅提示,未微调) | NE / Rand Top-1 accuracy | 27.85% / 61.45%(+few-shot+BM25 RAG+去重) | Baseline 5.63% / 14.83% | NE 提升 +22.2 个百分点,纯靠 RAG 与提示 |
局限与改进
作者承认的局限包括:第一,最大输入长度被限制在 4096 token,约 1.7% 的超长文档被过滤;第二,目前是纯文本模态,未利用韩国国史编纂委员会提供的原始文献图像(笔画残迹、版式等视觉线索);第三,合成损坏与真实损坏之间可能存在分布失配(真实 DRD 的命名实体密度高达 74.6%,远高于测试集构造假设);第四,时间域漂移:当目标文献远离 14–19 世纪训练域(如 10 世纪)时性能明显下滑(图 8)。我自己观察到的额外局限:第五,人工评估仅用 100 份文档、3 位专家,样本量偏小,统计置信度有限;第六,Gemini-2.5-Pro 在 POH 上反超,说明 ARI 的 Joseon 专用化是以牺牲通用中文典籍知识为代价;第七,NE 准确率绝对值仍只有约 39%,真实部署必须依赖 Top-K 的人机协同(作者已通过 web 界面部分缓解)。
独立分析的弱点
弱点一,检索库就是训练库本身:对于完全不在 AJD/JRS 中的外部史实(其他朝代的人物、事件),BM25 无源可检;改进方向是把检索库扩展为精心策划的数字人文知识库(家谱、地方志、年表)。弱点二,表意文字相关的调参(BM25>embedding、80% 去重阈值)是经验得到的而非原理性的;改进方向是端到端学习一个领域专用检索器/重排器,本文已证明 Qwen3-Reranker-8B 这类现代重排器在 Hanja 上反而有害(37.70% < 38.58%),Hanja 专用重排器是开放课题。弱点三,4096 token 上限截断长文;改进方向是用长上下文模型或分层分块检索。弱点四,纯文本模态丢弃了图像证据;改进方向是多模态融合(笔画残迹、版式、拓片)。弱点五,绝对 NE 准确率偏低、强依赖人工核验;改进方向是主动学习聚焦不确定样本,并对 Top-K 做不确定性校准。弱点六,合成损坏未必反映物理损坏形态(墨迹洇染、褪色);改进方向是用受文物保护科学启发的损坏模拟器。
未来方向
作者明确提出:一是扩展上下文窗口突破 4096 token 以容纳更长文档;二是引入原始文献图像做多模态修复;三是缓解时间域漂移。基于本文成果可延伸的方向包括:第四,作者强调该框架可推广为低资源古语言修复的通用方法(如其他东亚汉字文化圈文献、死语言),值得系统验证;第五,领域自适应检索——既然现代重排器失效,可以专门在 Hanja 上训练检索器与重排器;第六,自改进 RAG:把模型已确认正确的修复反哺检索库,形成正向循环;第七,把修复与下游任务(命名实体识别、事件抽取)联合训练,利用任务信号反过来约束修复质量。
复现评估
复现性总体较强:代码与模型已开源(github.com/EvelynKimm/ARI),训练数据 AJD/JRS 可从韩国国史编纂委员会公开获取。关键超参数在附录 A 完整给出——ARI-32B 用 8×HGX H200 GPU、FSDP、Lion-8Bit 优化器、余弦学习率 $6\times10^{-6}$、warmup 0.05、2 epoch、batch 64、4096 token、共 16.06B 训练 token,约 1,500 H200 GPU 小时;ARI-8B 用 4×H200 更轻量;BERT-Res 用 ModernBERT-large 在 2×RTX A6000 上训约 12 小时。提示词格式(图 14)、检索(BM25S)、去重(RapidFuzz)、嵌入(Gemini Embedding)均为开源工具。复现难点主要是算力门槛:32B 微调约 1,500 GPU 小时对一般实验室不便宜,但 8B 版本更易上手;此外人工评估依赖训民正音文学/韩国史专家与 web 评估界面(图 13),缺乏领域专家的团队难以复现该项结果。
论文图表
以训练域 14–19 世纪为基准,向 13、12、11、10 世纪外推测试 ARI-32B 的恢复准确率,显示随时间跨度拉大性能持续下滑,10 世纪附近降至最低(约 20.74)。
它定量刻画了时间域漂移这一关键局限,提醒读者把框架迁移到更古老语料时必须重新适配训练域。