RAG与SFT技术

一、大模型存在的问题

尽管大模型的能力令人深刻,但仍然会存在一些问题。这些大模型可能会产生误导性的“幻觉”,依赖的信息过时,处理特定知识时效性不高,对专业领域的知识缺乏,同时在推理能力上也有所欠缺。

比如,在文本生成方面,大语言模型表现出了超强的性能。然而,随着时间的推移,大模型会面临知识更新问题,特别是对于发生在模型知识截止日期之后的事件。例如:当前ChatGPT并不能给出2023年亚运会的信息。

询问GPT4截图

具体问题如下表所示:

模型问题

问题分析

幻觉问题

LLM文本生成的底层原理是基于概率的token by token的形式,因此会不可避免地产生“一本正经的胡说八道”的情况。

记忆力有限

大模型参数量虽然很大,但仍然无法记忆大量具体的事实知识,容易在需要记忆的问题上无法回答。

时效性问题

大语言模型的规模越大,大模型的训练成本越高,周期也就越长。那么具有时效性的数据也就无法参与训练,因此也就无法直接回答与时效性相关的问题。比如:帮我推荐几部最新上映的电影?

数据安全问题

通用大语言模型没有企业内部的数据和用户数据,那么企业想在保证数据安全的前提下使用大语言模型,最好的方式就是把数据全部放在本地,企业数据的业务计算全部放在本地完成。而线上的大模型仅仅完成一个归纳的功能。

无用户建模

大语言模型没有建模特定用户的能力,对不同的用户给出同样的反应和回复,无法进行个性化的对话

面对这些问题,目前主要有两种解决方案,方案一通过RAG外挂知识数据库;方案二是通过模型微调,为大模型注入新的知识。

二、RAG

1.基本概念

RAG是一种结合了检索(Retrieval)和生成(Generation)能力的技术。其核心思想是,通过先从一个庞大的数据库中检索相关信息,然后利用生成模型基于这些信息生成答案。这种方法可以提高生成结果的准确性和相关性。

假如让大模型准备考试?

「如果是闭卷考试」,即LLM在没有额外参考资料的情况下回答问题,那么LLM就像一个普通的聊天机器人,只能依靠它在预训练和监督微调阶段学到的知识来回答问题。

「如果是开卷考试」,就好比LLM可以查阅外部信息源(比如网站或者书籍章节)来回答问题。在这种情况下,LLM通常会和一个检索器搭配使用,这个检索器会找到一些文档或者文档的特定部分,然后附加到用户的提问上。LLM就是通过这些检索到的文档来获取新知识的。所以,我们说LLM在这种设置下的表现,很大程度上取决于检索器的质量,以及它能否准确找到最相关的信息。

2. RAG的工作流程

1.1检索阶段

系统首先接收到一个查询(例如一个问题)。

检索模型(通常是一个预训练的BERT模型)从一个大型数据库中找到与查询最相关的文档或片段。

1.2生成阶段

生成模型(通常是GPT-3或其他大型语言模型)接收检索到的文档片段。

生成模型基于这些片段生成最终的回答。

1.3 RAG的优势

增强知识覆盖:通过结合外部知识库,RAG能回答基于广泛知识的问题。

提高生成准确性:利用相关文档作为背景,生成的回答更加精确和有依据。

1.4 应用场景

问答系统:例如,医疗领域的患者问答系统,可以提供准确的医疗信息。

客户支持:自动化客户服务,通过检索数据库回答用户问题。

三、监督式微调(SFT)

1. 相关概念

微调 (Fine-tuning)

微调通常在一个相对较小的、特定任务的数据集上进行,这个数据集包含了明确的标签,模型通过监督学习来进行优化。 微调的目的是调整模型的参数,使其能够在特定任务上做出准确的预测。

微调的核心效果是:在保留模型泛化能力的同时,提升其在某一特定任务上的表现。

SFT (Supervised Fine-Tuning) 监督式微调

SFT是微调的一种形式,强调在有监督的环境下进行。SFT是一种简单的微调方法,它使用带有正确答案的数据集来继续训练一个预训练的模型。这种方法依赖于大量的标注数据,即每个输入都有一个预先定义的正确输出。 微调的目的是使模型更好地适应特定的任务或领域【垂直领域】,比如特定类型的语言理解或生成任务。SFT通常不涉及复杂的策略或奖励函数,只是简单地最小化预测输出和真实输出之间的差异。

通用大模型虽然在处理通用知识方面表现出色,但缺乏针对垂直领域的知识理解。为此,需要引入经过人工标注的领域数据,对已完成预训练的通用大模型进行微调,从而得到具有该领域知识的垂域大模型。这个过程就是“有监督微调(Supervised Fine-Tuning)”,简称SFT。

2. SFT流程介绍

SFT的流程包括数据生产、模型选型、模型微调、效果验证几个环节,每一步都存在相应的技术挑战:

(1)数据生产

创建用于微调预训练模型的高质量数据集,数据集质量对模型训练的效果至关重要。比如电商营销策略、消费者行为数据、商品信息数据等,这些数据往往格式不统一、噪声多,如何以这些业务数据为基础,高效构建可用于微调训练的数据集,是数据生产环节的痛点。

(2)模型选型

根据对中文的支持程度、参数量级、性能等选择合适的预训练模型作为微调的起点。高速发展的开源社区为业务方提供了大量可供选择的预训练模型,但不同模型擅长不同任务,需要实验对比模型表现。而开源模型存在样本标注、模型标准不统一的问题,将开源方案应用在企业环境中也需要一定的适配工作量,给业务方带来了较高的模型选型成本。

(3)模型微调

使用准备好的数据集对选定的预训练模型进行微调。训练时需要设置适当的学习率、批次大小和训练周期等参数,同时监控模型的性能,如损失函数和准确率等指标。在算力资源紧缺的背景下,不少业务方面临算力资源不足的问题,如何用最小的算力资源实现最优的模型训练性能至关重要。

(4)效果验证

使用独立的验证数据集对模型进行测试,评估模型训练效果。关键是建立系统的模型评估指标,并选择合适的方法高效进行效果评估。

3.应用场景

  • 在大模型应用中,SFT指令微调已成为预训练大模型在实际业务应用最重要的方式之一。
  • 通过对模型进行有监督微调,可以使模型在特定任务上获得更好的性能,如问答系统、文本分类、情感分析等。

四、RAG与SFT对比

除了RAG技术,LLM主要的优化手段还有提示工程(Prompt Engineering)、微调(Fine-tuning,FT)它们都有自己的独特的特点,根据对外部知识的依赖性和模型调整要求上的不同,各有各个应用场景。

对比维度

RAG方法

SFT方法

数据维度

动态数据。 RAG 不断查询外部源,确保信息保持最新,而无需频繁的模型重新训练。

(相对)静态数据,并且在动态数据场景中可能很快就会过时。 SFT 也不能保证记住这些知识。

外部知识

RAG技术擅长利用外部资源,通过在生成响应之前从知识源检索相关信息来增强LLM能力。它非常适合文档或其他结构化或非结构化数据库。

SFT可以对LLM进行微调以对齐预训练学习到的外部知识,但是对于频繁更改的数据源来说可能不太实用。

模型风格

RAG 主要关注信息检索,擅长整合外部知识,但可能无法完全定制模型的行为或写作风格。

SFT 允许根据特定的语气或术语调整LLM 的行为、写作风格或特定领域的知识。

可解释性

RAG通常可以追溯到特定数据源的答案,从而提供更高级的可解释性和可溯源性

SFT就像黑盒子,并不好使得响应背后的推理更加不透明。

计算资源

RAG 需要高效的检索策略和大型数据库相关技术。另外还需要保持外部数据源集成以及数据更新。

SFT 需要准备和整理高质量的训练数据集、定义微调目标以及相应的计算资源。

时延对比

RAG需要进行数据检索,可能会有更高的时延。

经过SFT的大语言模型无需检索就可以响应,延迟较低。

减少幻觉

RAG本质上不太容易产生幻觉,因为回答是建立在检索到的知识支撑上。

SFT能够通过将模型基于特定领域的训练数据进行减少幻觉,但当遇到不熟悉的知识时,仍然会产生幻觉。

五、RAG与SFT如何选择?

RAG 就如同给模型一本教科书,用于定制的信息检索,非常适合特定的查询。另一方面,SFT 就像一个学生随着时间的推移内化知识,更适合模仿特定的结构、风格。SFT能够通过增强基础模型知识、调整输出和教授复杂指令来提高模型的性能和效率。然而,它不那么擅长整合新知识或快速迭代新的用例。RAG 和SFT,并不是相互排斥的,它们可以是互补的,联合使用可能会产生最佳性能。

  • 22
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值