强化RAG:微调Embedding还是LLM?

在这里插入图片描述

为什么我们需要微调?

微调有利于提高模型的效率和有效性。它可以减少训练时间和成本,因为它不需要从头开始。此外,微调可以通过利用预训练模型的功能和知识来提高性能和准确性。它还提供对原本无法访问的任务和领域的访问,因为它允许将预先训练的模型转移到新场景。换句话说,这一切都是为了获得更好的结果、减少奇怪的输出、更好地记住数据以及节省时间和金钱。

虽然微调也可用于使用外部数据“增强”模型,但微调可以通过多种方式补充RAG:

Embedding微调的好处

  • 微调Embedding模型可以在数据训练分布上实现更有意义的Embedding表示,从而带来更好的检索性能。

LLM微调的好处

  • 允许它学习给定数据集的风格
  • 允许它学习训练数据中可能较少出现的 DSL(例如 SQL)
  • 允许它纠正可能难以通过提示工程修复的幻觉/错误
  • 允许它将更好的模型(例如 GPT-4)提炼成更简单/更便宜的模型(例如 GPT-3.5、Llama 2)

简而言之,微调有助于更好的相似性搜索,这是获取正确数据以及生成正确答复所必须的前提。

微调主要有两种类型。第一个是微调Embedding,目的是提高数据检索的准确性,第二个是微调LLM,将领域知识注入到现有的LLM中。第一个是 RAG 特定的,而第二个是通用的。

微调Embedding

大型语言模型 (LLM) 可以处理广泛的任务,包括情感分析、信息提取和问答。正确的架构、深思熟虑的训练过程以及整个互联网训练数据的可用性结合在一起,使它们能够胜任某些任务。

LLM经过训练,可以使用这些大量数据在许多领域进行泛化,产生一个总体上很优秀但缺乏特定领域知识的模型。这时,微调就变得很重要。

微调过程涉及更改语言模型以更好地适应数据领域。例如,想要处理大量有关患者的医院文书工作,因此可能希望将LLM专门研究这些类型的文本。

LlamaIndex 关于微调Embedding的包含三个主要步骤:

  1. 从数据生成综合问题-答案pari对数据集
  2. 微调模型
  3. 评估模型

微调Embedding

步骤总结:

  1. 切分训练集和验证集
  2. 使用LlamaIndex内置函数generate_qa_embedding_pairs生成训练数据集的问题/答案。此步骤将调用 LLM 模型(默认使用 OpenAI,可以替换为自己本地模型,例如ChatGLM、baichuan)来生成合成数据集
  3. 使用SentenceTransformersFinetuneEngine与HuggingFace模型“m3e”模型进行微调。m3e模型可以提前下载到本地,避免网络访问的错误问题。

在这里插入图片描述

  1. 使用hit rate 指标进行评估。

微调Adapter

这是微调Embedding的升级版本。基本的微调Embedding只需使用SentenceTransformersFinetuneEngine提供的开箱即用的功能即可。如果熟悉神经网络,那么layer、loss和 ReLU 等都不陌生。这个Adapter就是这样,让我们能够更好地控制微调过程。

步骤总结:

  1. 与微调Embedding的步骤 1 类似,切分训练集和验证集
  2. 类似于微调Embedding的步骤 2,构建合适的数据集
  3. 使用 EmbeddingAdapterFinetuneEngine ,而不是使用 SentenceTransformersFinetuneEngine 。可以使用预定义的TwoLayerNN将图层作为参数添加到EmbeddingAdapterFinetuneEngine中,如下所示

在这里插入图片描述

  1. 与基本微调Embedding的步骤4类似

Router微调

我自己并不经常使用这种微调,这种类型的微调对于router查询很有用。但路由器查询是非常特定于数据域的,添加这种Embedding只会增加 RAG 的复杂性。

路由器的快速总结:不能扔一堆文档进行Embedding,然后在其上构建检索。这种方法不会给你带来任何好的结果,甚至是一个不可接受的结果。因此 LlamaIndex 引入了一个奇妙的概念,称为 Router。路由器是 LLM 实现自动化决策的重要一步,这本质上将 LLM 视为分类器

在这里插入图片描述

但是,基础路由器有时很差劲,查询和索引之间的匹配率非常低。为了解决这个问题,LlamaIndex 现在可以微调路由器。这将有助于减少每个查询运行的循环数量,因此期望结果更快。但结果有时还是很可怕。

基本上,对于每个文档,在其上构建多个索引,例如 VectorIndex、SummaryIndex、KeywordIndex 等,然后给出每个索引的元数据或描述,然后在此基础上构建代理,并使用元数据描述来告诉 LLM这个代理是做什么的。如果有 100 万份文档,那么就有 100 万个代理。每次进行查询时,LLM 都需要通过 100 万个代理来找出最适合用来回答问题的代理。因此,它是非常慢的。为了解决这个问题,LlamaIndex 将当前版本升级到另一个版本,该版本基本上是在文档(工具)检索期间重新排名代理可以用来规划的查询规划工具。

仅当设计的 RAG 系统以路由器为中心时,否则,ReAct 代理或多代理是更好的方法。

Cross-Encoder微调

简而言之,Bi-Encoder 就是使用双编码器,将句子 A 和句子 B 转换为句子Embedding A1 和句子Embedding B1。然后可以使用余弦相似度来比较这些句子Embedding。

在这里插入图片描述

相反,对于交叉编码器,我们将两个句子同时传递到 Transformer 网络。它产生一个介于 0 和 1 之间的输出值,表示输入句子对的相似度

交叉编码器不会产生句子Embedding。此外,我们无法将单个句子传递给交叉编码器。

交叉编码器比双编码器具有更好的性能。然而,对于许多应用来说,它们并不实用,因为它们不产生Embedding,我们可以使用余弦相似度进行索引或有效比较。

图片

交叉编码器比双编码器具有更高的性能,但是,它们对于大型数据集的扩展性不佳。在这里,结合交叉编码器和双向编码器是有意义的,例如在信息检索/语义搜索场景中:首先,使用高效的双向编码器来检索查询的前 100 个最相似的句子。然后,使用交叉编码器通过计算每个(查询、命中)组合的分数来重新排名这 100 个命中。

微调LLM

因此,已经完成了Embedding的微调,如上所述,微调Embedding有助于提高数据检索的准确性。如果是这样,我们是否需要对LLM进行微调?

因为并非每次都需要 RAG。开发功能齐全的 RAG 每一步都很复杂。拥有一个好的RAG应用程序需要一个由优秀的软件工程师组成的团队来开发前端和可扩展的后端,优秀的数据工程师来处理用于开发RAG的数据管道和多个数据库,一些优秀的机器学习工程师+数据科学家开发模型并对文本块、Embedding性能、良好的数据检索方法进行实验,然后合成数据、路由器、代理等。更不用说将需要良好的 MLOps 来监控 RAG 的性能。

如果可以通过在新数据上逐步微调 LLM 来简化所有这些方法,会怎么样?使其成为 ChatGPT,但根据自己的数据进行微调。会更容易吗?

大多数LLM/RAG以PoC为主。它可以处理小数据集并在非常特定的情况下处理得很好,但很难扩展或处理现实生活中的用例。

但我们假设有资金定期调整LLM课程。我们该怎么做呢?

LlamaIndex 有多种选项可以帮助微调的LLM。主要目的是改进较小模型以超越较大参数规模模型。假设 GPT-4 对你的应用程序来说非常好,但它会让公司破产,因为它很昂贵。GPT-3.5 更便宜,性能也可以接受,但希望 GPT-4 的性能让的客户满意。那么你可能会想到微调LLM。

为什么要微调LLM

如前所述,微调不仅可以提高基本模型的性能,而且较小(微调)的模型通常可以在训练它的任务集上胜过较大(更昂贵)的模型。OpenAI 通过其第一代“InstructGPT”模型证明了这一点,其中 1.3B 参数 InstructGPT 模型补全优于 175B 参数 GPT-3 基本模型,尽管其尺寸要小 100 倍。

其中一大问题是LLM的背景知识是有限的。因此,该模型可能在需要大量知识库或特定领域信息的任务上表现不佳。微调模型可以通过在微调过程中“学习”这些信息,或者换句话说,使用最新数据更新模型来避免此问题。GPT-4 仅拥有 2023年3月之前的知识。微调 LLM 将使用的私人数据更新模型并减少幻觉,也不需要 RAG,因为微调 LLM 已经更新了的数据。

改进 RAG 很困难,有多个步骤,根据我的经验,可以显着改进 RAG 的最重要步骤是文本块和Embedding。因此,微调Embedding模型是必要的(但是不是必须的)步骤。此外,微调LLM将更新现有LLM的行为,从而减少响应中的幻觉并提供更好的综合答案。

如何学习大模型

现在社会上大模型越来越普及了,已经有很多人都想往这里面扎,但是却找不到适合的方法去学习。

作为一名资深码农,初入大模型时也吃了很多亏,踩了无数坑。现在我想把我的经验和知识分享给你们,帮助你们学习AI大模型,能够解决你们学习中的困难。

我已将重要的AI大模型资料包括市面上AI大模型各大白皮书、AGI大模型系统学习路线、AI大模型视频教程、实战学习,等录播视频免费分享出来,需要的小伙伴可以扫取。

一、AGI大模型系统学习路线

很多人学习大模型的时候没有方向,东学一点西学一点,像只无头苍蝇乱撞,我下面分享的这个学习路线希望能够帮助到你们学习AI大模型。

在这里插入图片描述

二、AI大模型视频教程

在这里插入图片描述

三、AI大模型各大学习书籍

在这里插入图片描述

四、AI大模型各大场景实战案例

在这里插入图片描述

五、结束语

学习AI大模型是当前科技发展的趋势,它不仅能够为我们提供更多的机会和挑战,还能够让我们更好地理解和应用人工智能技术。通过学习AI大模型,我们可以深入了解深度学习、神经网络等核心概念,并将其应用于自然语言处理、计算机视觉、语音识别等领域。同时,掌握AI大模型还能够为我们的职业发展增添竞争力,成为未来技术领域的领导者。

再者,学习AI大模型也能为我们自己创造更多的价值,提供更多的岗位以及副业创收,让自己的生活更上一层楼。

因此,学习AI大模型是一项有前景且值得投入的时间和精力的重要选择。

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

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

相关文章

​​Vitis HLS 学习笔记--添加 RTL 黑盒函数

目录 1. 简介 2. 用法详解 2.1 需要的文件 2.1.1 RTL 函数签名 2.1.2 黑盒 JSON 描述文件 2.1.3 RTL IP 文件 2.2 操作步骤 3. 总结 1. 简介 Vitis HLS 工具可以将现有的 Verilog RTL IP(即硬件描述语言编写的模块)集成到 C/C HLS 项目中。通过…

短剧分销小程序:影视产业链中的新兴力量

一、引言 在数字化浪潮的推动下,影视产业正迎来一场深刻的变革。短剧分销小程序作为这场变革中的新兴力量,正以其独特的魅力和价值,逐渐在影视产业链中崭露头角。本文将探讨短剧分销小程序在影视产业链中的新兴地位、其带来的变革以及未来的…

Transformer系列:图文详解Decoder解码器原理

从本节开始本系列将对Transformer的Decoder解码器进行深入分析。 内容摘要 Encoder-Decoder框架简介shifted right移位训练解码器的并行训练和串行预测解码器自注意力层和掩码解码器交互注意力层和掩码解码器输出和损失函数 Encoder-Decoder框架简介 在原论文中Transformer用…

LeetCode-2779. 数组的最大美丽值【数组 二分查找 排序 滑动窗口】

LeetCode-2779. 数组的最大美丽值【数组 二分查找 排序 滑动窗口】 题目描述:解题思路一:滑动窗口与排序解题思路二:0解题思路三:0 题目描述: 给你一个下标从 0 开始的整数数组 nums 和一个 非负 整数 k 。 在一步操…

【嵌入式】一种优雅的 bootloader 跳转APP 的方式

【嵌入式】一种优雅的 bootloader 跳转APP 的方式 0. 个人简介 && 授权须知1. 前言2. 干净的跳转3.程序的 noinit 段4. 利用noinit段实现优雅的跳转4.1 检查栈顶地址是否合法4.2 栈顶地址 44.3 __set_MSP 5.OTA 过后的运行逻辑 0. 个人简介 && 授权须知 &#…

MongoDB 多层级查询

多层级查询 注意&#xff1a;要注意代码顺序 查询层级数据代码放前面&#xff0c;查询条件放后面 if (StringUtils.isBlank(params.getDocType())) {params.setDocType(DOC_TDCTYPE);}String docName mapper.findByDocInfo(params.getDocType());List<ExpertApprovalOpin…

怎么把Rmvb改成mp4格式?把rmvb改成MP4格式的四种方法

怎么把Rmvb改成mp4格式&#xff1f;在当今的数字时代&#xff0c;视频文件格式的多样性给我们带来了巨大的便利&#xff0c;但也可能带来一些兼容性的问题。rmvb是一种曾经非常流行的视频文件格式&#xff0c;主要由于其较高的压缩效率和相对不错的画质。然而&#xff0c;随着技…

计算机组成原理学习 Part 1

计算机系统 组成 计算机系统 { 硬件 计算机的实体&#xff0c;如主机、外设等 软件 由具有各类特殊功能的信息&#xff08;程序&#xff09;组成 计算机系统 \begin{cases} 硬件 &\text 计算机的实体&#xff0c;如主机、外设等\\ 软件 &\text 由具有各类特殊功能的信…

把Vue项目从Window系统迁移到Mac系统的方案

不能启动vue ui 直接运行&#xff0c;会报错如下&#xff1a; failed to load config from /Users/xiaochen/IdeaProjects/ChatViewer-frontend/vite.config.tserror when starting dev server: Error: You installed esbuild for another platform than the one youre curre…

宝藏速成秘籍(6)归并排序法

一、前言 1.1、概念 归并排序&#xff08;Merge Sort&#xff09;是一种基于分治思想的排序算法。它将数组分成两个子数组&#xff0c;分别对这两个子数组进行排序&#xff0c;然后再将它们合并成一个有序的数组。归并排序是一种经典的分治算法&#xff0c;它的核心思想是将待…

探索交互设计:五大关键维度全面剖析

交互式设计是用户体验&#xff08;UX&#xff09;设计的重要组成部分。在本文中&#xff0c;我将向大家解释什么是交互设计并简要描述交互设计师通常每天都做什么。 一、什么是交互设计 交互式设计用简单的术语来理解就是用户和产品之间的交互。在大多数情况下&#xff0c;当…

详解MySQL中的PERCENT_RANK函数

目录 1. 引入1. 基本使用2&#xff1a;分组使用3&#xff1a;处理重复值4. 使用优势4.1 手动计算百分等级4.2 使用 PERCENT_RANK 的优势4.3 使用 PERCENT_RANK 5. 总结 在 MySQL 中&#xff0c;PERCENT_RANK 函数用于计算一个值在其分组中的百分等级。 它的返回值范围是从 0 …

【LLM】吴恩达『微调大模型』课程完全笔记

Finetuning Large Language Models 版权说明&#xff1a; 『Finetuning Large Language Models』是DeepLearning.AI出品的免费课程&#xff0c;版权属于DeepLearning.AI(https://www.deeplearning.ai/)。 本文是对该课程内容的翻译整理&#xff0c;只作为教育用途&#xff0c;不…

会声会影封面图怎么设置 会声会影渲染封面如何固定 会声会影视频剪辑软件制作教程

使用会声会影剪辑完成过后&#xff0c;通常我们需要给我们的视频设置封面&#xff0c;渲染封面又需要进行固定。本文将围绕会声会影封面图怎么设置和会声会影渲染封面如何固定来进行介绍。 一、会声会影封面图怎么设置 会声会影不能随意自定义设置封面&#xff0c;默认情况下…

中国姓名学十大权威专家颜廷利:全国排名第一的起名大师

颜廷利教授,是济南市历城区唐王镇的名人,位居2023年中国当代十大国学大师排行榜之首。全国排名第一的起名大师颜廷利教授以其深厚的学术造诣和卓越的贡献赢得了名誉和尊重,成为当代国学界的翘楚。他从事国学研究已有数十年,对经史子集的研究融会贯通,展现出了非凡的学术造诣。中…

Navicate操作某一张表后,卡主,无法加载,也无法编辑,更无法读取

说明 Navicate操作某一张表后&#xff0c;卡主&#xff0c;无法加载&#xff0c;也无法编辑&#xff0c;更无法读取&#xff0c;遇到这种情况&#xff0c;一般是因为表被锁住了 解决方案 右击数据库&#xff0c;打开命令号界面 查看进程列表 SHOW PROCESSLIST;mysql> …

FreeRTOS:4.内存管理

FreeRTOS内存管理 目录 FreeRTOS内存管理1. 为什么不直接使用C库函数的malloc和free函数2. FreeRTOS的五种内存管理方式3. heap4源码分析3.1 堆内存池3.2 内存块的链表数据结构3.3 堆的初始化3.4 堆的内存分配3.5 堆的内存释放 4. 总结 1. 为什么不直接使用C库函数的malloc和fr…

LIMS(实验室)信息管理系统源码、有哪些应用领域?采用C# ASP.NET dotnet 3.5 开发的一套实验室信息系统源码

LIMS&#xff08;实验室&#xff09;信息管理系统源码、有哪些应用领域&#xff1f;采用C# ASP.NET dotnet 3.5 开发的一套实验室信息系统源码 LIMS实验室信息管理系统&#xff0c;是一种基于计算机硬件和数据库技术&#xff0c;集多个功能模块为一体的信息管理系统。该系统主…

利用钉钉机器人和PHP开发一款免费的网站可用性检测工具,单节点版

前言 手里有几套系统正在运维&#xff0c;需要保障正常运行&#xff0c;所以可用性检测就必不可少啦&#xff0c; 以前本来是用的阿里官方的云监控&#xff0c;但现在价格感觉太贵了&#xff0c;不划算 那就自己手搓一个简易版的监控吧。 成品效果展示 代码展示 <?php …

2024年哪4种编程语言最值得学习?看JetBrains报告

六个月前,编程工具界的大牛JetBrains发布了他们的全球开发者年度报告。 小吾从这份报告中挑出了关于全球程序员过去一年使用编程语言的情况和未来的采纳趋势,总结出2024年最值得学习的四种编程语言。一起来看看吧。 JetBrains在2023年中开始,就向全球的编程达人们发出了问卷…