何时应用 RAG 与微调

news2024/11/25 13:18:55

充分发挥 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.coloradmin.cn/o/1559178.html

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

相关文章

WebGIS 之 vue3+vite+ceisum

1.项目搭建node版本在16以上 1.1创建项目 npm create vite 项目名 1.2选择框架 vuejavaScript 1.3进入项目安装依赖 cd 项目名 npm install 1.4安装cesium依赖 pnpm i cesium vite-plugin-cesium 1.5修改vite.config.js文件 import { defineConfig } from vite import vue fr…

labelme AI 模型运用

一、lebelme 1、界面介绍 点击上图位置,选择对应的模型。这里我每个模型都测试了一下,EfficientSam这个模型最好用,准确率和速度都ok。 2、使用方法 目标框标注方法:点左上角【编辑】-> 【Create Ai-Mask】就可以标志了&…

在 Three.js 中,OBJExporter 是一个用于将 Three.js 中的场景导出为 OBJ 格式的类。

demo案例 在 Three.js 中,OBJExporter 是一个用于将 Three.js 中的场景导出为 OBJ 格式的类。下面是关于它的入参、出参、属性和方法的解释: 类名:OBJExporter 构造函数: THREE.OBJExporter()说明: 创建一个 OBJE…

2d导入人物素材进行分割后设置图层

1、设置分辨率大小 2、相机调整大小,要符合场景 3、选择2D sprite 编辑器 或者 点击这个也行 4、分割图像 5、设置过滤模式 6、图层设置

CQI-17:2021 V2 英文 、中文版。特殊过程:电子组装制造-锡焊系统评审标准

锡焊作为一个特殊的工艺过程,由于其材料特性的差异性、工艺参数的复杂性和过程控制的不确定性,长期以来一直视为汽车零部件制造业的薄弱环节,并将很大程度上直接导致整车产品质量的下降和召回风险的上升。 美国汽车工业行动集团AIAG的特别工…

MySQL 之 数据库操作 及 表操作

🎉欢迎大家观看AUGENSTERN_dc的文章(o゜▽゜)o☆✨✨ 🎉感谢各位读者在百忙之中抽出时间来垂阅我的文章,我会尽我所能向的大家分享我的知识和经验📖 🎉希望我们在一篇篇的文章中能够共同进步!!&…

共享办公室行业面临的最大挑战是什么,未来有哪些可能的发展方向

共享办公室行业虽然发展迅速,但也面临着一些挑战和需要解决的问题。咱们来聊聊这行业的最大挑战和未来可能的发展方向。 面临的最大挑战: 市场竞争加剧:随着共享办公室的火热,越来越多的玩家进入市场,竞争变得异常激烈…

CatalyzeCDN-发现真实IP

简介 CatalyzeCDN用与调用Fofa接口,将查询结果进行整理发现其真实IP 使用说明 在同目录下的config.ini配置好Fofa key ./CatalyzeCDN -h # 查看帮助信息 从根域发现真实IP并列出相应资产 ./CatalyzeCDN -r baidu.com 从IP查询相应资产 ./CatalyzeCDN -i 项目…

VS Code常用前端开发插件和基础配置

VS Code插件安装 VS Code提供了非常丰富的插件功能,根据你的需要,安装对应的插件可以大大提高开发效率。 完成前端开发,常见插件介绍: 1、Chinese (Simplified) Language Pack 适用于 VS Code 的中文(简体&#xff…

Kubernetes(K8S)学习(二):K8S常用组件

K8S常用组件 一、 Controllers1、ReplicationController(RC)2、ReplicaSet(RS)3、Deployment 二、Labels and Selectors三、Namespace(命名空间)1、简介2、测试2.1、创建namespace2.2、创建pod 四、Network1、集群内:同一个Pod中的容器通信2、…

【C++入门】输入输出、命名空间、缺省参数、函数重载、引用、内联函数、auto、基于范围的for循环

目录 命名空间 命名空间的定义 命名空间的使用 输入输出 缺省参数 函数重载 引用 常引用 引用的使用场景 内联函数 auto 基于范围的for循环 命名空间 请看一段C语言的代码&#xff1a; #include <stdio.h> #include <stdlib.h>int rand 10;int main…

StringBuffer与StringBuilder

1.区别 (1). String : 不可变字符序列. (2). StringBuffer : 可变字符序列.线程安全&#xff0c;但效率低. (3). StringBuilder : 可变字符序列.线程不安全&#xff0c;但效率高. 既然StringBuffer与StringBuilder都是可变字符序列&#xff0c;但二者咋区分开呢&#xff1f…

【git】git使用手册

目录 一 初始化 1.1 账号配置 1.2 ssh生成 1.2.1 配置ssh 1.2.2 测试SSH 1.3 初始化本地仓库并关联远程仓库 二 使用 2.1 上传 2.2 拉取 三 问题 3.1 关联失败 一 初始化 git的安装很简单,下载后大部分进行下一步完成即可----->地址: git工具下载 1.1 账号配置…

(1)半导体设备之sorter机(上)

01、什么是sorter 其实sorter 就是分选机&#xff0c;大家日常生活买的土豆&#xff0c;苹果&#xff0c;会用到这个&#xff0c; 大家日常用的硬币&#xff0c;游戏币&#xff0c;都是用sorter来进行挑选的&#xff0c;否则人工数硬币又累又苦逼&#xff0c;钱再对不上号&…

【Entity Framework】创建并配置模型

【Entity Framework】创建并配置模型 文章目录 【Entity Framework】创建并配置模型一、概述二、使用fluent API配置模型三、分组配置四、对实体类型使用EntityTypeConfigurationAttribute四、使用数据注释来配置模型五、实体类型5.1 在模型中包含类型5.2 从模型中排除类型5.3 …

手写简易操作系统(十七)--编写键盘驱动

前情提要 上一节我们实现了锁与信号量&#xff0c;这一节我们就可以实现键盘驱动了&#xff0c;访问键盘输入的数据也属于临界区资源&#xff0c;所以需要锁的存在。 一、键盘简介 之前的 ps/2 键盘使用的是中断驱动的&#xff0c;在当时&#xff0c;按下键盘就会触发中断&a…

【STM32嵌入式系统设计与开发】——12IWDG(独立看门狗应用)

这里写目录标题 一、任务描述二、任务实施1、ActiveBeep工程文件夹创建2、函数编辑&#xff08;1&#xff09;主函数编辑&#xff08;2&#xff09;USART1初始化函数(usart1_init())&#xff08;3&#xff09;USART数据发送函数&#xff08; USART1_Send_Data&#xff08;&…

【C++】递归快速幂

class Solution { public:double myPow(double x, int n) {if(n<0){long long a -(long long)n;double temp dfs(x,a);return 1.0/temp;}else{double temp dfs(x,n);return temp;}}double dfs(double x,int n)//给一个数&#xff0c;给一个n&#xff0c;求出x的n次幂{//递…

npm软件包管理器

npm软件包管理器 一.npm 使用步骤二.npm安装所有依赖三.npm全局软件包-nodemon pm 简介链接&#xff1a; 软件包管理器&#xff0c;用于下载和管理 Node.js 环境中的软件包 一.npm 使用步骤 1.初始化清单文件&#xff1a; npm init -y &#xff08;得到 package.json 文件&am…

【C++庖丁解牛】自平衡二叉搜索树--AVL树

&#x1f341;你好&#xff0c;我是 RO-BERRY &#x1f4d7; 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f384;感谢你的陪伴与支持 &#xff0c;故事既有了开头&#xff0c;就要画上一个完美的句号&#xff0c;让我们一起加油 目录 前言1 AVL树的概念2. AVL…