Prompt Engineering ,Fine-tuning , RAG ?

news2024/10/6 4:05:50

Prompt Engineering ,Fine-tuning , RAG

  • 总结:
  • 1 prompt engineering
  • 2 RAG (Retrieval Augmented Generation)
      • **RAG特点**
      • **RAG优势**
      • **RAG劣势**
  • 3 微调(Fine-tuning)
      • **微调特点**
      • **微调优势**
      • **微调劣势**
  • 4 三者共性和区别
  • 5 RAG和微调的适应场景
      • **RAG适用场景**
      • **微调适用场景**
  • 6 **RAG+微调**
  • 参考:

总结:

Q1:假如我想搞一个自己的知识库助手,选择那种方式比较合适?
A1: 以我目前的了解来看,假如只是在微调和RAG里面选择。我会主要看个人需求。
RAG适用于知识需要快速更新的领域,对实时性要求不是特别高的应用场景。
微调适合的领域为数据量较小但质量高的领域。对模型效果有较高要求,且可以承担相应计算资源消耗的场景。领域知识比较独特,需要模型深入学习的场景。
所以,假如你想要做一个简单的智能知识助手,不要求精准度,而且以个人使用为主,那我建议你可以使用rag技术。如果你对模型的效果有非常高的要求,而且你的计算资源非常的多。那我还是建议你使用微调。

Q2: 是否可以联合微调和RAG技术,这样就可以同时具有他们的优点了,取长补短。
A2: 可以的,这样微调和rag就可以取长补短补短,详细可以见下文。

1 prompt engineering

提示工程相对是大家比较熟悉的概念,指的是通过精心设计,并且优化针对large language model的输入,来激发large language model的潜能,引导他在不同的任务上面呈现出更加精准,更加相关的输出出来。
image.png
那么大多数情况下prompts指的主要是文本,尤其是以自然语言来作为描述的文本,我们来构建这样的文本,然后把它输入给large language model,得出我们想要的结果,这个就是提示工程。

2 RAG (Retrieval Augmented Generation)

RAG,检索强化生成技术是一种结合了检索与生成的方法。它通常依赖于两个核心组件:一个大型语言模型(如GPT-3)和一个检索系统(如向量数据库)。RAG先使用检索系统从大量数据中检索出相关信息,然后将这些信息提供给语言模型,以便生成回答或文本。这样,RAG能够利用语言模型的强大生成能力以及检索系统提供的具体信息。
image.png
RAG这种方法
将检索(或搜索)的能力集成到LLM
中。它结合了一个检索系统和一个大模型,前者从大型语料库中获取相关文档片段,后者使用这些片段中的信息生成答案。本质上,RAG 帮助模型“查找”外部信息以改进其响应。

image.png

RAG特点

  • 知识维度:RAG能够快速更新知识库,仅通过更新数据库来反映最新信息,无需重新训练模型。
  • 效果维度:RAG在稳定性和可解释性方面表现较好,因为其生成的回答基于检索到的具体事实。
  • 成本维度:在推理时,RAG需要额外的检索步骤,这可能增加实时性的成本。

RAG优势

  • 更新知识快:只需更新数据库,无需重新训练模型。
  • 稳定性较好:基于事实的检索结果可以提高回答的准确性。
  • 可解释性:检索到的信息可以作为生成回答的依据。

RAG劣势

  • 检索依赖:检索系统的质量直接影响最终效果。
  • 增加实时性成本:检索过程需要额外的时间和计算资源。

3 微调(Fine-tuning)

微调是另外一种利用大模型的方式,它和前两个不同的地方在于,前面两种技术,不管是提示工程还是RAG,大模型本身是没有任何的变化的,但是如果做微调,其实是要去通过一个训练的过程来修改大模型它本身的参数,微调的技术也有很多种不同的分支。
image.png
微调是在预训练好的大型模型的基础上,使用特定领域的较小数据集来进一步训练模型的过程。通过这个过程,模型能够学习特定领域的知识提高在特定任务上的表现。

微调采用预先训练的 LLM 并在较小的特定数据集上对其进行进一步训练的过程,以使其适应特定任务或提高其性能。通过微调,我们根据数据调整模型的权重,使其更适合我们应用程序的独特需求。
image.png

微调特点

  • 知识维度:微调通过训练使模型获得新的领域知识,需要相对足量的领域数据。
  • 效果维度:对于简单的任务,微调可能达到更高的效果上限,因为它可以针对性地调整模型参数。
  • 成本维度:微调需要大量的计算资源(如GPU),且训练时间较长。

微调优势

  • 领域适应性:能够学习特定领域的深入知识。
  • 性能潜力:对于简单任务,可能达到比RAG更高的性能。

微调劣势

  • 资源消耗大:需要大量的计算资源和时间进行训练。
  • 知识遗忘:容易遗忘未在训练数据中出现的知识。

4 三者共性和区别

三者共性
刚才我们说的这三个概念,它们是有共性的。不管是prompt engineering,RAG还是fine tuning,他们都是利用large language model的手段,利用这些手段共同的目的都是提升大型语言模型的性能和效果。
image.png

三者区别:
说完共性之处,我们再来形象化地看一下这三者之间的不同,我们一起来把大模型想象成公司新来的一个实习生:

  1. 所谓prompt engineering就好像是我们这个用户作为老板直接给我们的大模型实习生下达一个任务命令最多我给他一两个之前的例子,然后就吩咐他去干活,比如我跟他说,你去写一个行研报告。那最多我给你看一个之前的行研报告是怎么写的,然后你就去写,这个就是prompt engineering。
  2. RAG就好像我们在要求这个实习生去完成某个任务之前,先给了他的参考资料,让他先去学习。比如说我先给你很多的资料,我让你成为某某行业的行业专家,然后你再去给我写这个行业报告,这个就是RAG。
  3. 微调就好像我们把这个实习生又送去了一个培训班,专门的培训TA来做某一件事情,TA首先要经过一个非常严格的学习过程,一定要改变了TA的Mindset:要么改变了它的知识结构,要么改变了它的一些认知方式,然后才能够去完成这个任务。

5 RAG和微调的适应场景

  • 知识更新:RAG通过更新数据库来更新知识,微调则是通过重新训练来吸收新知识。
  • 效果稳定性:RAG通常在生成回答时更稳定,而微调可能达到更高的性能上限。
  • 资源消耗:微调在训练时消耗资源较多,RAG在推理时增加额外的检索成本。

RAG适用场景

  • 知识需要快速更新的领域。
  • 对实时性要求不是特别高的应用场景。
  • 需要高度可解释性或准确性的场景。

微调适用场景

  • 数据量较小但质量高的领域。
  • 对模型效果有较高要求,且可以承担相应计算资源消耗的场景。
  • 领域知识比较独特,需要模型深入学习的场景。

6 RAG+微调

RAG和微调各自有优势,在某些场景下结合使用可以发挥各自的长处,提高整体的效果和效率。以下是在哪些场景下需要结合使用RAG和微调的一些建议:

  1. 复杂且知识密集的任务:对于需要深入领域知识和广泛背景信息的问题,单独使用RAG可能无法覆盖所有细节,而微调可以帮助模型更好地理解这些细节。
  2. 数据更新频繁的场景:在数据经常变化的情况下,使用RAG可以快速更新知识库,而微调可以帮助模型适应新的数据分布。
  3. 对实时性要求高的场景:如果单独使用RAG,检索步骤可能会增加延迟。通过微调优化模型,可以减少对检索系统的依赖,提高响应速度。
  4. 资源受限的场景:在资源有限的情况下,可以先使用RAG来减少需要微调的数据量,然后对关键或难以检索的信息进行微调。


RAG和微调相有如下的集中结合方式:

  1. 分阶段训练
    • 初步使用RAG:首先使用RAG来处理任务,利用其检索能力快速获取相关信息。
    • 识别不足:分析RAG在处理任务时的不足,识别模型难以处理或经常出错的情况。
    • 针对性微调:对识别出的问题进行数据收集,然后使用这些数据对模型进行微调,以改进模型在这些特定情况下的表现。
  2. 联合训练
    • 同时训练检索和生成:在微调过程中,可以同时训练检索组件和语言模型,使得两者能够更好地协同工作。
    • 使用伪标签:可以使用生成模型生成的伪标签来训练检索组件,反之亦然。
  3. 迭代优化
    • 循环迭代:先使用RAG生成回答,然后使用这些回答进行微调,接着用微调后的模型来优化检索组件,形成一个迭代优化的闭环。
  4. 领域适应
    • 先微调后RAG:对于领域适应性要求高的场景,可以先对模型进行微调以适应特定领域,然后使用RAG来补充微调未覆盖的知识。

通过这样的结合使用,可以充分利用RAG的快速知识检索能力和微调的深度知识学习能力,提升模型在复杂任务上的表现。同时,这种结合也可以帮助平衡实时性、准确性和资源消耗等多方面的需求。

参考:

https://zhuanlan.zhihu.com/p/686926935
https://blog.csdn.net/YeJuliaLi/article/details/135353344

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

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

相关文章

Qt-FFmpeg开发-打开摄像头直接显示YUYV422图像(12)

Qt-FFmpeg开发-打开摄像头直接显示YUYV422图像📀 文章目录 Qt-FFmpeg开发-打开摄像头直接显示YUYV422图像📀1、概述📸2、实现效果💽3、主要代码🔍4、完整源代码📑 更多精彩内容👉个人内容分类汇…

四川汇聚荣:做拼多多网点需要具备什么能力?

做拼多多网点需要具备什么能力?这个问题对于想要在电商平台上开店的商家来说,是必须要了解的。拼多多作为国内领先的社交电商平台,吸引了众多商家入驻。那么,要想在拼多多上开网店,需要具备哪些能力呢?下面就从四个方面进行详细…

02-WPF_基础(二)

3、控件学习 控件学习 布局控件: panel、Grid 内容空间:Context 之恶能容纳一个控件或布局控件 代表提内容控件:内容控件可以设置标题 Header 父类:HeaderContextControl。 条目控件:可以显示一列数据&#xf…

【LAMMPS学习】八、基础知识(6.5)PyLammps 教程

8. 基础知识 此部分描述了如何使用 LAMMPS 为用户和开发人员执行各种任务。术语表页面还列出了 MD 术语,以及相应 LAMMPS 手册页的链接。 LAMMPS 源代码分发的 examples 目录中包含的示例输入脚本以及示例脚本页面上突出显示的示例输入脚本还展示了如何设置和运行各…

Windows 11 下 kafka 的安装踩坑

安装 windows系统kafka小白入门篇——下载安装,环境配置,入门代码书写(推荐) kafka在windows下安装和使用入门教程 问题1 参考链接 运行kafka集成的zookeeper时,命令:bin\windows\zookeeper-server-star…

2.1 软件工程

第2章 信息技术知识 2.1 软件工程 现状: 开发软件的规模越来越大复杂度越来越高用户需求并不十分明确缺乏软件开发方法和工具方面的有效支持 软件成本日益增长、开发进度难以控制、软件质量无法保证、软件维护困难等问题日益突出。人们开始用工程的方法进行软件…

Codeforces Round 941 (Div. 2)(A,B,C,D,E)

比赛链接 这场难度不高,基本没考算法,全是思维题。B是推结论,C是博弈,D是构造,需要对二进制有一定理解,E是思维题,2300分的暴力和模拟。 A. Card Exchange 题意: 您有 n n n 张牌…

纯血鸿蒙APP实战开发——一镜到底“页面转场”动画

介绍 本方案做的是页面点击卡片跳转到详情预览的转场动画效果 效果图预览 使用说明 点击首页卡片跳转到详情页,再点击进入路由页面按钮,进入新的路由页面 实现思路 首页使用了一种视觉上看起来像是组件的转场动画,这种转场动画通常是通过…

WordPress 管理员密码重置方法汇总

最近明月碰到一个 WordPress 站长求助咨询,说是自己 WordPress 站点的管理员密码被恶意篡改了,对 WordPress 了解的都知道这一般都是恶意代码造成的,问题大多出在使用了所谓的破解版、去授权版的插件或者主题被植入了恶意代码、后门木马。明月…

K8S安装并搭建集群

1. 先给每台机器安装docker环境 卸载旧的docker yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine 配置docker的yum库 yum install -y yum-utilsyum-config-manager --a…

miniconda环境管理器安装及jupyter下载

1.miniconda简介 Miniconda是一款小巧的python环境管理工具,安装包大约只有50M多点,其安装程序中包含conda软件包管理器和Python。一旦安装了Miniconda,就可以使用conda命令安装任何其他软件工具包并创建环境等。 2.下载miniconda 查看需要的…

大模型时代下两种few shot高效文本分类方法

介绍近年(2022、2024)大语言模型盛行下的两篇文本分类相关的论文,适用场景为few shot。两种方法分别是setfit和fastfit,都提供了python的包使用方便。 论文1:Efficient Few-Shot Learning Without Prompts 题目:无需提示的高效少…

找不到msvcp100.dll,无法继续执行代码的问题详细解析

当您在运行某个程序或游戏时遇到提示“找不到msvcp100.dll,无法继续执行代码”,这通常意味着系统中缺失了一个重要的动态链接库文件,从而导致应用程序无法正常启动。为了解决这个问题,本文将介绍5种常见的解决方法,帮助…

卓豪Zoho CRM怎么收费?多少钱一年?

卓豪Zoho CRM作为一款功能强大且高度可定制的企业级客户关系管理系统,其收费标准因版本不同而有所差异,旨在满足不同规模及需求的企业。Zoho CRM提供多种套餐选择,包括但不限于免费版、标准版、专业版、企业版以及旗舰版。每种版本都包含了核…

华为OD机试 - 掌握的单词个数 - 回溯(Java 2024 C卷 100分)

华为OD机试 2024C卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷+C卷)》。 刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。 一、题目描述 有一个字符…

步入式恒温恒湿试验箱厂家哪家好?DHT(多禾试验)是您不二之选

步入式恒温恒湿试验箱厂家是一种广泛应用于科研、生产和质量控制领域的设备,所以选择一个合适的步入式恒温恒湿试验箱厂家,是确保试验数据准确性和可靠性的核心因素。因此在选择步入式恒温恒湿试验箱厂家时,需要考虑多方面因素,如…

Golang SDK安装

windows环境安装 1.链接: 下载地址 2.安装SDK 检查环境变量: 3.开启go modules,命令行执行一下命令: go env -w GO111MODULEon4.设置国内代理,命令行执行一下命令: go env -w GOPROXYhttps://proxy.golang.com.cn,https:/…

算法专题:位运算

目录 常见位运算总结 位运算相关算法题 1. 只出现一次的数字 2. 只出现一次的数字(|||) 3. 两整数之和 4. 只出现一次的数字(||) 常见位运算总结 在开始刷位运算这个类型的题目前,我想先带着大家学习一下一些常见…

Abp框架,EF 生成迁移文件时,自动添加表和字段注释内容

在使用 abp 框架,或者ef 的时候都会遇到一个问题,就是建实体后要将实体描述生成到数据库中,就需要手动去添加 [Comment("注释内容")] 注解,这样相当于手动写两次注释(即使你是 Ctrl C)&#x…

现在做电商迟吗?那是你不知道今年黑马,视频号小店重磅来袭

大家好,我是电商笨笨熊 24年想做电商,还能不能做? 当然可以。 电商是一个长期的市场,只要用户有需求,那么电商就会一直存在; 尤其是近几年来无货源模式爆火,对于我们商家来说这种无需自备货…