Rethink AI【7】:RAG与知识编辑

引子

大模型的幻觉问题一直是AI领域的痛点之一,如何去解决这个问题?两个比较简单的方法,分别是“开卷考试”和“开颅手术”。

本篇就记录一些自己的学习笔记和思考。

RAG

所谓RAG,就是Retrieve and Generate的简称,即检索后生成技术。其实RAG本身就是一种类似于搜索引擎的技术,既然大语言模型的上下文长度是有限的,那么我们就把一些外部的知识库进行切分,切分成一系列知识,然后让大模型针对问题有需取用即可。

这就是一种开卷考试的方法。在前几年,RAG也是研究的热点之一。

不过这并不是今天讨论的重点。在我看来,RAG就是这么简单且有效的技术之一。

知识编辑

如果说RAG是开卷考试,那么知识编辑就是一种开颅手术的方法。知识编辑的问题建模实际上是一个极其简单的公式,假设所有的知识可以建模为三元组的形式,如$(h,r,t)$,那么知识编辑的目的是将某些知识进行更新,更新为$(h,r,t’)$。

知识编辑的方法有三大类:外部记忆法、全局优化法以及局部修改法。其中,外部记忆法是指保持模型原有的权重不变,通过外部的结构将知识与大模型结合起来。这种外部的结构可以是一些额外的模型,比如FFN,也可以是外部的知识库。全局优化法是指,对于模型的全部参数进行一次整体的更新,从而达到更新知识的目的。但是,和SFT和全参数微调不同的是,这类方法的训练过程通常被妥善设计,从而不会影响原有的知识。局部修改法的第一步是识别出某一特定知识所在的神经元/权重,然后通过一些方法进行修改。从而达到修改知识的目的。

和RAG不同的是,知识编辑不仅仅包括RAG的类似方法(不完全一致),也包括对模型内部进行处理的一些方法。

对于外部记忆法来说,比较有代表性的例子是MeLLo,它的工作流程很好地体现了外部记忆法的模式,即通过冻结大语言模型的参数,一切的操作都在外部进行。这个方法主要是为了解决多跳QA问题的。工作流程如下:

  1. 将一个多跳的QA问题转化为若干子问题。
  2. 让大语言模型回答这些子问题,提供一个暂时的答案。
  3. 通过外部知识库检索相关的知识,确定这些答案的正确性。如果答案与外部的知识有冲突,就重新回答。

这类方法在我看来,和RAG并没有特别大的差异,唯一的不同之处在于,这些方法通常是选择性地调用外部知识,而非通常RAG方法的一直调用。

对于全局优化法来说,比较有代表性的是RECT,该模型通过正则化,提取出每一次修改最大的参数,进行参数更新。

对于局部修改法来说,比较有代表性的方法是MEMITCSK。作者观察大模型每次预测的结果,通过一系列结构获取每次预测的过程中,对结果产生最大影响的权重,随后进行修改。

也有一些方法是对模型结构进行修改,比如融合门控单元,通过某一阈值决定走外部记忆模块还是原先记忆模块(WISE)。

总结

这两个方法都能在一定程度上缓解大语言模型的幻觉问题,但是这两个方法都没有解决这个问题。除此之外,这两个方法也没有办法解释为什么会有幻觉现象。

在这之外,这两者的效果依赖于子任务和人工提供知识的匹配程度,在一定程度上也是受限制的。

文章作者:
文章链接: https://www.coderlock.site/2025/11/03/Rethink-AI【7】:RAG与知识编辑/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 寒夜雨