何时应用 RAG 与微调

充分发挥 LLM 的潜力需要在检索增强生成(RAG)和微调之间选择正确的技术。

让我们来看看何时对 LLM、较小的模型和预训练模型使用 RAG 与微调。我们将介绍:

  • LLM 和 RAG 的简要背景
  • RAG 相对于微调 LLM 的优势
  • 何时针对不同模型大小对 RAG 进行微调
  • 对预训练模型使用 RAG 和微调
  • RAG 和微调的金融服务示例
  • 实际考虑和建议

LLM 和 RAG 背景 

大型语言模型利用一种称为预训练的技术,对互联网、代码、社交媒体和书籍等大量文本数据集进行预训练。这使他们能够生成文本、回答问题、翻译语言等,而无需任何特定于任务的数据。然而,他们的知识仍然有限。

检索增强生成 (RAG) 通过在生成文本之前从数据库中检索相关知识作为上下文来增强 LLMs。例如,财务顾问 LLM 可以在提出财务建议之前检索客户的投资历史和概况。

检索增强结合了 LLMs 理解语言的能力与特定领域数据库中相关知识的优势。与普通的 LLMs 相比,这使得 RAG 系统知识更丰富、更一致、更安全。

RAG 相对于微调 LLM 的优势

微调通过针对特定领域的数据进行训练,使预训练的 LLM 适应特定任务。例如,经过预先培训的 LLM 可以根据财务文件进行微调,以提高其财务知识。

然而,与检索增强相比,微调有几个缺点:

  • 遗忘:微调后的模型经常会忘记或失去预训练的能力。例如,金融专业的 LLM 可能无法再很好地处理一般对话任务。
  • 训练数据依赖性:性能完全依赖于可用训练数据的数量和质量。收集高质量数据的成本很高。
  • 缺乏外部知识:模型只知道训练数据中的内容,缺乏现实世界的知识。
  • 不可定制:对微调模型的更改需要重新训练,这是昂贵的。

相比之下,RAG 系统:

  • 由于 LLM 本身没有修改,因此保留了预培训的能力。
  • 通过可定制的外部知识源(例如数据库)来增强 LLM。
  • 允许改变知识来源而无需重新培训 LLM。
  • 由于 LLM 无需重新培训,因此数据要求较低。

因此,RAG系统通常会获得比微调更好的性能,同时保留原始 LLM 的更多功能。

何时针对不同模型尺寸进行微调 vs RAG

微调和 RAG 之间的选择取决于模型大小:

大型语言模型

对于像 GPT-4 这样具有数万亿参数的大规模模型,RAG 通常比微调更可取:

  • 保留预训练能力:微调可能会导致忘记对话、翻译、分析等需要 GPT-4 规模模型的能力。
  • 利用外部知识: GPT-4/Llama-2 缺乏世界知识,而 RAG 通过外部数据库来增强它。
  • 避免灾难性遗忘:微调可能会损害 LLMS 的通用功能。
  • 灵活的知识源: RAG 知识源可以改变,无需昂贵的再培训。

除非微调任务与预训练非常相似或需要记忆,否则 RAG 更适合 LLMs。

中等大小语言模型

对于 Llama 2 7B、Falcon 7B、Alpaca 7B 等具有数亿参数的中型模型,RAG 和微调都是可行的选择:

  • 对于严重依赖记忆的目标(例如回答问题而不是文档)来说,微调可能是首选。
  • RAG 通过检索相关知识,有利于特定领域的生成或分类任务。

在选择时,评估保留中等大小 LLM 的完整常识对你的用例是否重要。

小语言模型

对于像 Zephyr、Phi2 和 Orca 这样具有数千到数百万个参数的小型定制模型,微调通常比 RAG 更合适:

  • 小型模型已经缺乏大型模型的一般功能。
  • 通过微调对特定领域的数据进行培训,可以直接灌输知识。
  • 由于他们的预训练很少,因此发生灾难性遗忘的风险很小。
  • 需要时可以轻松使用新数据重新训练小型模型。

除非你特别需要保留知识的广度,否则微调小模型比 RAG 更可取。

对预训练模型使用 RAG 和微调

RAG 和微调都是适应预训练模型的适用策略 —— 无论是像 BERT、ELMo、RoBERTa 这样的 LLMs 还是较小的定制模型。

用于预训练模型的 RAG

在以下情况下,将 RAG 应用于预训练模型是有效的:

  • 利用常识 —— 该模型具有你希望保留的强大的基础功能,例如对话、分析等。
  • 最大限度地减少遗忘 —— 进一步的培训可能会损害通用的一般能力。
  • 利用外部知识 —— 利用检索到的特定领域知识进行增强是有价值的。
  • 灵活的知识 —— 知识需求经常变化,因此可交换数据库比再培训更受青睐。

例如,RAG 适合大型会话模型,以避免忘记一般聊天功能,同时用领域知识来增强它们。

微调预训练模型

在以下情况下,微调对于预训练模型是有利的:

  • 专注于专业 —— 最终任务在很大程度上依赖于专业知识而不是一般能力。
  • 记忆 —— 记忆特定领域的数据(例如客户资料)至关重要。
  • 静态知识 —— 知识要求相对固定,减少了对可交换数据库的需求。
  • 小模型 —— 对于较小的模型,微调可以直接注入知识,而不会带来灾难性遗忘的太大风险。

例如,微调对于使用静态公司政策和响应来训练客户服务聊天机器人非常有效。

应用 RAG 和微调的示例

让我们考虑一下金融服务用例的一般知识与特定领域的知识需求的不同 —— 影响 RAG 与微调选择。

投资管理和建议

提供定制投资管理和财务建议需要强大的一般会话能力和特定领域的知识。

RAG 通过以下方式非常适合这些应用:

  • 使用客户资料和投资数据增强 GPT-4 等对话模型,以提供个性化建议。
  • 检索市场数据、过去的表现和研究以制定明智的投资策略。
  • 使用新的市场信息频繁更新数据库,而无需重新训练底层模型。

微调可能会损害与客户有效沟通至关重要的一般对话能力。

保险索赔处理

处理保险索赔主要涉及分析文件、提取关键信息、根据保单验证索赔以及生成索赔报告。

根据过去的索赔和保单对 Llama 2 7B、Falcon 7B 等中型模型进行微调适合此用例:

  • 记住保险单至关重要 —— 通过微调比外部数据库更好地处理。
  • 静态的保单和索赔数据与快速变化的知识。
  • 特定领域的任务侧重于表单分析与一般会话能力。

客户服务聊天机器人

处理金融服务客户服务的聊天机器人通常需要广泛的对话能力和公司特定常见问题解答、政策和脚本的知识:

  • 使用 RAG 进行一般闲聊和对公司知识进行微调的组合方法效果很好。
  • 在内部数据集上微调小型聊天机器人模型,以直接嵌入公司知识。
  • 通过在需要时检索适当的常见问题解答、帐户详细信息和脚本,通过 RAG 进行增强。

这平衡了广泛的对话能力和深入的公司特定知识。

反洗钱文本分析

分析金融文件和客户数据以检测洗钱和金融犯罪在很大程度上依赖于学习的模式和领域术语:

  • 考虑到专门的重点,对 AML 数据的文本分类模型进行微调是有意义的。
  • 法律、法规、可疑活动模式的静态知识。
  • 一般会话技巧不太重要。

通过微调直接训练模型比 RAG 更适合这种专门的文本分析任务。

客户资料关键词提取

从客户文档和信件中提取资产、财务目标、风险承受能力等相关关键字需要基本的语言理解,而无需太多领域知识:

  • 现成的 LLM 在这里可以很好地发挥作用,无需太多调整。
  • 无需记住领域术语或模式。
  • 一般语言能力提供了足够的信号。
  • 对于这种通用任务,RAG 的优势微乎其微。

按原样使用现成的模型通常比大量微调或 RAG 效果更好。

RAG 和微调的关键实际考虑因素

  • 访问 LLMs — RAG 需要访问大型预训练模型。内部开发较小的定制模型更容易。
  • 数据可用性 —— 微调需要大量特定领域的数据集。 RAG 更多地依赖外部知识源。
  • 知识灵活性 —— RAG 支持频繁更新的知识,无需重新培训。微调需要定期重新训练。
  • 培训基础设施 —— RAG 主要意味着选择和更新数据源。微调需要 GPU 来进行高效训练。
  • 推理速度 —— RAG 检索步骤增加了推理延迟。微调模型是独立的,因此速度更快。
  • 一般能力 —— RAG 保留了大型 LLMs 的多功能性。微调以通用性换取专业性。
  • 混合 —— 许多应用程序使用 RAG 来实现某些功能,并针对其他功能进行微调。针对每个任务选择最佳方法。

比较 RAG 和 Fine-tuning 的高级视角:

  • 混合 RAG 调整方法 —— 混合技术旨在结合两种方法的优点,而不是二元选择。例如,T0 对 LLM 的某些层进行部分微调,同时冻结其他层以保留能力。
  • 多阶段建模 —— 一种有前景的方法是首先使用 RAG 进行检索,然后使用检索到的上下文来调节微调模型。这允许灵活地合并外部知识,同时专门化模型的某些部分。
  • 动态 RAG 与静态微调 —— RAG 允许动态更新知识源而无需重新训练,而微调则生成静态专用模型。然而,动态评估和持续学习等技术也旨在在线发展微调模型。
  • 缩放法则 —— 微调通常会随着模型大小的增加而导致性能回报递减,而缩放 RAG 模型可能会随着外部知识的融入而实现更一致的改进。这可以使 RAG 更有效地开发大型模型。
  • 超个性化 —— RAG 通过每个用户的不同知识促进个性化,无需重新训练模型。微调需要从头开始训练每个用户的模型,从而限制个性化。然而,诸如模型无关元学习之类的微调方法可能会缓解这种情况。
  • 灾难性遗忘缓解 —— RAG 本质上避免了遗忘预先训练的功能。但弹性权重整合、突触智能(synapse intelligence)和丢失调度(dropout scheduling)等新的微调技术也旨在减轻灾难性遗忘。
  • 设备上部署 —— 经过微调的模型是完全独立的,允许低延迟的设备上部署。结合知识检索使设备上完整的 RAG 部署更具挑战性。然而,然而,诸如将检索到的知识压缩成模型参数的近似方法可能使得在设备上部署 RAG 系统成为可能。
  • 理论与经验 —— 理论上,RAG 应该通过结合人类知识来提高样本效率,而不是微调。但实证结果好坏参半,通常表现出可比的表现。

    需要进一步的研究来实现RAG的理论收益。

探索它们的组合是最大限度地发挥每种方法优势的一条有前途的途径。

主要建议

根据我们的分析,以下是一些最佳实践:

  • 对于顾问和聊天机器人等面向客户的应用程序,优先考虑使用 RAG 保留对话功能而不是微调。对于特定于公司的重要知识,请谨慎使用微调。
  • 对于文档和文本分析任务,专门的微调模型通常优于 RAG。但考虑 RAG 来进行快速发展的分析,例如投资。
  • 即使构建定制模型,也能保持对大型通用 LLMs 的访问权 —— RAG 可以从他们的通用能力中受益。
  • 定期审核微调模型,以检查与初始训练数据相比是否存在与期望行为的偏差。
  • 评估将专门的微调模型与一般会话 RAG 模型相结合的集成方法。
  • 仔细选择 RAG 的外部知识源 — 相关性、准确性和伦理性决定整体系统性能。
  • 对于客户数据和文档,仅检索必要部分而不是全文,以平衡相关性和隐私性。

结论

选择 RAG 或微调等正确的技术对于最大限度地提高 LLMs、小型模型和金融服务预训练系统的性能至关重要。这些考虑因素很复杂 —— 取决于模型大小、用例重点、基础设施限制、不断变化的知识需求等因素。混合 RAG 和微调通常是实现对话能力和领域专业知识的最佳选择。随着 LLMs 和增强型人工智能的进步,RAG 将变得更加突出 —— 尽管仍然通过在最适合的地方进行微调来补充。了解这些技术之间细微差别的公司将获得根据其独特需求定制的人工智能优势。

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

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

相关文章

python 贪吃蛇

main.py #!/usr/bin/env python3 # -*- coding: utf-8 -*-import pygame # 导入pygame模块from setting import Setting import startmain as sm from pygame.sprite import Groupdef InitGame():print("InitGame")pygame.init() #初始化pygameai_settings Se…

【图轮】【 最小生成树】【 并集查找】1489. 找到最小生成树里的关键边和伪关键边

本文涉及知识点 图轮 最小生成树 并集查找 关键边 1489. 找到最小生成树里的关键边和伪关键边 给你一个 n 个点的带权无向连通图,节点编号为 0 到 n-1 ,同时还有一个数组 edges ,其中 edges[i] [fromi, toi, weighti] 表示在 fromi 和 to…

书生·浦语全链路开源开放体系 第二期

文章目录 大模型背景大模型开发流程InternLM 2.0SFT与RLHFInternLM2主要亮点 书生浦语全链路开源开放体系数据-书生万卷InternLM-Train微调 XTuner评测工具 OpenCompass部署 LMDeploy智能体 Lagent智能体工具箱 AgentLego 大模型背景 专用模型:针对特定的任务&…

【Web】NSSCTF Round#20 Basic 个人wp

目录 前言 真亦假,假亦真 CSDN_To_PDF V1.2 前言 感谢17👴没让我爆零 真亦假,假亦真 直接getshell不行,那就一波信息搜集呗,先开dirsearch扫一下 扫的过程中先试试常规的robots.txt,www.zip,shell.phps,.git,.sv…

使用Docker Compose一键部署前后端分离项目(图文保姆级教程)

一、安装Docker和docker Compose 1.Docker安装 //下载containerd.io包 yum install https://download.docker.com/linux/fedora/30/x86_64/stable/Packages/containerd.io-1.2.6-3.3.fc30.x86_64.rpm //安装依赖项 yum install -y yum-utils device-mapper-persistent-data l…

百度云加速方法「Cheat Engine」

加速网盘下载 相信经常玩游戏的小伙伴都知道「Cheat Engine」这款游戏内存修改器,它除了能对游戏进行内存扫描、调试、反汇编 之外,还能像变速齿轮那样进行本地加速。 这款专注游戏的修改器,被大神发现竟然还能加速百度网盘资源下载&#xf…

c++前言

目录 1. 什么是 C 2. C 发展史 3. C 的重要性 4. 如何学习 C 5. 关于本门课程 1. 什么是C C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的 程序,需要高度的抽象和建模时, C 语言则不合适…

【uC/OS-III篇】uC/OS-III 移植到 STM32 简明教程

uC/OS-III 移植到 STM32 简明教程 一、uC/OS-III 介绍 二、获取UCOS-III源码 三、建立项目工程 四、解决工程编译报错 五、修改项目文件 下一篇博客: 【uC/OS-III篇】uC/OS-III 创建第一个任务(For STM32) 移植后的工程自取方式&#xf…

玩转Django分页器

一、Pagination 分页器编程步骤 View, 导入django.core.paginator.Paginator类,创建Paginator 对象时,输入qs对象,以及每页显示条数。 接收 URL, 从请求参数中读取page数值 ,通过 paginator.page(page_num) 返回请求页的page_obj…

从 PG 技术峰会南京站汲取的那些干货

3月30日下午,“PostgreSQL 数据库技术峰会”南京站圆满举办。 这场峰会同步在线上直播,近 2000 人在线观看。 感谢各位大佬带来精彩演讲。 1. 可观测性 第一场正式演讲是白鳝前辈带来的《PostgreSQL 数据库的可观测性能力》。 数据库的可观测性的重要性不…

Mysql数据库:MHA高可用架构

目录 前言 一、MHA概述 1、什么是MHA 2、MHA的特点 3、MHA的组成 4、MHA的工作原理 5、故障切换备选主库的算法 二、部署MHA高可用架构 1、环境部署 2、部署主从同步 2.1 修改主配置文件并创建软链接 2.1.1 master 修改主配置文件并创建软连接 2.1.2 slave1 修改主…

算法学习——LeetCode力扣补充篇5 (52. N 皇后 II、649. Dota2 参议院、1221. 分割平衡字符串、5. 最长回文子串)

算法学习——LeetCode力扣补充篇5 52. N 皇后 II 52. N 皇后 II - 力扣(LeetCode) 描述 n 皇后问题 研究的是如何将 n 个皇后放置在 n n 的棋盘上,并且使皇后彼此之间不能相互攻击。 给你一个整数 n ,返回 n 皇后问题 不同的…

免费!微软推出全球第一个生成式AI认证

微软在官网宣布一项新的人工智能计划,包括与 LinkedIn联合推出免费的生成式AI课程和专业认证证书;微软与数据平台data.org、开源社区GitHub 等合作,发一起全球生成式AI挑战赛,为参赛的组织提供资金、技术、培训等帮助。 用户学习…

文生图大模型三部曲:DDPM、LDM、SD 详细讲解!

1、引言 跨模态大模型是指能够在不同感官模态(如视觉、语言、音频等)之间进行信息转换的大规模语言模型。当前图文跨模态大模型主要有: 文生图大模型:如 Stable Diffusion系列、DALL-E系列、Imagen等 图文匹配大模型:如CLIP、Chinese CLIP、…

力扣刷题Days28-第二题-11.盛水最多的容器(js)

目录 1,题目 2,代码 3,学习与总结 3.1思路回顾 1,如何遍历 2,算法流程 3.2剖析问题 1,题目 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, h…

Keil界面乱了,某些图标消失

文章目录 如图 如图 我都不知道怎么搞的第一个 重启界面解决了

学习【零拷贝】这一篇就够了

目录 1. 什么是零拷贝2. 传统的IO执行流程3. 零拷贝相关知识3-1. 内核空间和用户空间3-2. 什么是用户态、内核态3-3. 什么是上下文切换3-4. 虚拟内存3-5. DMA技术 4. 零拷贝实现的几种方式4-1. mmapwrite实现的零拷贝4-2. sendfile实现的零拷贝4-3. sendfileDMA scatter/gather…

深度学习网络缝合模块学习

主干网络缝合模块------>缝模块对其通道数 1缝合模块只看通道数 2把模块复制到模型中 3在forward中查看通道数是多少 4在init中进行实例化,注意通道数是上一步forward的通道数 5在forward中加载init中的实例化 6模型实例化测试模块是否加入 模块和模块之前…

程序数据模型由OS还是硬件架构决定?

文章目录 前言硬件架构的作用OS的作用编译器的角色OS的数据模型参考 前言 在文章 1>>32的结果是1还是0 中提到了数据模型 L P 64 LP64 LP64 ,并提出这个数据模型主要是由 U n i x Unix Unix 以及类 U n i x Unix Unix 的操作系统使用居多,例如…

C++教学——从入门到精通 6.ASCII码与字符型

如何把小写字母转换成大写字母呢? 这个问题问的好,首先我们要新学一个类型——char 这个类型就是字符型 再来说说ASCII码 给大家举几个例子 空格————32 0————48 9————57 A————65 Z————90 a————97 z————122 我们…