利用LLM本身训练SoTA embedding模型

news2024/12/23 17:51:02

今天分享一篇Microsoft公司的一篇文章,Title: Improving Text Embeddings with Large Language Models:使用大语言模型改善文本嵌入。

这篇文章探索了直接利用LLM来做embedding模型,其只需要利用合成数据和少于1000次的训练步骤就能获得高质量文本表征。

该方法分为两步:

1)利用LLM生成文本embedding任务合成数据集: 利用专有的大语言模型(LLM)生成近100种语言的数十万个文本嵌入任务的多样化合成数据。

2)对比损失微调: 使用标准对比损失对开源的decoder-only LLM进行微调。

该方法特点总结如下:1)充分挖掘了大模型生成数据多样性还不错的特点,利用这个特点,可以利用LLM生成多样性比较好、类型丰富、以及多语言的文本表征模型数据集。2)相对于之前例如SimCSE等模型,需要在大量语料上继续做预训练以及微调,本文发现自回归的LLM只需少量监督数据就能获得一个非常不错的效果。3)多语言的检索能力也不错。

一、概述

Title:Improving Text Embeddings with Large Language Models
论文地址:https://arxiv.org/abs/2401.00368

1 Motivation

  • 现有的文本嵌入方法依赖于多阶段预训练和少量标注数据的微调【大量数据->弱监督预训练,少量标注数据->fine-tuning】,需要构建复杂的训练流程,且数据集通常受限于任务多样性和语言覆盖范围。
  • 本文提出了一种新的方法:利用大型语言模型生成多样化的合成数据,通过简单但有效的训练步骤改善文本嵌入的质量,特别在多种语言环境中效果非常不错。

2 Methods

省流版总结:

  1. 合成数据生成:分两步生成合成数据,第一步生成检索任务主题,第二步根据主题生成问题、正样本、负样本。其特点是生产的检索任务多样性不错、同时还可以生成多语言的数据集。
  2. 对比学习训练:利用常规的对比学习loss *InfoNCE函数训练模型,只是用合成数据,只需要1k步左右训练就能有一个不错的效果,叠加监督数据效果更佳*
2.1 利用LLM生成训练样本

通常训练embedding模型强烈依赖正负样本数据,标注成本比较高。这里本文尝试利用专有LLM(如GPT-4)生成近100种语言的多样化合成数据,用于训练embedding模型。

背景: 使用LLM合成数据,增强文本嵌入模型的多样性和鲁棒性。
方法: 设计了多种任务类型和语言的模板,通过LLM生成合成数据。
特点: 能够覆盖广泛的任务和语言类型,提高数据的多样性和质量。

1)利用LLM列举检索任务:

图片

2)针对每个任务,利用LLM按照要求生成训练样本:

图片

2.2 模型训练

图片

要点一: 需要指定任务task_definition,输入用户问题。其中合成的数据用2.1中第一步LLM生成的任务定义,其他数据集人工设置固定的模版。

要点二: 相似度计算方式为cos相似度,并结合温度系数超参数来调节具体值。

要点三: Loss函数为标准的InfoNCE函数,其惩罚了负样本,提升正样本的相似度分数。

3 Conclusion

结论1: 使用LLM生成的合成数据可以显著提升文本嵌入的性能。

结论2: 方法在多语言环境下表现良好,特别是在BEIR和MTEB基准上。

结论3: 本方法提供了一种更高效的文本嵌入训练策略,避免了复杂的多阶段训练。

4 Limitation

  1. 尽管在多种语言中表现良好,但对低资源语言的支持仍有待改进,利用LLM做文本embedding成本还比较高。
  2. 未来工作将探索使用开源LLM生成合成数据,并提高模型在长文本处理方面的效率。

二、详细内容

2.1 合成数据的统计分析

图片
结论1: 生成了500k个样例,涵盖了150k个独特指令。包括非对称任务(query和doc不对称):short-long代表query是短文本,doc为长文本,其他可以反推。另一类任务是对称任务(query和doc语义相近,但是不对等):sts代表单语言语义相似度计算、bitext代表双语言检索任务。
结论2: 生成数据中覆盖93种语言。语言多样性不错,英语占大多数,其他语言占比也不少。

2.2 模型微调与评估

图片

试验设置: 基座模型为Mistral-7b,微调方法为Lora,rank=16。

结论1: "E5mistral-7b + full data"模型在MTEB基准上超过先前最佳模型2.4分。
结论2: 使用混合数据微调的模型在MTEB基准上取得了最高平均得分。
结论3: w/synthetic data only代表仅使用合成数据训练的模型表现仍然竞争力十足。

结论4: 该方法的实验结果显示了生成语言建模和文本嵌入之间的潜在联系。

2.3 与商业闭源模型对比

图片

**结论:**在BEIR Retrieval数据集和MTEB数据集都取得了SoTa。

2.4 LLM只需要少量数据做微调即可取得比较好的效果

图片

结论一: 传统数据利用大量数据结合对比学习做无监督训练可以带来不错的提升。

结论二: 经过大量语料训练的自回归LLM模型已经不需要继续做预训练了,只需要少量的数据微调即可取得比较好的效果。

2.5 多语言任务上也非常有竞争力

图片

结论一: 高资源(数据量多)任务例如英语,效果比之前的mE5模型效果好,低资源任务效果相对mE5也非常有竞争力。

2.6 消融实验:instruction设置比较关键

图片

结论一: 基座模型选择也比较重要,选择LLaMA-2的基座模型比Mistral-7b作为基座模型差。

结论二: instruction的设置也非常重要,对最终结果的影响可能差4个点以上。

2.7 context长度对检索质量的影响:4k左右上下文文本表征都还不错,随后效果急剧下降。

图片

结论:引入了一项名为个性化密码检索的新型合成任务,此任务需要在长上下文中将密钥信息编码到嵌入中。通过更改图5中的滑动窗口大小和RoPE旋转底座来比较不同变体的性能。结果显示,带有4k滑动窗口的默认配置在4k token数达到100%的准确性,但随着上下文长度的增长,准确性会迅速下降。

三、总结

结论1:利用LLM生成的合成数据可以显著提升文本嵌入的性能。 这种方法在处理多种语言时尤其有效,能够生成高质量、多样化的合成数据。

图片
结论2:利用LLM训练Embedding模型可以非常高效。 与现有多阶段方法相比,其只需要少于1000次的训练步骤就可以拿到比较好的效果,而现有方法可能要先利用大量数据做自监督训练,然后再使用有监督数据训练,效率不高。
结论3:本文利用LLM做embedding是一个突破,但产业界还不太适用。 本文首次探索LLM做embedding,效果还不错,但模型大,推理成本也高,产业界实用性不高(bge相关模型只有400M左右,本文方法模型达到7B以上),后续可以探索LLM生成和挖掘正负样本数据,利用传统方法例如双塔+SimCSE系列等模型进行训练,然后再应用到产业界。

如何学习大模型

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

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

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

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

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

在这里插入图片描述

二、AI大模型视频教程

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

五、结束语

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

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

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

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

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

相关文章

Arthas快速入门

简介 Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类…

仓库管理系统12--供应商设置

1、添加供应商窗体 2、布局控件UI <UserControl x:Class"West.StoreMgr.View.SupplierView"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:mc"http://…

什么是机器学习,机器学习与人工智能的区别是什么(一)?

人工智能和计算机游戏领域的先驱阿瑟塞缪尔&#xff08;Arthur Samuel&#xff09;创造了 "机器学习"一词。他将机器学习定义为 “一个让计算机无需明确编程即可学习的研究领域” 。通俗地说&#xff0c;机器学习&#xff08;ML&#xff09;可以解释为根据计算机的经…

前端学习笔记(2406261):jquery使用checkbox控制页面自动刷新

文章目录 需求登录页面主页面 API用户登录login获取数据getdata 代码登录页面主页面 关于后端 需求 这是一个物联网的演示项目&#xff0c;web端能够实时显示后台数据的变化&#xff0c;其流程非常简单&#xff1a; 用户登录登录成功后显示主界面面主界面进入后自动显示数据数…

Java中的Checked Exception和Unchecked Exception的区别

在Java中&#xff0c;异常分为两大类&#xff1a;已检查异常&#xff08;Checked Exception&#xff09;和未检查异常&#xff08;Unchecked Exception&#xff09;。 已检查异常是在编译时必须被捕获或声明的异常。换句话说&#xff0c;如果你的方法可能会抛出某个已检查异常&…

古人的智慧结晶——水铳:揭秘明清时期的消防神器

明代的《奇器图说》是一本记录了当时各种奇巧机械的著作&#xff0c;而水铳则是书中记载的一项令人惊叹的发明&#xff0c;它不仅展示了古人对物理原理的深刻理解&#xff0c;更是早期消防技术的一个缩影。 水铳&#xff0c;这个名字听起来似乎有些陌生&#xff0c;但在古代&am…

Kafka~消息发送过程与ISR机制了解

消息发送过程 使用Kafka发送消息时&#xff0c;一般有两种方式分别是&#xff1a; 同步发送异步发送 同步发送时&#xff0c;可以在发送消息后&#xff0c;通过get方法等待消息结果&#xff0c;这种情况能够准确的拿到消息最终的发送结果&#xff0c;要么是成功、要么是失败…

AES加密算法及AES-CMAC原理白话版系统解析

本文框架 前言1. AES加密理论1.1 不同AES算法区别1.2 加密过程介绍1.2.1 加密模式和填充方案选择1.2.2 密钥扩展1.2.3分组处理1.2.4多轮加密1.2.4.1字节替换1.2.4.2行移位1.2.4.3列混淆1.2.4.4轮密钥加1.3 加密模式1.3.1ECB模式1.3.2CBC模式1.3.3CTR模式1.3.4CFB模式1.3.5 OFB模…

社团成员信息系统

ER实体关系图与数据库模型 DDL CREATE TABLE club (club_id int(11) NOT NULL AUTO_INCREMENT,club_name varchar(100) NOT NULL,president_name varchar(50) DEFAULT NULL,foundation_date date DEFAULT NULL,description text,PRIMARY KEY (club_id),KEY president_name (pr…

虚拟化技术(二)

目录 三、存储虚拟化&#xff08;一&#xff09;存储虚拟化的一般模型&#xff08;二&#xff09;存储虚拟化的实现方式&#xff08;三&#xff09;案例分析 四、网络虚拟化&#xff08;一&#xff09;核心层网络虚拟化&#xff08;二&#xff09;接入层网络虚拟化&#xff08;…

生成独立的zedboard+ad9361起始项目

文件分享 链接&#xff1a;https://pan.baidu.com/s/17wB_9xVWjO7HhxNvmmZyuA 提取码&#xff1a;94zz 首先下载HDL和NO-OS项目 git clone --recursive https://github.com/analogdevicesinc/hdl git clone --recursive https://github.com/analogdevicesinc/no-OS下载…

L03_Redis知识图谱

这些知识点你都掌握了吗?大家可以对着问题看下自己掌握程度如何?对于没掌握的知识点,大家自行网上搜索,都会有对应答案,本文不做知识点详细说明,只做简要文字或图示引导。 Redis 全景图 Redis 知识全景图都包括什么呢?简单来说,就是“两大维度,三大主线”。 Redis …

基于springboot实现学生用品采购系统项目【项目源码+论文说明】

基于springboot实现学生用品采购系统演示 摘要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装学生用品采购系统软…

STM32CubeMx的学习记录系列(2)- STM32G474RET6

最近有个小比赛&#xff0c;需要用到G4&#xff0c;不过找了一圈没有找到标准库的代码&#xff0c;只能使用hal&#xff0c;用CubeMX来生成配置代码。 共同特点 ARDUINO Uno V3 扩展连接器 ST morpho 扩展引脚接头&#xff0c;可完全访问所有 STM32 I/O 采用LQFP64或LQFP48封…

算法 —— 双指针

目录 移动零 复写零 快乐数 盛最多水的容器 有效三角形的个数 查找总价格为目标值的两个商品 三数之和 四数之和 移动零 下图以样例1为例&#xff0c;看下图如何做到保证非零元素相对顺序前提下&#xff0c;移动零元素。 代码实现如下&#xff1a; class Solution {…

1,Windows-本地Linux 系统(WSL)

目录 第一步电脑设置 第二步安装Ubuntu 第三文件传递 开发人员可以在 Windows 计算机上同时访问 Windows 和 Linux 的强大功能。 通过适用于 Linux 的 Windows 子系统 (WSL)&#xff0c;开发人员可以安装 Linux 发行版&#xff08;例如 Ubuntu、OpenSUSE、Kali、Debian、Arc…

如何有效保护生物医药企业隔离网数据导出的安全性?

生物医药企业的核心数据保护至关重要&#xff0c;企业为了保护内部的核心数据&#xff0c;会将网络进行物理隔离&#xff0c;将企业内⽹与外⽹隔离。⽹络隔离后&#xff0c;仍存在重要数据从内网导出至外网的隔离网数据导出需求。以下是一些需要特别保护的核心数据类型&#xf…

小米平板6系列对比

小米平板6系列目前有4款&#xff0c;分别为6、6 Pro、6 Max、6S Pro。具体对比如下表所示。 小米平板型号66 Pro6 Max6S Pro实物图发布时间2023年4月21日2023年4月21日2023年8月14日2024年2月22 日屏幕大小11英寸11英寸14英寸12.4英寸分辨率2.8K2.8K2.8K3K刷新率144Hz144Hz120…

EtherCAT笔记(四)——EtherCAT数据帧结构

EtherCAT数据包含2B的数据头和44~1948B的数据区。数据区由多个子报文组成。由于EtherCAT本身是通过以太网数据帧的形式传输&#xff0c;因此其协议帧中会携带以太网的帧头。 其中&#xff0c;解释如下&#xff1a; &#xff08;1&#xff09;以太网数据帧头&#xff1a;EtherC…

VSCode + GDB + J-Link 单片机程序调试实践

VSCode GDB J-Link 单片机程序调试实践 本文介绍如何创建VSCode的调试配置&#xff0c;如何控制调试过程&#xff0c;如何查看修改各种变量。 安装调试插件 在 VSCode 扩展窗口搜索安装 Cortex-Debug插件 创建调试配置 在 Run and Debug 窗口点击 create a launch.json …