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

微软最新研究成果:使用GPT-4合成数据来训练AI模型,实现SOTA!

文本嵌入是各项NLP任务的基础,用于将自然语言转换为向量表示。现有的大部分方法通常采用复杂的多阶段训练流程,先在大规模数据上训练,再在小规模标注数据上微调。此过程依赖于手动收集数据制作正负样本对,缺乏任务的多样性和语言多样性。

此外,大部分方法采用BERT作为编码器,如非常经典的Sentence-BERT和SimCSE通过在推理数据集上对BERT进行微调学习文本嵌入。

但现在LLMs技术发展得如火如荼,能否用LLMs来克服现有方法的限制,升级文本嵌入方法呢?

当然可以!

最近,微软发布了一种新颖的文本嵌入方法,使用专有的LLMs为93种语言中各种文本嵌入任务生成合成数据,并且涉及了多个任务场景。

微软使用了Mistral-7B对合成数据和标记数据进行混合训练,**成功登顶Huggingface排行榜,比之前的方法高2%**。

图片

论文标题:
Improving Text Embeddings with Large Language Models

论文链接:
https://arxiv.org/pdf/2401.00368.pdf

模型:
https://huggingface.co/intfloat/e5-mistral-7b-instruct

数据
https://huggingface.co/datasets/andersonbcdefg/synthetic_retrieval_tasks

方法

合成数据生成

作者使用GPT-4集思广益产生一系列潜在的检索任务,然后为每个任务生成(查询,正例,困难反例)三元组,如下图所示。

图片

为了生成多样化的合成数据,作者提出了一个简单的分类法,将嵌入任务分为几个组,并针对每个组应用不同的提示模板:

非对称任务:包括查询和文档在语义上相关但并不是互相改写的任务。根据查询和文档的长度,进一步分为四个子组:短-长匹配、长-短匹配、短-短匹配和长-长匹配。短-长匹配任务涉及短查询和长文档,是商业搜索引擎中的典型情况。

对称任务:涉及具有相似语义但表面形式不同的查询和文档。包括单语语义文本相似性(STS)和双语检索。

训练

给定一个相关的查询-文档配对(,),将以下指令模板应用于原始查询,生成一个新的查询 :

其中,嵌入任务的一句话描述的占位符。

给定一个预训练的LLM,将[EOS]标记附加到查询和文档的末尾,然后将它们输入LLM,通过获取最后一层的[EOS]向量来获得查询和文档的嵌入()。

为了训练嵌入模型,采用了标准的InfoNCE损失函数L,使用批内负样本和困难负样本进行计算。

图片

其中计算查询q和文档d之间匹配分数的函数,本文采用温度缩放余弦相似度函数,是温度超参,在本实验中设为0.02。

图片

实验

合成数据统计

本文一共生成了500k个示例,其中包含150k个独特指令。25%由GPT-3.5-Turbo生成,其余由GPT-4生成。总的token消耗约为180M。主要语言为英语,覆盖了共计93种语言。对于75种低资源语言,平均每种语言约有1k个示例。

图片

模型微调与评估

模型选用Mistral-7b进行1个epoch微调,评估基准选用MTEB基准测试。

训练数据:利用生成的合成数据和包含13个公共数据集的集合, 在采样后得到约180万个样例。为了与一些先前的工作进行公平比较,还报告了仅有标签监督的MS-MARCO数据集的结果。

主要结果

图片

▲表1

如上表所示,本文提出的模型“E5mistral-7b + full data”在MTEB基准测试中获得了最高的平均得分,比之前的最先进模型高出2.4个点

在“仅使用合成数据”的设置中,没有使用标记数据进行训练,其性能仍然相当有竞争力。生成式语言建模和文本嵌入都需要模型对自然语言有深刻的理解,。基于嵌入任务定义,一种真正强大的轻量级模型应该能够自动生成训练数据,然后通过轻量级微调转换为嵌入模型。

图片

▲表2

在表2中,作者还对几个商业文本嵌入模型进行了比较。然而,由于这些模型缺乏透明度和文档说明,不可能做到完全公平的比较。作者主要关注BEIR基准测试的检索性能,因为RAG是未来LLMs应用的重要趋势之一。正如表2所示,本文的模型在性能上明显优于当前的商业模型。

多语言检索

为了评估模型的多语言能力,作者在包含18种语言的MIRACL数据集上进行了评估。该数据集包括人工注释的查询和相关性判断。

图片

▲表3

如表3所示,该模型在高资源语言特别是英语上超过mE5large。对于低资源语言,本文的模型仍然不够优秀。这是因为Mistral-7B主要预训练于英语数据,未来将可以使用多语言LLM弥合这一差距。

除此之外,作者还探讨分析了几个问题。

分析

1. 对比预训练真的重要吗?

弱监督对比性预训练是现有文本嵌入模型取得成功的关键因素之一。例如,将随机裁剪的片段作为预训练的正样本对待,或者从各种来源收集并筛选文本对。

那么对于LLMs而言,对比预训练还有用吗?

图片

如上图所示,对比预训练有益于XLM-Rlarge,在相同数据上微调时,其检索性能提高了8.2个点,与之前的研究结果一致。

然而,对于基于Mistral-7B的模型,对比预训练对模型质量几乎没有影响。这意味着广泛的自回归预训练使LLMs能够获取良好的文本表示,只需要进行最少限度的微调即可将其转化为有效的嵌入模型,而无需对比预训练。

个性化密码检索

为了评估模型的长上下文能力,作者引入了一项新的合成任务——个性化密码检索,如下图所示,包含多个文件,每个文件都有一个独特的人名和一个随机的密码,插入在随机的位置。任务是从100个候选项中找回包含给定个人密码的文件。通过这个过程测试模型将长上下文中的密码信息编码到嵌入中的能力。

图片

作者通过改变滑动窗口大小和RoPE旋转基,比较了不同变体的性能。

图片

  • 结果表明,默认配置下,使用4k滑动窗口在4k个token内达到了100%的准确率,但随着上下文长度的增加,准确率迅速下降。

  • 将滑动窗口大小天真地扩展到32k会导致更差的性能。

  • 通过将RoPE旋转基准更改为,模型可以在32k个标记内实现超过90%的准确率。但在短上下文不太适用。

结论

这篇工作证明了通过LLMs技术,文本嵌入的质量可以得到显著提升。 研究人员使用了专有的LLMs(如GPT-4),在多种语言环境下生成了多样化的合成数据,并结合Mistral模型强大的语言理解能力,在竞争激烈的MTEB基准测试中取得了SOTA。与现有的多阶段方法相比,既简单又高效,不再需要中间预训练的环节。

用网友的话说就是“Amazing Amazing Amazing!”,省去了人工采集数据的繁琐步骤,每个人都可以轻松地生成自己的数据集,并训练强大的嵌入模型。 语义检索模型不给力导致生成模型性能受影响的局面,总算有希望翻篇儿了!

相关文章:

微软最新研究成果:使用GPT-4合成数据来训练AI模型,实现SOTA!

文本嵌入是各项NLP任务的基础,用于将自然语言转换为向量表示。现有的大部分方法通常采用复杂的多阶段训练流程,先在大规模数据上训练,再在小规模标注数据上微调。此过程依赖于手动收集数据制作正负样本对,缺乏任务的多样性和语言多…...

爬虫案例—抓取小米商店应用

爬虫案例—抓取小米商店应用 代码如下: # 抓取第一页的内容 import requests from lxml import etree url ‘https://app.mi.com/catTopList/0?page1’ headers { ‘User-Agent’: ‘Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (K…...

geemap学习笔记047:边缘检测

前言 边缘检测适用于众多的图像处理任务,除了上一节[[geemap046:线性卷积–低通滤波器和拉普拉斯算子|线性卷积]]中描述的边缘检测核之外,Earth Engine 中还有几种专门的边缘检测算法。其中Canny 边缘检测算法使用四个独立的滤波器来识别对角…...

《Git学习笔记:IDEA整合Git》

在IDEA中集成Git去使用 通过Git命令可以完成Git相关操作,为了简化操作过程,我们可以在IDEA中配置Git,配置好后就可以在IDEA中通过图形化的方式来操作Git。 在IDEA开发工具中可以集成Git: 集成后在IDEA中可以看到Git相关图标&…...

Scipy 高级教程——统计学

Python Scipy 高级教程:统计学 Scipy 提供了强大的统计学工具,用于描述、分析和推断数据的分布和性质。本篇博客将深入介绍 Scipy 中的统计学功能,并通过实例演示如何应用这些工具。 1. 描述性统计 描述性统计是统计学中最基本的任务之一&…...

《向量数据库指南》RAG 应用中的指代消解——解决方案初探

随着 ChatGPT 等大语言模型(LLM)的不断发展,越来越多的研究人员开始关注语言模型的应用。 其中,检索增强生成(Retrieval-augmented generation,RAG)是一种针对知识密集型 NLP 任务的生成方法,它通过在生成过…...

CSS 一行三列布局,可换行(含grid网格布局、flex弹性布局/inline-block布局 + 伪类选择器)

效果 一、HTML <div class"num-wrap"><div class"num-item" v-for"num in 8" :key"num">{{ num }}</div></div> 二、CSS 1、grid网格布局&#xff08;推荐&#xff09; .num-wrap {// grid网格布局display…...

class_3:lambda表达式

1、lambda表达式是c11引入的一种匿名函数的方式&#xff0c;它允许你在需要函数的地方内联的定义函数&#xff0c;而无需单独命名函数&#xff1b; #include <iostream>using namespace std;bool compare(int a,int b) {return a > b; }int getMax(int a,int b,bool (…...

Hadoop 实战 | 词频统计WordCount

词频统计 通过分析大量文本数据中的词频&#xff0c;可以识别常见词汇和短语&#xff0c;从而抽取文本的关键信息和概要&#xff0c;有助于识别文本中频繁出现的关键词&#xff0c;这对于理解文本内容和主题非常关键。同时&#xff0c;通过分析词在文本中的相对频率&#xff0…...

SpringCloud.04.熔断器Hystrix( Spring Cloud Alibaba 熔断(Sentinel))

目录 熔断器概述 使用Sentinel工具 什么是Sentinel 微服务集成Sentinel 配置provider文件&#xff0c;在里面加入有关控制台的配置 实现一个接口的限流 基本概念 重要功能 Sentinel规则 流控规则 简单配置 配置流控模式 配置流控效果 降级规则 SentinelResource…...

python 八大排序_python-打基础-八大排序

## 排序篇 #### 二路归并排序 - 介绍 - 归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。归并排序是一种稳定的排序方法。将已有序的子序列合并&#xff0c;得到完全有序的序列&#xff1b;即先使每个子序列…...

运维知识点-Sqlite

Sqlite 引入 依赖 引入 依赖 <dependency><groupId>org.xerial</groupId><artifactId>sqlite-jdbc</artifactId><version>3.36.0.3</version></dependency>import javafx.scene.control.Alert; import java.sql.*;public clas…...

我为什么要写RocketMQ消息中间件实战派上下册这本书?

我与RocketMQ结识于2018年&#xff0c;那个时候RocketMQ还不是Apache的顶级项目&#xff0c;并且我还在自己的公司做过RocketMQ的技术分享&#xff0c;并且它的布道和推广&#xff0c;还是在之前的首席架构师的带领下去做的&#xff0c;并且之前有一个技术神经质的人&#xff0…...

24校招,Moka测试开发工程师一面

前言 大家好&#xff0c;今天回顾一下楼主当时参加moka测试开发工程师的面试 对其中一些重要问题&#xff0c;我也给出了相应的答案 过程 自我介绍挑一个项目&#xff0c;详细介绍你在其中担任的职责如何安排工作的&#xff0c;有什么成果&#xff1f;回归测试如何设计&…...

Docker(网络,网络通信,资源控制,数据管理,CPU优化,端口映射,容器互联)

目录 docker网络 网络实现原理 网络实现实例 网络模式 查看Docker中的网络列表&#xff1a; 指定容器网络模式 模式详解 Host模式&#xff08;主机模式&#xff09;&#xff1a; Container模式&#xff08;容器模式&#xff09;&#xff1a; None模式&#xff08;无网…...

开发实践5_project

要求&#xff1a; &#xff08;对作业要求的"Student"稍作了变换&#xff0c;表单名称为“Index”。&#xff09;获得后台 Index 数据&#xff0c;作展示&#xff0c;要求使用分页器&#xff0c;包含上一页、下一页、当前页/总页。 结果&#xff1a; ① preparatio…...

蓝桥杯准备

书籍获取&#xff1a;Z-Library – 世界上最大的电子图书馆。自由访问知识和文化。 (zlibrary-east.se) 书评&#xff1a;(豆瓣) (douban.com) 一、观千曲而后晓声 别人常说蓝桥杯拿奖很简单&#xff0c;但是拿奖是一回事&#xff0c;拿什么奖又是一回事。况且&#xff0c;如果…...

AtCoder Beginner Contest 336 A-E 题解

比赛链接&#xff1a;https://atcoder.jp/contests/abc336比赛时间&#xff1a;2024 年 1 月 14 日 20:00-21:40 A题&#xff1a;Long Loong 标签&#xff1a;模拟题意&#xff1a;给定一个 n n n&#xff0c;输出 L L L、 n n n个 o o o和 n g ng ng。题解&#xff1a;按题意…...

node各个版本的下载地址

下载地址&#xff1a; https://nodejs.org/dist/ 可以下载多个版本&#xff0c;使用nvm控制切换&#xff08;需要先安装nvm再安装node&#xff09; nvm下载地址&#xff08;访问的是github&#xff0c;请科学上网&#xff0c;下载后解压安装exe即可&#xff09;&#xff1a;h…...

JVM实战(17)——模拟对象晋升

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 学习必须往深处挖&…...

3步解决Windows驱动臃肿难题:DriverStore Explorer让系统空间释放效率提升80%

3步解决Windows驱动臃肿难题&#xff1a;DriverStore Explorer让系统空间释放效率提升80% 【免费下载链接】DriverStoreExplorer Driver Store Explorer [RAPR] 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 诊断系统存储异常 "为什么我的C盘…...

告别定位漂移:用Python手把手实现GNSS载波相位平滑伪距(附代码)

告别定位漂移&#xff1a;用Python手把手实现GNSS载波相位平滑伪距&#xff08;附代码&#xff09; 在无人机自主飞行或自动驾驶小车导航时&#xff0c;你是否遇到过这样的困扰&#xff1a;明明设备静止不动&#xff0c;地图上的定位点却像喝醉酒一样左右摇摆&#xff1f;这种&…...

节水灌溉物联网监控管理系统方案

对于部分水资源匮乏的地区&#xff0c;节水灌溉系统的应用对农业发展具有重要意义。该系统通过实时监测农田土壤湿度和气象条件&#xff0c;结合预设的灌溉计划和作物生长需求&#xff0c;精准控制灌溉设备的开启或关闭&#xff0c;有效避免了水资源浪费&#xff0c;显著提高了…...

MGeo门址解析应用场景:房产中介平台房源地址自动标准化与GIS热力图生成

MGeo门址解析应用场景&#xff1a;房产中介平台房源地址自动标准化与GIS热力图生成 1. 引言&#xff1a;房产中介的地址之痛 想象一下&#xff0c;你是一家房产中介公司的运营人员。每天&#xff0c;你的同事和合作方会通过各种渠道收集到成百上千条房源信息&#xff1a;有的…...

手指划过屏幕放大模型界面,环氧树脂层和纤维基体在激光路径下呈现出清晰的物理场分布。突然发现这个双层材料烧蚀模型跑得格外顺畅——看来前几天通宵调参没白费

comsol激光清洗、烧蚀双层材料 表面一层50μm厚度的环氧树脂(可更换成其他材料)&#xff0c;基体材料为纤维材料。 添加功率为13W的激光进行清洗或烧蚀 模型非常成功、角度选择很奈斯在COMSOL里建模时有个小细节特别关键&#xff1a;把环氧树脂层的厚度参数设为全局变量。别小看…...

translategemma-27b-it部署指南:Ollama模型缓存管理与多版本切换实践

translategemma-27b-it部署指南&#xff1a;Ollama模型缓存管理与多版本切换实践 你是不是也遇到过这样的烦恼&#xff1a;好不容易在Ollama上部署了一个大模型&#xff0c;用了一段时间想试试新版本&#xff0c;结果发现硬盘空间告急&#xff0c;或者不知道旧版本模型文件藏在…...

告别无脑抄payload:手把手教你分析RCE-labs靶场PHP源码,自己构造利用链

从源码审计到漏洞利用&#xff1a;深度解析RCE靶场中的PHP代码逻辑 在安全研究领域&#xff0c;真正区分新手与专家的关键能力&#xff0c;往往不是掌握多少现成的攻击载荷&#xff08;payload&#xff09;&#xff0c;而是能否通过源码审计独立发现漏洞并构造利用链。本文将带…...

Nanbeige 4.1-3B赋能微信小程序:打造智能客服对话机器人

Nanbeige 4.1-3B赋能微信小程序&#xff1a;打造智能客服对话机器人 最近在帮一个做电商的朋友琢磨怎么优化他们的客服系统。他们每天要处理大量重复的咨询&#xff0c;比如“什么时候发货”、“怎么退换货”&#xff0c;人工客服忙得团团转&#xff0c;用户还得排队等。这让我…...

SecGPT-14B部署教程:模型热更新机制设计,不中断服务切换安全知识版本

SecGPT-14B部署教程&#xff1a;模型热更新机制设计&#xff0c;不中断服务切换安全知识版本 1. SecGPT-14B简介 SecGPT是由云起无垠推出的开源大语言模型&#xff0c;专门针对网络安全领域设计。这个模型融合了自然语言理解、代码生成和安全知识推理等核心能力&#xff0c;能…...

别再折腾虚拟机了!用Docker 5分钟搞定Oracle 10g测试环境(附阿里云镜像源)

5分钟极速部署Oracle 10g&#xff1a;Docker化开发环境实战指南 每次需要搭建Oracle测试环境时&#xff0c;你是否也经历过这样的痛苦&#xff1f;下载几个GB的安装包、配置复杂的系统参数、等待漫长的安装过程&#xff0c;最后可能还会遇到各种依赖问题。作为一名长期与Oracle…...