当前位置: 首页 > news >正文

Azure OpenAI检索增强微调:使用 GPT-4o 对 GPT-4o mini 进行微调,以适应特定领域的应用

定制是关键! 

 

生成式人工智能对企业最有影响力的应用之一是创建自然语言界面,这些界面经过定制,可以使用特定领域和用例数据来提供更好、更准确的响应。这意味着回答有关特定领域的问题,例如银行、法律和医疗领域。  

我们经常谈论实现这一目标的两种方法: 

 

  1. 检索增强生成 (RAG):将这些文档存储在向量数据库中,并在查询时根据它们与问题的语义相似性检索文档,然后将它们用作 LLM 的上下文。
  2. 监督微调 (SFT):根据代表特定领域知识的一组提示和响应来训练现有的基础模型。 
     

虽然大多数尝试使用 RAG 的组织都希望利用其内部知识库来扩展 LLM 的知识,但许多组织如果不进行重大优化就无法实现预期结果。同样,整理足够大且高质量的数据集以进行微调也是一项挑战。这两种方法都有局限性:微调将模型限制在其训练数据中,使其容易受到近似和幻觉的影响,而 RAG 为模型奠定了基础,但仅根据文档与查询的语义接近度来检索文档——这可能不相关,并且可能导致推理不充分的答案。 

 

参考链接:
微软 Azure OpenAI 试用申请

RAFT 来救援! 

博客文章缩略图 1,标题为“检索增强微调:使用 GPT-4o 对 GPT-4o mini 进行微调,以适应特定领域的应用”

 

我们可以结合使用 RAG微调,而不是只选择其中一种!将 RAG 视为一场开卷考试:模型查找相关文档来生成答案。微调就像一场闭卷考试:模型依赖于预先训练的知识。就像在考试中一样,最好的结果来自于学习和随手记笔记。 

 
检索感知微调 (RAFT) 是一种强大的技术,可用于为特定领域的开放式设置(例如域内 RAG)准备微调数据。它改变了语言模型的格局,结合了 RAG 和微调的最佳部分。RAFT 通过提高模型理解和使用特定领域知识的能力,帮助模型针对特定领域进行量身定制。它是 RAG 和特定领域的 SFT 之间的最佳结合点。 

 

它是如何工作的? 

 

RAFT 分为三个步骤:  

  1. 准备数据集来教模型如何回答有关您的领域的问题。
  2. 使用准备好的数据集对模型进行微调  
  3. 评估新的、定制的、领域适应模型的质量 

RAFT 的关键在于训练数据生成,其中每个数据点都包含一个问题 (Q)、一组文档 (Dk) 和一个思路链式答案 (A)。文档分为包含答案的 Oracle 文档 (Do) 和不包含答案的干扰文档 (Di)。微调教会模型区分这些文档,从而生成一个自定义模型,该模型的表现优于仅使用 RAG 或微调的原始模型。我们使用 GPT-4o 生成训练数据并微调 GPT-4o mini,从而根据您的用例量身定制经济高效、速度更快的模型。这种称为蒸馏的技术使用 GPT-4o 作为教师模型,使用 4o-mini 作为学生模型。 
 
 
 
 
 

在本博客的下一部分中,我们将开始实践。如果您想自己跟进,或查看参考代码,请查看https://aka.ms/aoai-raft-workshop。我们将为银行用例创建一个领域适配模型,该模型能够回答有关银行在线工具和账户的问题。  

 

笔记本 1- 生成 RAFT 训练数据 

 

首先收集特定领域的文档;在我们的示例中,这些是银行文档的 PDF。为了生成我们的训练数据,我们将 PDFS 转换为 markdown 文本格式。该文档为 PDF 格式,包含许多表格和图表,我们将使用 GPT-4o 将页面内容转换为 markdown。我们使用 Azure OpenAI GPT 4o 将所有这些信息提取到 Markdown 文件中,以用于下游处理。然后,我们使用 GPT-4o(我们的教师模型)生成合成的“问题-文档-答案”三元组,包括“黄金文档”(高度相关)和“干扰项”(误导)的示例。这将确保模型学会区分相关信息和不相关信息。RAFT利用思维链 (CoT) 过程,通过集成 CoT RAFT 过程提高了模型提取信息和执行逻辑推理的能力。这种方法有助于防止过度拟合并增强训练鲁棒性,使其对于需要详细和结构化思维的任务特别有效 

 
然后,我们将这些数据格式化以进行微调,将其分为训练集、验证集和测试集。验证集用于训练,测试集用于最后测量性能。 

 

笔记本2-RAFT微调  

 

现在是时候教我们的学生了!准备好训练和验证数据后,下一步是将这些数据上传到 Azure OpenAI 并创建微调作业。这非常简单:在 AI Studio 中,选择您的模型、上传您的训练和验证数据以及设置您的训练参数只需点击几下即可。我们将选择 4o-mini 作为我们的学生模型进行训练。 在实验室中,我们将向您展示如何使用 SDK 上传和触发微调作业。UI 使其成为一种简单的实验方式,而 SDK 方法是生产化和启用 llmops 策略以在生产中部署的首选方式。

 

博客文章缩略图 2,标题为“检索增强微调:使用 GPT-4o 对 GPT-4o mini 进行微调,以适应特定领域的应用”

 

一旦微调作业开始运行,我们就可以监控其进度,并在完成后在 Azure OpenAI Studio 中分析微调后的模型。最后,我们使用微调后的模型创建一个新的部署,准备用于我们的专业领域任务。 

 

笔记本 3 - 我们的 RAFT 模型真的比基础模型更好吗?让我们检查一下! 

 

您可以首先查看 AI Studio 返回的内置指标,显示损失和准确度。我们希望看到准确度提高,而损失下降: 

博客文章缩略图 3,标题为“检索增强微调:使用 GPT-4o 对 GPT-4o mini 进行微调,以适应特定领域的应用”

 

但是,我们可以做更多的事情来衡量模型的质量。还记得我们一开始的测试数据集吗?这就是我们准备它的原因! 

 

虽然有很多评估选项,包括 AI Studio 评估,但在我们的示例中,我们使用开源库 RAGAS,它使用答案相关性、忠实度、答案相似性和答案正确性等指标来评估 RAG 管道。这些指标要么依靠 LLM 作为评判者,要么依靠嵌入模型来评估生成答案的质量和准确性。 

 

 

 

缩略图 4 标题为 gpt4o-mini vs gpt4o-mini-raft

gpt4o-mini 与 gpt4o-mini-raft 对比

我们可以通过调整训练参数和/或生成额外的训练数据来进一步改善模型指标。  

 

相关文章:

Azure OpenAI检索增强微调:使用 GPT-4o 对 GPT-4o mini 进行微调,以适应特定领域的应用

定制是关键! 生成式人工智能对企业最有影响力的应用之一是创建自然语言界面,这些界面经过定制,可以使用特定领域和用例数据来提供更好、更准确的响应。这意味着回答有关特定领域的问题,例如银行、法律和医疗领域。 我们经常谈…...

ISP Pipeline

系列文章目录 文章目录 系列文章目录前言一、RAW域二、RGB域三、YUV域总结 前言 一、RAW域 黑电平校正(BLC)数字增益调整(DGain)自动白平衡(AWB)局部色调映射(LTM)坏点修复&#xf…...

< IDE编程环境配置>

IDE编程环境配置 LIB,DLL区别 我们在写项目时会链接(调用)第3方库,或者比如在vs的解决方案solution创建项目project时,不仅可以开发可执行程序exe(可单独运行)(windows/控制台 应用…...

Golang | Leetcode Golang题解之第448题找到所有数组中消失的数字

题目&#xff1a; 题解&#xff1a; func findDisappearedNumbers(nums []int) (ans []int) {n : len(nums)for _, v : range nums {v (v - 1) % nnums[v] n}for i, v : range nums {if v < n {ans append(ans, i1)}}return }...

【Spring Boot 入门三】Spring Boot与数据库集成 - 构建数据驱动的应用

一、引言 在之前的文章中&#xff0c;我们已经对Spring Boot有了初步的认识&#xff0c;了解了如何构建第一个Spring Boot应用&#xff0c;以及如何通过配置文件来掌控应用的设置。这些知识为我们进一步探索Spring Boot与数据库的集成奠定了坚实的基础。 数据库是现代应用的核…...

Web 服务器与动态脚本语言通信的接口协议有哪些

Web 服务器与动态脚本语言通信的接口协议主要有以下几种&#xff1a; 一、FastCGI&#xff08;Fast Common Gateway Interface&#xff09; 特点&#xff1a;使用持久进程处理请求&#xff0c;减少了进程启动和关闭的开销&#xff0c;提高了性能和可扩展性。多个请求可由同一个…...

ESXI识别服务器磁盘,虚拟机显示无效

ESXI识别服务器磁盘&#xff0c;虚拟机显示无效 系统意外断电识别不到磁盘的情况下可以管理-》硬件-》搜索磁盘名称&#xff0c;选择切换直通&#xff0c;则虚拟机正常。...

【C++】 vector 迭代器失效问题

【C】 vector 迭代器失效问题 一. 迭代器失效问题分析二. 对于vector可能会导致其迭代器失效的操作有&#xff1a;1. 会引起其底层空间改变的操作&#xff0c;都有可能是迭代器失效2. 指定位置元素的删除操作--erase3. Linux下&#xff0c;g编译器对迭代器失效的检测并不是非常…...

【Spring基础3】- Spring的入门程序

目录 3-1 Spring的下载3-2 Spring的 jar 包3-3 第一个 Spring程序第一步&#xff1a;添加spring context的依赖&#xff0c;pom.xml配置如下第二步&#xff1a;添加junit依赖第三步&#xff1a;定义bean&#xff1a;User第四步&#xff1a;编写spring的配置文件&#xff1a;bea…...

golang学习笔记22-面向对象(四):接口【重要】

本节也是GO核心部分&#xff0c;很重要。 注&#xff1a;由于导包语句已经在19讲&#xff08;笔记19&#xff1a;面向对象的引入&#xff09;展示过了&#xff0c;所以这里就不展示了。 一、定义与实现 (1)接口中可以定义一组方法&#xff0c;但不需要实现&#xff0c;不需要…...

SpringBoot技术栈:打造下一代网上租赁系统

第2章 关键技术简介 2.1 Java技术 Java是一种非常常用的编程语言&#xff0c;在全球编程语言排行版上总是前三。在方兴未艾的计算机技术发展历程中&#xff0c;Java的身影无处不在&#xff0c;并且拥有旺盛的生命力。Java的跨平台能力十分强大&#xff0c;只需一次编译&#xf…...

Vue-Lecture1-Notes

渐进式框架 Vue 被称为“渐进式框架”&#xff0c;是因为它允许开发者根据项目的需求逐步引入和使用其功能&#xff0c;而不需要一次性使用整个框架。简单来说&#xff0c;Vue 提供了从简单到复杂的功能层次&#xff0c;可以灵活选择使用。 按需使用&#xff1a;Vue 的核心功能…...

网上租赁系统开发:SpringBoot实践与应用

第2章 关键技术简介 2.1 Java技术 Java是一种非常常用的编程语言&#xff0c;在全球编程语言排行版上总是前三。在方兴未艾的计算机技术发展历程中&#xff0c;Java的身影无处不在&#xff0c;并且拥有旺盛的生命力。Java的跨平台能力十分强大&#xff0c;只需一次编译&#xf…...

User-Agent在WebMagic爬虫中的重要性

对于需要从网站上抓取数据的开发者来说&#xff0c;WebMagic是一个强大的工具。它是一个简单灵活的Java爬虫框架&#xff0c;用于抓取网页数据。在爬虫技术中&#xff0c;User-Agent&#xff08;用户代理&#xff09;是一个关键的HTTP请求头&#xff0c;它告诉服务器关于客户端…...

如何解决 Docker 下载 mcr.microsoft.com 镜像慢的办法

一、介绍 MCR(Miscrosoft Container Registry) 加速器&#xff0c;助你在中国大陆急速下载 netcore 相关的 docker 镜像。二、解决办法。     1、如何使用       至少三种方法进行加速&#xff1a;         使用 docker-mcr &#xff08;推荐&#xff09;  …...

网络编程,端口号,网络字节序,udp

前面一篇我们讲了网络的基础&#xff0c;网络协议栈是什么样的&#xff0c;数据如何流动传输的&#xff1b;接下来这篇&#xff0c;我们将进行实践操作&#xff0c;真正的让数据跨网络进行传输&#xff1b; 1.网络编程储备知识 1.1 初步认识网络编程 首先我们需要知道我们的…...

Android入门

下载Android studio&#xff0c;创建第一个项目 模板可以选择empty views Activity 在这个界面可以修改&#xff0c;使用语言&#xff0c;项目名字&#xff0c;存储路径以及适用版本 完成后&#xff0c;得到一个最初始的Android 项目&#xff0c;红色标记的两个文件&#xf…...

二叉树深搜专题篇

目录 计算布尔二叉树的值 求根节点到叶节点数字之和 二叉树剪枝 验证二叉搜索树 二叉搜索树中第K小的元素 二叉树的所有路径 计算布尔二叉树的值 题目 思路 这道题其实是比较简单的&#xff0c;对二叉树来一次后序遍历即可&#xff0c;当遇到叶子结点直接返回叶子节点中…...

堆【数据结构C语言版】【 详解】

目录-笔记整理 一、思考二、堆概念与性质三、堆的构建、删除、添加1. 构建2. 删除3. 添加 四、复杂度分析4.1 时间复杂度4.2 空间复杂度 五、总结 一、思考 设计一种数据结构&#xff0c;来存放整数&#xff0c;要求三个接口&#xff1a; 1&#xff09;获取序列中的最值&#…...

初识React

在最新写需求的时候&#xff0c;我遇到了一个需求&#xff0c;这个需求改后端改的不算多&#xff0c;而且也比较简单&#xff0c;但是在改前端的时候&#xff0c;很复杂。因为我们这个项目用的是React做前端的&#xff0c;而我对于前端知识没有了解&#xff0c;所以理解很多代码…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件&#xff1a;-&#xff08;纯文本文件&#xff0c;二进制文件&#xff0c;数据格式文件&#xff09; 如文本文件、图片、程序文件等。 目录文件&#xff1a;d&#xff08;directory&#xff09; 用来存放其他文件或子目录。 设备…...

ubuntu搭建nfs服务centos挂载访问

在Ubuntu上设置NFS服务器 在Ubuntu上&#xff0c;你可以使用apt包管理器来安装NFS服务器。打开终端并运行&#xff1a; sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享&#xff0c;例如/shared&#xff1a; sudo mkdir /shared sud…...

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 笔者写过很多次这道题了&#xff0c;不想写题解了&#xff0c;大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)

服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验

一、多模态商品数据接口的技术架构 &#xff08;一&#xff09;多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如&#xff0c;当用户上传一张“蓝色连衣裙”的图片时&#xff0c;接口可自动提取图像中的颜色&#xff08;RGB值&…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序

一、开发环境准备 ​​工具安装​​&#xff1a; 下载安装DevEco Studio 4.0&#xff08;支持HarmonyOS 5&#xff09;配置HarmonyOS SDK 5.0确保Node.js版本≥14 ​​项目初始化​​&#xff1a; ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...

反射获取方法和属性

Java反射获取方法 在Java中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的机制&#xff0c;允许程序在运行时访问和操作类的内部属性和方法。通过反射&#xff0c;可以动态地创建对象、调用方法、改变属性值&#xff0c;这在很多Java框架中如Spring和Hiberna…...

Unit 1 深度强化学习简介

Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库&#xff0c;例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体&#xff0c;比如 SnowballFight、Huggy the Do…...

uniapp中使用aixos 报错

问题&#xff1a; 在uniapp中使用aixos&#xff0c;运行后报如下错误&#xff1a; AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

网络编程(UDP编程)

思维导图 UDP基础编程&#xff08;单播&#xff09; 1.流程图 服务器&#xff1a;短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...