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

news2024/11/17 7:36:30

生成式人工智能正在快速发展,许多人正在尝试使用这项技术来解决他们的业务问题。一般情况下有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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

爬虫逆向实战(十八)--某得科技登录

一、数据接口分析 主页地址:某得科技 1、抓包 通过抓包可以发现数据接口是AjaxLogin 2、判断是否有加密参数 请求参数是否加密? 查看“载荷”模块可以发现有一个password加密参数和一个__RequestVerificationToken 请求头是否加密? 无…

FreeRTOS qemu mps2-an385 bsp 移植制作 :串口打印篇

相关文章 FreeRTOS qemu mps2-an385 bsp 移植制作 :环境搭建篇 FreeRTOS qemu mps2-an385 bsp 移植制作 :系统启动篇 FreeRTOS qemu mps2-an385 bsp 移植制作 :系统运行篇 开发环境 Win10 64位 VS Code,ssh 远程连接 ubuntu …

小样本UIE 信息抽取微调快速上手(不含doccona标注)

文章目录 1.安装环境(可略过)2.模型简介(略读)抽取任务输入输出示例:1.实体识别2.关系抽取 3.快速上手(主菜)(1)转换数据标注数据样例 (2)生成训练数据训练数据样例 &…

【刷题笔记8.17】LeetCode:下一个排列

LeetCode:下一个排列 题目描述 整数数组的一个 排列 就是将其所有成员以序列或线性顺序排列。 例如,arr [1,2,3] ,以下这些都可以视作 arr 的排列:[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1] 。 整数数组的 下一个排列 是指其整数的…

Java调用https接口添加证书

使用InstallCert.Java生成证书 /** Copyright 2006 Sun Microsystems, Inc. All Rights Reserved.** Redistribution and use in source and binary forms, with or without* modification, are permitted provided that the following conditions* are met:** - Redistri…

Druid 德鲁伊 | 安装、使用指南

Druid安装指南 1. druid简介1.1数据库连接池 2. 安装前的环境准备3. 安装步骤3.1 引入maven依赖3.1 编写配置文件3.3 启动Druid Monitor 4. druid使用指南4.1 数据源4.2 SQL监控4.3 SQL防火墙4.4 web应用4.5 URI监控 1. druid简介 druid是阿里开源的一个数据库连接池的解决方案…

【Unity】按Esc进入操作菜单

本文章是基于如下视频的自我总结 https://www.youtube.com/watch?vJivuXdrIHK0 步骤如下 1、在Canvas 界面添加一个Panel Panel中添加一个按钮,调整按钮的大小为合适大小 调整字体的大小为合适大小 可以为字体添加Shadow组件,产生阴影效果 2、调整按…

【IMX6ULL驱动开发学习】05.字符设备驱动开发模板(包括读写函数、poll机制、异步通知、定时器、中断、自动创建设备节点和环形缓冲区)

一、 字符设备驱动简介 字符设备是Linux驱动中最基本的一类设备驱动,字符设备就是一个一个字节,按照字节流进行读写操作的设备,读写数据是分先后顺序的。比如常见的点灯、按键、IIC、SPI、LCD 等等都是字符设备,这些设备的驱动就叫…

Linux 常见问题解决思路

Linux 常见问题解决思路 CPU 高系统平均负载高(load average) CPU 高 1,步骤:查找进程-》查找线程-》分析threadDump日志-》找出问题代码 a、查看 cpu 高的 java 进程 topb、生成进程下所有线程的栈日志 jstack 1721 > 1712.…

Python入门【TCP建立连接的三次握手、 TCP断开连接的四次挥手、套接字编程实战、 TCP编程的实现、TCP双向持续通信】(二十七)

👏作者简介:大家好,我是爱敲代码的小王,CSDN博客博主,Python小白 📕系列专栏:python入门到实战、Python爬虫开发、Python办公自动化、Python数据分析、Python前后端开发 📧如果文章知识点有错误…

ant-design-vue在ios使用AUpload组件唤起了相机,HTML的 `capture` 属性

在使用ant design vue组件的上传组件AUpload的时候有一个问题&#xff0c;直接按照demo写&#xff0c;在ios上会唤起相机&#xff0c;但是实际上我们的需求是弹出选择相册/相机这个弹框。 解决办法是加一个 cupture"null"这个属性即可 <a-upload:capture"nu…

电压放大器的作用有哪些呢

电压放大器是一种基础的电子元件&#xff0c;它能够将输入电压信号转化为更高的输出电压信号&#xff0c;从而实现对信号的放大和处理。电压放大器广泛应用于各个领域&#xff0c;如通讯、控制、测量等。下面我们来详细了解一下电压放大器的作用。 一、信号放大 电压放大器最主…

selenium语法进阶+常用API

目录 浏览器操作 浏览器回退&#xff0c;前进 与刷新 浏览器窗口设置大小 浏览器设置宽高 浏览器窗口最大化 浏览器控制滚动条 信息打印 打印页面的标题和当前页面的URL 定位一组元素 鼠标和键盘事件 键盘 鼠标 下拉框操作 通过索引定位&#xff08;se…

Vue-8.集成(.editorconfig、.eslintrc.js、.prettierrc)

介绍 同时使用 .editorconfig、.prettierrc 和 .eslintrc.js 是很常见的做法&#xff0c;因为它们可以在不同层面上帮助确保代码的格式一致性和质量。这种组合可以在开发过程中提供全面的代码维护和质量保证。然而&#xff0c;这也可能增加一些复杂性&#xff0c;需要谨慎配置…

详细记录在迅为iMX6开发板中运行可执行文件

本文主要为了记录通过在虚拟机Ubuntu系统编译生成的可执行文件canitf如何运行在迅为的iMX6开发板上&#xff0c;中间涉及到的一些操作相对来说比较固定&#xff0c;因此可以整理成参考步骤以便之后使用时来依照执行。 一、生成可执行文件 首先在Ubuntu系统对应目录终端运行如…

7-11 到底是不是太胖了

分数 10 全屏浏览题目 切换布局 作者 陈越 单位 浙江大学 据说一个人的标准体重应该是其身高&#xff08;单位&#xff1a;厘米&#xff09;减去100、再乘以0.9所得到的公斤数。真实体重与标准体重误差在10%以内都是完美身材&#xff08;即 | 真实体重 − 标准体重 | < 标…

【深入了解PyTorch】PyTorch模型解释性和可解释性:探索决策过程与预测结果的奥秘

【深入了解PyTorch】PyTorch模型解释性和可解释性:探索决策过程与预测结果的奥秘 PyTorch模型解释性和可解释性:探索决策过程与预测结果的奥秘1. 引言2. 梯度可视化3. 特征重要性分析4. 结论PyTorch模型解释性和可解释性:探索决策过程与预测结果的奥秘 在机器学习和深度学习…

哈夫曼树(赫夫曼树、最优树)详解

目录 哈夫曼树&#xff08;赫夫曼树、最优树&#xff09;详解 哈夫曼树相关的几个名词 什么是哈夫曼树 构建哈夫曼树的过程 哈弗曼树中结点结构 构建哈弗曼树的算法实现 哈夫曼树&#xff08;赫夫曼树、最优树&#xff09;详解 哈夫曼树相关的几个名词 路径&#xff1a;…

“西游记“中的项目管理:如何驾驭你的“取经之路”

​1.​引言 自古以来&#xff0c;文学作品不仅仅是为了娱乐&#xff0c;它们也为我们提供了生活的智慧和经验。中国的古典文学巨著《西游记》便是其中的佼佼者&#xff0c;其中的故事和角色为我们提供了丰富的人生哲理和管理智慧。但你可能会问&#xff0c;一个古老的神话故事…

Windows11 Docker Desktop 启动 -wsl kernel version too low

系统环境&#xff1a;windows11 1&#xff1a;docker下载 Docker: Accelerated Container Application Development 下载后双击安装即可 安装后启动Docker提示&#xff1a;Docker Desktop -wsl kernel version too low 处理起来也是非常方便 1:管理员身份启动&#xff1a;…