公司里有一位元老级员工叫“老智”。他经验丰富,处理旧业务十分老练,但最近公司发布了全新产品、换了售后政策,老智却毫不知情。他的知识,停在五年前入职培训材料截止的那一天。作为大模型,老智的“知识过时”并不是不聪明,而是训练数据有日期。想让他低成本掌握新知识,有三条路:回炉深造、定向手术、配工作手册。回炉深造是继续预训练,定向手术是参数编辑,配工作手册则是检索增强生成。本文会讲清这三条路分别怎么走、各自的代价,以及更新之后如何验收。
对大模型工程师而言,掌握知识注入与更新,能用最低算力让模型跟上时代,是落地动态知识型产品的关键能力。
可视化演示
动态演示大模型知识注入与更新方法的核心机制,通过概览/流程/对比/趋势四种模式展示关键概念与交互流程。
本节配有交互动效(进入视口后自动加载,约 3KB)。
大模型知识注入与更新方法:知识注入 知识注入与更新的核心概念与驱动 继续预训练式知识注入方法 核心机制可视化 大模型知识注入与更新方法整体架构与关键组件
知识注入背景
公司里有一位元老级员工叫“老智”。他经验丰富,处理旧业务行云流水,但最近公司发布了一款全新产品,还换了售后政策。老智的“入职培训材料”是五年前的,他根本不知道这些新变化。他不是不聪明,而是他的知识停在了训练数据截止的那一天。
大模型和“老智”一样,训练完成后参数就冻结了。如果知识的截止日期之后发生了新事实,模型无法自动知道。知识注入,就是让大模型低成本地掌握这些新知识;知识更新,则是修正已经过时或错误的旧知识。目前主流的路线有三条:回炉继续预训练、手术式参数编辑、外挂式检索增强。
一个训练好的模型 $\theta_0$ 对“新知识样本 $x_{new}$”几乎无法建模,因为它从未出现在训练集中。知识注入的本质,是把参数状态从 $\theta_0$ 推到一个能表达新事实的 $\theta^*$:
送老智“补课”不是要重新培养一个新人,他的核心能力依然宝贵。我们要做的,只是高效地把新知识补进他的知识体系。接下来看三条路分别怎么做。
- 初始参数$\theta_0$ 是训练完成后的模型权重,相当于老智现有的知识状态。
- 新知识样本$x_{new}$ 是模型没见过的内容,比如公司新政策文本,模型给出的概率只有极小值。
- 注入目标$\theta^*$ 是更新后的参数状态,让模型能够正常表达新知识。
继续预训练
公司决定送老智参加一个内部集训营,课程材料是最新行业报告和产品文档,连续刷两周,他的知识底色会慢慢更新。这就是“回炉培训”的思路。
继续预训练(Continual Pre-training)指在大模型已经训练好的参数基础上,用新领域的高质量文本继续执行自监督语言建模训练。它适合想在垂直领域深度获得语感与知识的场景,比如把通用模型变成“法律专家”或“医疗助手”,代价是需要大量新语料和 GPU 算力。
它的目标函数和最初预训练一样,仍是下一词预测损失:
优点是知识融入自然、能明显提升领域能力;缺点是成本高,而且可能覆盖旧知识,造成灾难性遗忘。老智从集训营出来,确实张嘴就是新话术;但偶尔也会把旧流程细节说串了——这正是“学新忘旧”的代价。
- 上下文序列$x_{<i}$ 是当前位置之前的词序列,模型用它们作为预测条件。
- 预测概率$P_{\theta}(x_i \mid x_{<i})$ 是模型对下一个词 $x_i$ 的预测概率。
- 平均损失对所有词的负对数概率求平均,数值越小代表模型预测越准。
参数模型编辑
如果公司预算有限、只想让老智精准记住一个事实,比如“新款手机电池容量是 5000 毫安”,就可以请专家做一次“微创记忆手术”。医生通过脑部影像找到存放旧容量记忆的神经元,只改写那一小片连接,其他技能完全不动。
参数编辑(Model Editing)正是这个思路:不重新训练,而是定位模型内部存储某一事实的参数,通过优化改动权重,让模型对相关问题输出新答案。代表性方法有 KN、ROME、MEMIT 等,适合精确修改事实、纠错、更新少量知识。
形式化地,设原有权重为 $W_{old}$,我们希望找到新权重 $W_{new}$,使模型在输入某个触发问题 $k_{query}$ 时输出目标知识 $v_{new}$,同时其他知识尽量不变:
手术精准但门槛高,多次编辑还可能互相干扰。不是每个知识更新需求都需要“开颅”;如果只是想随时查看最新资料,也许给老智配一个“工作手册”更省事。
- 原有权重$W_{old}$ 是编辑前的模型权重,对应老智手术前的记忆连接强度。
- 触发与目标$k_{query}$ 是一个触发问题,$v_{new}$ 是希望模型给出的新答案。
- 增量更新$\Delta W$ 是对权重做的小幅扰动,用于只改变这一处知识。
外部记忆增强
最温柔也最灵活的方式,是给老智一个随身“智能工作手册”。遇到新问题先翻手册,手册上写什么就照着答,手册每天都能换,大脑本身不用动。
这就是检索增强生成(RAG, Retrieval-Augmented Generation):用外部知识库作为“外挂记忆”,每次回答前先检索最相关的文档片段,再把片段和问题一起交给大模型生成答案。因为不修改模型参数,所以天然不会遗忘旧知识,知识更新成本极低。
检索的关键是相关性打分,最常用的是向量空间的余弦相似度:
手册方案最灵活,但老智自己脑子里不懂的东西,翻手册也只能照本宣科;如果想让他在没有手册时也能脱口而出,还是得靠前两种“内化”式方法。
- 向量表示$\mathbf{q}$ 是问题编码后的向量,$\mathbf{d}$ 是候选文档片段的向量。
- 余弦相似度点积除以两个向量的模长,得到方向上的夹角余弦,值越大越相关。
- 取前 k 个选择得分最高的 $k$ 个片段拼入上下文,作为老智“翻到的那几页”。
方法对比选型
培训、手术、手册,每种都能让老智进步,但老板要根据需求来选:预算多少?新知识变不变?要不要溯源?
三条路线的本质区别在于“知识放在哪里”:继续预训练把知识融进权重,参数编辑把单点知识焊进权重,RAG 把知识放在外部文档。这决定了它们的成本、精度、动态性完全不同。
可以按三个维度选型:
- 数据量需求大、需要深度内化 → 继续预训练;
- 少量事实修正、追求精准 → 参数编辑;
- 高频更新、实时问答、需要溯源 → 外部记忆增强。
最好把三种路线理解为互补。比如用继续预训练做领域底座,用 RAG 应对最新变化,用参数编辑修关键错误。现实中,很多团队也确实是把 RAG 与模型编辑或增量微调混用的。老板最终可能给老智同时配上“手册 + 关键点手术”的组合拳。
更新与遗忘
老智参加完集训后,新话术确实流利了,但一次客户问起旧版产品的操作,他犹豫半天说错了。新旧知识在他脑海里“打架”了。
在持续学习里,这被称为灾难性遗忘(Catastrophic Forgetting):模型学到新知识时,会覆盖或干扰旧知识的权重表示。知识冲突则是指新知识没有真正覆盖旧记忆,用户提问时模型依然输出过时答案。
遗忘程度可以量化。记 $A_{old}^{before}$ 为更新前旧知识测试集上的准确率,$A_{old}^{after}$ 为更新后同测试集准确率,遗忘率公式如下:
缓解策略包括:训练时混合部分旧数据(重放)、用参数编辑做局部更新、或者用 RAG 外挂记忆避免动权重。优秀的培训老师会让学员在学新知识时反复复习旧重点,大模型也一样。
- 更新前表现$A_{old}^{before}$ 是老智“补课前”做旧考题的得分。
- 更新后表现$A_{old}^{after}$ 是补课后做同一套旧考题的得分。
- 遗忘率$F_{forget}$ 越接近 1 表示旧知识忘得越严重,越接近 0 表示保持良好。
评估与落地
升级是否成功,最终要看“验收考试”:一面考新知识拿分,一面考旧技能不掉分。
在工程上,任何知识注入方案都要用一套指标做验收。常见指标是新知识准确率 $A_{new}$ 和旧知识保持率 $A_{old}$。综合分可以用加权公式计算:
落地流程通常是:选型 → 准备数据或知识库 → 执行注入 → 评估 → 迭代。工具方面,继续预训练用大模型训练框架,模型编辑可用 EasyEdit 等开源工具,RAG 可用向量数据库配合 LangChain 编排。无论选哪种,都要先想清楚“新知识从哪来、旧知识如何测”。老智的验收证书上,既要写“新知识达标”,也要写“旧知识未退化”,两条同时合格,知识注入才算真正成功。
- 新知识准确率$A_{new}$ 是注入后在“新知识测试集”上的准确率。
- 旧知识保持率$A_{old}$ 是在“旧知识测试集”上的保持率。
- 综合评分$\lambda$ 根据业务偏好调节,$\lambda$ 越大代表越看重更新效果。
AI 应用场景
智能客服实时掌握新政策
阶段:推理阶段外部记忆增强
解决的问题:传统客服大模型训练数据滞后,新退换货政策上线后仍会回答旧政策;全量重训成本高、周期长。用 RAG 外挂最新政策手册,政策更新时只需替换文档,不修改模型参数。
具体案例:某电商平台售后机器人,每天更新《退换货细则》,将最新 PDF 转成向量库。用户询问“退货谁付运费”时,检索命中新条款并生成答案,正确率从 68% 提升到 93%。
法律大模型持续预训练加参数纠错
阶段:模型训练阶段注入与局部参数编辑
解决的问题:通用大模型不懂新出台的法规,全文重训太贵。用法律领域语料继续预训练提升领域能力,再用参数编辑修正其中几个关键法条答案。
具体案例:某法律咨询创业公司收集近三年判决书与法规继续预训练三天,再对模型常答错的“新个税起征点”等事实用 ROME 方法定点编辑,旧知识准确率保持在 99%。
企业知识库问答系统
阶段:知识增强与落地运维
解决的问题:企业内部制度每月更新,员工问“年假如何计算”,传统微调无法跟上。用混合方案:RAG 接入制度库,模型编辑修复计算规则里的矛盾,让回答可溯源。
具体案例:某 5000 人公司内部 AI 助手,用向量库索引《员工手册》,每周五自动刷新制度文本,同时用模型编辑修复几个固定计算口径,员工提问响应时间小于 2 秒。
Python 演示
class ExternalMemory: def __init__(self, docs): self.docs = docs def score(self, query, doc_text): return sum(1 for ch in query if ch in doc_text) def retrieve(self, query, top_k=1): ranked = sorted( self.docs, key=lambda item: self.score(query, item[1]), reverse=True ) return ranked[:top_k] def evaluate(new_acc, old_acc, lam=0.7): return lam * new_acc + (1 - lam) * old_acc def main(): docs = [ ("新退货政策", "2025年起退货免运费,客户无需承担运费。"), ("旧退货政策", "退货需要客户承担运费,运费从退款中扣除。"), ("手机规格", "新款手机电池容量为5000毫安时,支持快充。"), ] memory = ExternalMemory(docs) query = "退货谁承担运费" print("查询:", query) print("检索结果:") for title, text in memory.retrieve(query, 2): print("-", title, "->", text) print("\n三种方案综合评分比较:") methods = [ ("继续预训练", 0.90, 0.60), ("参数编辑", 0.92, 0.95), ("外部记忆", 0.95, 1.00), ] for name, new_acc, old_acc in methods: score = evaluate(new_acc, old_acc) print(f"{name}: 新知识准确率={new_acc}, 旧知识保持率={old_acc}, 综合分={score:.2f}") if __name__ == "__main__": main()
self.docs = docs保存知识库文档,对应老智随身携带的工作手册。return sum(1 for ch in query if ch in doc_text)用字符重叠数量近似语义相关性,得分越高越相关。ranked = sorted(...)按相关性得分排序,并截取前 top_k 个候选片段。evaluate(new_acc, old_acc)实现正文中的综合分公式 S = λ·A_new + (1-λ)·A_old。methods = [("继续预训练", 0.90, 0.60), ...]三种方案的典型指标,加权后外部记忆综合分最高,体现低遗忘优势。memory.retrieve(query, 2)检索 top2 片段,模拟把手册内容拼入回答上下文。
常见误区
误区给大模型注入新知识,就是拿新语料继续训练,把损失函数跑一遍就行了,其他方法都是花架子。
正解继续预训练只是三种主流路线之一。它把知识融进权重,适合大批量深度内化,但算力成本高、有遗忘风险。参数编辑适合精准改单个事实,RAG 适合高频更新且不改参数。实际场景应按需选择甚至组合。
为何常见:因为“继续训练”最符合直觉,很多人第一次接触知识更新时都是从微调、继续预训练入手,容易把它当成唯一解。
误区既然编辑只是改一小块权重,那我可以不断编辑,让模型学会越来越多的知识,成本还特别低。
正解参数编辑的本质是在已有权重上做局部扰动,多次编辑可能互相干扰,产生副作用。比如改完 A 知识后,B 知识可能被连带破坏。它适合少量、低频的事实修正,不适合大规模知识库建设。
为何常见:因为“精准手术”的比喻让人误以为手术没有风险,实际上模型内部知识分布高度耦合。
误区外部记忆不改参数,又不会遗忘,回答还可溯源,是不是所有知识更新都应该用 RAG?
正解RAG 的答案是“检索 + 生成”的拼接结果,受检索质量和上下文长度限制。如果文档库里没有正确答案,或检索排序把错误片段排到前面,模型依然会答错。它也不能增强模型内在的推理能力,模型本身的固有错误并不会消失。
为何常见:因为 RAG 成本低、更新快,容易让人忽略它依赖外部资料质量的短板。
误区模型更新完新知识,只要测试时回答正确,旧知识应该也还保留着,不用专门去测。
正解继续预训练和微调都可能引发灾难性遗忘。旧知识准确率是否下降,必须用同一套旧知识测试集在更新前后分别评测,并通过遗忘率公式量化。参数编辑和 RAG 也有各自的知识冲突场景,不能默认“无损”。
为何常见:人的学习经验是“知识越多越厉害”,但神经网络的权重容量有限,新旧知识会争夺同一个参数空间。
误区只有把知识写进参数,模型才算真正掌握,RAG 只是取巧,不能算知识注入。
正解对应用来说,用户只关心回答是否正确、能否溯源。RAG 把知识放在外部,反而让更新和追溯更简单。参数内化和外部记忆是两条不同的知识承载路径,各有适用场景,不存在谁高谁低。
为何常见:因为大家习惯把“大模型”和“参数里的知识”绑定,忽略了工程上知识可以在外挂系统中动态更新。
面试题
Q1. 大模型知识过时的根本原因是?
- A.模型参数量不够大
- B.训练数据有截止日期← 正确答案
- C.推理速度不够快
- D.缺少外部知识库
答案:B。大模型训练完成后参数冻结,无法自动感知截止日期后的新事实。参数量、推理速度、外部知识库都不是知识过时的根本原因,而是工程条件或辅助方案。
Q2. 哪种方式完全不修改模型参数?
- A.继续预训练
- B.参数模型编辑
- C.检索增强生成← 正确答案
- D.领域继续微调
答案:C。检索增强生成把知识放在外部文档库中,推理时检索并拼入上下文,不改任何权重。继续预训练、领域微调和参数编辑都会改变模型参数。
Q3. 继续预训练最需要关注的风险?
- A.模型会出现灾难性遗忘← 正确答案
- B.模型无法正常推理
- C.无法检索到新知识
- D.模型参数无法编辑
答案:A。继续预训练在更新新知识的同时可能覆盖旧知识,造成灾难性遗忘。无法检索新知识属于 RAG 的问题,参数无法编辑与继续预训练无直接关系。
Q4. 参数模型编辑的典型场景?
- A.修正个别事实错误← 正确答案
- B.注入海量领域语料
- C.实时问答知识更新
- D.降低模型推理成本
答案:A。参数编辑适合少量、精准的事实修正,比如纠正“某产品容量”这类单一知识。海量语料更适合继续预训练,实时更新更适合 RAG,降低推理成本不是编辑的目标。
Q5. 检索增强中衡量问题与文档相关性的常用指标?
- A.交叉熵损失函数
- B.余弦相似度得分← 正确答案
- C.模型参数更新量
- D.训练数据规模大小
答案:B。RAG 检索阶段一般把问题和文档编码成向量,用余弦相似度衡量语义相关性。交叉熵是训练损失,参数更新量和数据规模与相关性打分无关。
Q6. 缓解灾难性遗忘的常见策略有?
- A.训练时混合旧数据← 正确答案
- B.采用局部参数编辑← 正确答案
- C.完全冻结所有参数
- D.使用外部记忆检索← 正确答案
答案:ABD。混合旧数据(重放)能让模型复习旧知识;局部参数编辑把改动限制在小范围;外部记忆不修改参数,天然不会遗忘。完全冻结参数则无法注入新知识,不能作为更新策略。
Q7. 遗忘率 F = 1 - A_after / A_before 中 A 衡量的是?
- A.新知识准确率
- B.旧知识准确率← 正确答案
- C.模型推理时延
- D.外部知识库大小
答案:B。这个公式比较的是更新前后,模型在旧知识测试集上的准确率变化,用来衡量旧知识被遗忘的程度。若用新知识准确率,则无法反映遗忘情况。
Q8. 继续预训练通常采用哪种损失?
- A.下一词交叉熵损失← 正确答案
- B.均方误差回归损失
- C.对比学习表示损失
- D.策略梯度强化损失
答案:A。语言模型预训练的标准目标是下一词预测,对应交叉熵损失,继续预训练沿用同一目标。均方误差通常用于回归,对比学习用于表征,策略梯度用于强化学习。
Q9. 参数编辑的局限性包括哪些?
- A.多次编辑易互相干扰← 正确答案
- B.可无限扩展知识库
- C.难覆盖复杂推理知识← 正确答案
- D.无法用于任何大模型
答案:AC。多次编辑可能让不同知识在参数空间互相干扰;复杂链式推理需要多步知识组合,单点编辑难以覆盖。参数编辑不能无限扩展知识,且可以用于主流大模型,因此 B、D 错误。
Q10. 关于知识注入与更新方案,下列说法正确的有?
- A.RAG 适合高频更新的常识性知识← 正确答案
- B.参数编辑适合修正具体事实← 正确答案
- C.继续预训练适合低成本实时更新
- D.所有方案都必须修改模型权重
答案:AB。RAG 通过替换外部文档实现高频更新;参数编辑适合精准修正具体事实;继续预训练成本高,不适合实时更新;RAG 不修改模型权重,因此 C、D 错误。