Prompt、RAG、微调还是重新训练?如何选择正确的生成式AI的使用方法

生成式人工智能正在快速发展,许多人正在尝试使用这项技术来解决他们的业务问题。一般情况下有4种常见的使用方法:

  • Prompt Engineering
  • Retrieval Augmented Generation (RAG 检索增强生成)
  • 微调
  • 从头开始训练基础模型(FM)

本文将试图根据一些常见的可量化指标,为选择正确的生成式人工智能方法提供建议。

本文不包括“使用原模型”的选项,因为几乎没有任何业务用例可以有效地使用基础模型。按原样使用基础模型可以很好地用于一般搜索,但对于任何特定的用力,则需要使用上面提到的选项之一。

如何执行比较?

基于以下指标:

  • 准确性(回答有多准确?)
  • 实现复杂性(实现可以有多复杂?)
  • 投入工作量(需要多少工作的投入来实现?)
  • 总成本(拥有解决方案的总成本是多少?)
  • 灵活性(架构的耦合有多松?更换/升级组件有多容易?)

我们将对这些度量标准上的每个解决方案方法进行评级,进行一个简单的对比。

准确性

让我们首先得到讨论最总要的一点:哪种方法提供最准确的响应?

Prompt Engineering就是通过提供少量示例提供尽可能多的上下文,以使基础模型更好地了解用例。虽然单独来看,结果可能令人印象深刻,但与其他方法相比,它产生的结果最不准确。

RAG产生了高质量的结果,因为它增加了直接来自向量化信息存储的特定于用例的上下文。与Prompt Engineering相比,它产生的结果大大改善,而且产生幻觉的可能性非常低。

微调也提供了相当精确的结果,输出的质量与RAG相当。因为我们是在特定领域的数据上更新模型权重,模型产生更多的上下文响应。与RAG相比,质量可能稍微好一些,但这取决于具体实例。所以评估是否值得花时间在两者之间进行权衡分析是很重要的。一般来说,选择微调可能有不同的原因,而不仅仅是精度。还包括数据更改的频率、在自己的环境中控制模型实现法规、遵从性和可再现性等目的等等。

从头开始的训练产生了最高质量的结果(这是肯定的)。由于模型是在用例特定数据上从零开始训练的,所以产生幻觉的几率几乎为零,输出的准确率也是比较中最高的。

实现的复杂性

除了准确性以外,另外一个需要关注的就是实现这些方法的难易程度。

Prompt Engineering具有相当低的实现复杂性,因为它几乎不需要编程。需要具备良好的英语(或其他)语言技能和领域专业知识,可以使用上下文学习方法和少样本学习方法来创建一个好的提示。

RAG比Prompt Engineering具有更高的复杂性,因为需要编码和架构技能来实现此解决方案。根据在RAG体系结构中选择的工具,复杂性可能更高。

微调比上面提到的两个更复杂,因为模型的权重/参数是通过调优脚本更改的,这需要数据科学和ML专业知识。

从头开始训练肯定具有最高的实现复杂性,因为它需要大量的数据管理和处理,并且训练一个相当大的模型,这需要深入的数据科学和ML专业知识。

工作量投入

实现的复杂性和工作量并不总是成正比的。

Prompt Engineering需要大量的迭代努力才能做到正确。基础模型对提示的措辞非常敏感,改变一个词甚至一个动词有时会产生完全不同的反应。所以需要相当多的迭代才能使其适用于相应的需求。

由于涉及到创建嵌入和设置矢量存储的任务,RAG也需要很多的工作量,比Prompt Engineering要高一些。

微调则比前两个要更加费力。虽然微调可以用很少的数据完成(在某些情况下甚至大约或少于30个示例),但是设置微调并获得正确的可调参数值需要时间。

从头开始训练是所有方法中最费力的方法。它需要大量的迭代开发来获得具有正确技术和业务结果的最佳模型。这个过程从收集和管理数据开始,设计模型体系结构,并使用不同的建模方法进行实验,以获得特定用例的最佳模型。这个过程可能会很长(几周到几个月)。

总成本

我们讨论的不仅仅是服务/组件花费,而是完全实现解决方案的成本,其中包括熟练工程师(人员),用于构建和维护解决方案的时间,其他任务的成本,如自己维护基础设施,执行升级和更新的停机时间,建立支持渠道,招聘,提高技能和其他杂项成本。

Prompt Engineering的成本是相当低的,因为需要维护的只是提示模板,并在基础模型版本更新或新模型发布时时保持它们的最新状态即可。除此之外,托管模型或通过API直接使用还会有一些而额外的成本。

由于架构中涉及多个组件,RAG 的成本要比Prompt Engineering略高。这取决于所使用的嵌入模型、向量存储和模型。因为在这里需要为3个不同的组件付费。

微调的成本肯定要高于前两个,因为调整的是一个需要强大计算能力的模型,并且需要深入的ML技能和对模型体系结构的理解。并且维护这种解决方案的成本也会更高,因为每次有基本模型版本更新或新数据批次进入时都需要调优。

从头开始训练无疑是成本最高的,因为团队必须拥有端到端数据处理和ML训练、调优和部署能力。这需要一群高技能的机器学习从业者来完成。维护这种解决方案的成本非常高,因为需要频繁的重新训练周期来保持模型与用例周围的新信息保持同步。

灵活性

我们来看看在简化更新和更改方面的是什么情况

Prompt Engineering具有非常高的灵活性,因为只需要根据基础模型和用例的变化更改提示模板。

当涉及到架构中的更改时,RAG也具很最高程度的灵活性。可以独立地更改嵌入模型、向量存储和LLM,而对其他组件的影响最小。它还可以在不影响其他组件的情况下在复杂授权等流程中添加更多组件。

微调对更改的灵活性非常低,因为数据和输入的任何更改都需要另一个微调周期,这可能非常复杂且耗时。同样,将相同的微调模型调整到不同的用例也需要很多的工作,因为相同的模型权重/参数在其他领域的表现可能比它所调整的领域差。

从头开始训练的灵活性最低的。因为模型是从头构建的,对模型执行更新会触发另一个完整的重新训练周期。我们也可以微调模型,而不是从头开始重新训练,但准确性会有所不同。

总结

从以上所有的比较中可以明显看出,没有明显的输赢。因为最终的选择取决于设计解决方案时最重要的指标是什么,我们的建议如下:

当希望在更改模型和提示模板方面具有更高的灵活性,并且用例不包含大量域上下文时,可以使用Prompt Engineering。

当想要在更改不同组件(数据源,嵌入,FM,矢量引擎)方面具有最高程度的灵活性时,使用RAG,这样简单并且可以保持输出的高质量(前提是你要有数据)。

当希望更好地控制模型工件及其版本管理时,可以使用微调。尤其是领域特定术语与数据非常特定时(如法律、生物学等),它也很有用。

当以上都不适合的时候,可以从头开始训练。既然觉得上面的方案准确性都不够高,所以就需要有足够的预算和时间来做的更好。

总而言之,选择正确的生成AI方法需要深入思考并评估可接受和不可接受的指标。甚至是根据不同的时期选择不同的方案。

https://avoid.overfit.cn/post/94751a166b9f49509f7e0b449542733f

作者:Vikesh Pandey

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/77220.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

爬虫逆向实战(十七)--某某丁简历登录

一、数据接口分析 主页地址:某某丁简历 1、抓包 通过抓包可以发现数据接口是submit 2、判断是否有加密参数 请求参数是否加密? 通过查看“载荷”模块可以发现有一个enPassword加密参数 请求头是否加密? 通过查看请求头可以发现有一个To…

C++学习系列之动态库报错问题

C学习系列之动态库报错问题 啰嗦问题解决总结 啰嗦 动态库已建,C文件一加,全是报错,一片红。 问题 解决 解决办法就是加标头 总结 小问题,记录一下。

基于 KubeSphere 的应用容器化在智能网联汽车领域的实践

公司简介 某国家级智能网联汽车研究中心成立于 2018 年,是担当产业发展咨询与建议、共性技术研发中心、创新成果转化的国家级创新平台,旨在提高我国在智能网联汽车及相关产业在全球价值链中的地位。 目前着力建设基于大数据与云计算的智能汽车云端运营…

边缘智能聚焦嵌入式世界

没有什么超出了我们的想象力的极限,我们习惯于在间谍电影中看到的东西需要进行大规模升级,以超越现在认为的标准。 德国纽伦堡—一切都超出了我们的想象范围,而且我们习惯于在间谍电影中看到的东西需要进行大规模升级,以超越现在认…

段错误核心转储

在linux下运行可执行文件的时候出现了以下错误: error:segmentation fault core dumped解决方法: #查看core文件大小判断是否可写 $ ulimit -a real-time non-blocking time (microseconds, -R) unlimited core file size (blocks, -c) …

30W IP网络有源音箱 校园广播音箱

SV-7042XT是深圳锐科达电子有限公司的一款2.0声道壁挂式网络有源音箱,具有10/100M以太网接口,可将网络音源通过自带的功放和喇叭输出播放,可达到功率30W。同时它可以外接一个30W的无源副音箱,用在面积较大的场所。5寸进口全频低音…

初始C语言(6)——详细讲解表达式求值以及其易错点

系列文章目录 第一章 “C“浒传——初识C语言(1)(更适合初学者体质哦!) 第二章 初始C语言(2)——详细认识分支语句和循环语句以及他们的易错点 第三章 初阶C语言(3)——…

GaussDB 实验篇+openGauss的4种1级分区案例

✔ 范围分区/range分区 -- 创建表 drop table if exists zzt.par_range; create table if not exists zzt.par_range (empno integer,ename char(10),job char(9),mgr integer(4),hiredate date,sal numeric(7,2),comm numeric(7,2),deptno integer,constraint pk_par_emp pri…

Python程序设计——列表

一、引言 关键点:一个列表可以存储任意大小的数据集合。 程序一般都需要存储大量的数值。假设,举个例子,需要读取100个数字,计算出它们的平均值,然后找出多少个数字是高于这个平均值的。程序首先读取100个数字并计算它…

C语言刷题训练DAY.6

1.进制AB 解题思路&#xff1a; 这里我们按照备注的提示&#xff0c;调整输入格式。 注意&#xff1a;%x是十六进制的数字 %o是八进制的数字 解题代码&#xff1a; #include<stdio.h> int main() {int a 0;int b 0;scanf("0x%x 0%o", &a, &b);pri…

自定义Android滑块拼图验证控件

自定义Android滑块拼图验证控件 拼图认证视图默认策略工具类参考 1、继承自AppCompatImageView&#xff0c;兼容ImageView的scaleType设置&#xff0c;可设置离线/在线图片。 2、通过设置滑块模型&#xff08;透明背景的图形块&#xff09;设置滑块&#xff08;和缺省块&#x…

sql server 存储过程 set ansi_nulls set quoted_identifier,out 、output

SQL-92 标准要求在对空值(NULL) 进行等于 () 或不等于 (<>) 比较时取值为 FALSE。 当 SET ANSI_NULLS 为 ON 时&#xff0c;即使 column_name 中包含空值&#xff0c;使用 WHERE column_name NULL 的 SELECT 语句仍返回零行。即使 column_name 中包含非空值&#xff0c…

python列表笔记,python列表用法及基础操作

列表的介绍 定义100个变量&#xff0c;每个变量存放一个学生的姓名可行吗&#xff1f;有更好的办法吗&#xff1f; 答&#xff1a; 列表 一、列表的格式 定义列的格式&#xff1a;[元素1, 元素2, 元素3, ..., 元素n] 变量tmp的类型为列表 tmp [xiaoWang,180, 65.0] 列…

亿赛通电子文档安全管理系统任意文件上传漏洞复现

0x01 产品简介 亿赛通电子文档安全管理系统&#xff08;简称&#xff1a;CDG&#xff09;是一款电子文档安全加密软件&#xff0c;该系统利用驱动层透明加密技术&#xff0c;通过对电子文档的加密保护&#xff0c;防止内部员工泄密和外部人员非法窃取企业核心重要数据资产&…

【人工智能124种任务大集合】-集齐了自然语言处理(NLP),计算机视觉(CV),语音识别,多模态等任务

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下人工智能124种任务大集合&#xff0c;任务集合主要包括4大类&#xff1a;自然语言处理&#xff08;NLP&#xff09;、计算机视觉&#xff08;CV&#xff09;、语音识别、多模态任务。 我这里整理了124种应用场景任…

FPGA_学习_14_第一个自写模块的感悟和ila在线调试教程与技巧(寻找APD的击穿偏压)

前一篇博客我们提到了&#xff0c;如果要使用算法找到Vbr&#xff0c;通过寻找APD采集信号的噪声方差的剧变点去寻找Vbr是一个不错的方式。此功能的第一步是在FPGA中实现方差的计算&#xff0c;这个我们已经在上一篇博客中实现了。 继上一篇博客之后&#xff0c;感觉过了很久了…

.net连接mysql,提示找不到请求的 .Net Framework Data Provider。可能没有安装

开发完成的.net程序需要连接mysql数据库&#xff0c;在个人电脑上运行没问题&#xff0c;别人运行时提示“提示找不到请求的 .Net Framework Data Provider。可能没有安装”。经过查询&#xff0c;安装Connector/NET 8.1.0&#xff0c;下载地址如下所示&#xff1a; https://d…

AI抢饭碗!新闻集团将使用生成式AI,每周自动写3000篇新闻丨IDCF

作者&#xff1a;AIGC开放社区 8月1日&#xff0c;英国卫报消息&#xff0c;全球最大新闻媒体公司之一的新闻集团&#xff0c;将使用生成式AI每周自动创建3000篇澳大利亚本地新闻。 据悉&#xff0c;新闻集团在内部成立了一个名为“Data Local”的部门只有4名员工&#xff0c;…

c语言操作文件

1、文件存储 文件存取格式 从用户或者操作系统使用的角度&#xff08;逻辑上&#xff09;文件可以分为文本文件、二进制文件 文本文件&#xff1a;存储时&#xff0c;是将字符的ascii码值存在磁盘中&#xff0c;取的时候将ascii码翻译成对应的字符&#xff0c;这个翻译器就是…

ubuntu下gif动态图片的制作

Gif图片比视频小, 比静态JPG图片形象生动, 更适用于产品展示和步骤演示等。各种各样的gif动图为大家交流提供很大的乐趣. 这里简单介绍ubuntu系统下gif图的制作。 一、工具安装: kazam和ffmpeg kazam是linux下的一款简单但是功能强大的屏幕录制工具. 它可录制声音并选择全屏录…