预训练模型语义相似性计算(十一) - M3E和BGE

M3E

m3e由MokaAI 训练,开源和评测。

m3e的详细介绍可以看官方的github介绍。本文简要摘录其中一些点,以便后续的应用。
1.千万级 (2200w+) 的中文句对数据(开源)。
2.支持同质相似句计算(s2s)和异质检索(s2p),后续支持代码检索。
3.m3e基座模型为roberta,支持微调。

C-Pack

bge由北京智源人工智能研究院发布。
论文:C-Pack: Packed Resources For General Chinese Embeddings
论文推出了一个中文的嵌入资源包c-pack。
其中包括了:
        1.C-MTP,一个大型的文本嵌入训练集,包括了大量的非监督语料库和高质量标注的有监督语料库。
        2.C-MTEB,一个涵盖6个任务和35个数据的中文文本嵌入基准。
        3.BGE,多尺寸的文本嵌入模型。
所有资源:GitHub - FlagOpen/FlagEmbedding: Retrieval and Retrieval-augmented LLMs

C-MTEB和C-MTP的数据组成和BGE的三阶段训练流程如下图所示:

BGE

1,预训练,在大规模高质量中文语料上进行预训练,预训练方法为MAE风格的RetroMAE
2.通用微调,在C-MTP无监督语料下进行对比学习,没有特意挖掘负样本,而是以来批次内负样本,并通过增大批次从而增加嵌入的判别性。
3.特定任务微调,在C-MTP有监督语料下训练,有监督语料量少但是质量高,为了缓解语料任务之间的矛盾,微调使用指令微调。另外,除了批内负样本外,还为每个文本对挖掘一个硬负样本(ANCE)

BGE-m3

论文:BGE M3-Embedding: Multi-Lingual, Multi-Functionality, Multi-Granularity Text Embeddings Through Self-Knowledge Distillation

模型特点:

1.多语言:支持超过100种语言
2.多粒度:不同粒度的输入,最多8192个token
3.多功能:密集检索,多向量检索,稀疏检索

技术贡献:

1.自我知识蒸馏方法,其中来自不同检索功能的相关性分数可以集成为教师信号以提高训练质量。2.优化了批处理策略,实现了大批量和高训练吞吐量,以确保嵌入的判别性。

混合检索

密集检索
使用[cls]表示query向量,内积表示相关性
词汇(稀疏)检索
使用公共token的权重表示相关性
多向量检索 
query和passage token之间计算相关性  colBERT https://www.bilibili.com/read/cv33838680/

自我知识蒸馏
训练过程

第一步 使用密集检索的损失在无监督数据上进行对比学习。
第二部 在有监督语料上使用自我知识蒸馏训练。
自我知识蒸馏过程:
    1.混合检索损失 = 密集检索损失 + 稀疏检索损失 + 多向量检索
    2.使用混合检索的损失作为教师模型监督信号,其中任何一个检索方式的得分作为学生模型。
    3.最后将蒸馏损失和混合检索损失作为最后的损失。

训练流程优化
    根据文本长度采样,确保一个batch内文本长度相对相似,从而减少填充。
    将一批数据分成多个小批。对于每个小批,我们利用模型编码文本,收集输出的向量同时丢弃所有前向传播中的中间状态,最后汇总向量计算损失。

长文本优化
    MCLS(Multiple CLS):为每个固定数量的token插入一个cls token,每个cls token可以从相邻的token获取语义信息。最后,通过对所有cls token的最后隐藏状态求平均值来获得最终的文本嵌入。

注:BGE中其他的方法(RetroMAE、ANCE等)在BGE-M3中仍然使用。

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

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

相关文章

MySQL 满足条件函数中使用查询最大值函数

在实际的数据库操作中,我们常常需要根据某些条件找到最大值并据此进行下一步的操作。例如,在一个包含订单信息的表中,可能需要找到特定客户的最大订单金额,并据此进行某些统计或决策。MySQL 提供了多种函数和查询方法,…

C# 泛型函数

1.非约束 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace MyGeneirc {public class GeneircMethod{/// <summary>/// 泛型方法解决&#xff0c;一个方法&#xff0c;满足不同参数类型…

JVM学习-彻底搞懂Java自增++

从字节码角度分析i和i的区别 public void method6() {int i 10;i; //在局部变量表上直接加1}public void method7() {int i 10;i; //字节码同i}public void method8() {int i 10;int a i; //通过下图可以看出先将局部变量表中的值push到操作数栈&#xff0c;然…

springboot项目部署到linux服务器

springboot后端 修改前 修改后 vue前端 修改前 将地址中的 localhost改为 ip 重新生成war包 war上传到linux的tomcat的webapps下 其他环境配置和macOS大差不差 Tomcat安装使用与部署Web项目的三种方法_tomcat部署web项目-CSDN博客

rk3568_mutex

文章目录 前言1、什么是mutex?1.1mutex互斥体API函数二、实验2.1实验目的2.2源码2.3结果图前言 本文记录的是rk3568开发板基础上做的mutex实验 1、什么是mutex? mutex是互斥体,它是比信号量semaphore更加专业的机制。 在我们编写Linux驱动的时候遇到需要互斥的地方建议使用…

css3 笔记01

目录 01 css3选择器 02 伪类选择器 03 伪元素选择器 04 文章分割列 05 浏览器hack写法 06 css3中的2D转换 01 css3选择器 选择器选择器{} 表示选择下一个兄弟 选择器1~选择器2{} 表示选中选择1后面所有包含选择器2的元素. [属性名]{} 包含属性名的选择器 选择器[属性名]…

Linux用户管理指令004

1、useradd 是用于创建新用户的命令。以下是 useradd 命令的一些常用选项及其简要说明&#xff0c;以清晰的分点方式表示&#xff1a; -u, --uid UID指定用户的用户ID&#xff08;UID&#xff09;。如果不指定&#xff0c;系统通常会分配一个未使用的最小UID。 -g, --gid GROUP…

Matlab读取Swarm球谐系数,并绘制EWH全球格网图(存在疑问)

ICGEM官网下载 COST-G发布的4040的球谐系数 close all; clearvars -except; % addpath(E:\Code\Tool\Function\GRACE_functions); dir_degree_1 E:\Code\GRACE_data\Degree_1\deg1_coef.txt; dir_c20 E:\Code\GRACE_data\Degree_2\C20_RL06.txt; myDir_Swarm E:…

深入理解栏目函数:从基础结构到实际应用

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、栏目函数的基本结构解析 代码案例 二、栏目函数的参数理解与返回值探究 参数取值与返…

2024年上半年软件设计师试题及答案(回忆版)

目录 基础知识选择题案例题1.缺陷识别的数据流图2.球队、球员、比赛记录的数据库题3.用户、老师、学生、课程用例图4.算法题5.程序设计题基础知识选择题 树的节点,度为4的有4个,度为3的有8个,度为2个有6个,度为1的有10个,问有几个叶子结点 二位数组,一个元素2个字节,A0…

pgsql 多个模式相同的表获取主键

pgsql 有一个库, 里面有多个模式, 每个模式下可能有相同的表, 如何获取表的主键 SELECT tc.table_schema AS 模式, tc.table_name AS 表名, kcu.column_name AS 列名 FROM information_schema.table_constraints AS tc JOIN information_schema.key_colum…

php TP8 阿里云短信服务SDKV 2.0(跳大坑)

安装&#xff1a;composer require alibabacloud/dysmsapi-20170525 2.0.24 官方文档&#xff1a;短信服务_SDK中心-阿里云OpenAPI开发者门户 (aliyun.com) 特别注意&#xff1a;传入参数获得值形式 这样也不行 $sendSmsRequest new SendSmsRequest($addData); 还有一个大坑…

大模型日报2024-05-28

大模型日报 2024-05-28 大模型资讯 SDAIA的阿拉伯语大模型ALLaM在IBM watsonx上全面运行 摘要: 由沙特数据和人工智能局&#xff08;SDAIA&#xff09;开发的开源阿拉伯语大语言模型ALLaM现已在IBM的watsonx平台上全面运行。 AI公司Anthropic揭示大语言模型内在工作机制 摘要: …

【CSharp】无符号短整型数组ushort[]转化为IntPtr

【CSharp】无符号短整型数组ushort[]转化为IntPtr 1.背景2. 代码1.背景 我们的相机或者探测器是一个感光的传感器,一般将光波打到闪烁体上,闪烁体发光后进行光电转换得到电信号,您可以这么简单的去理解。 这里就设计相机传感器上的AD转换器(模拟信号->数字信号)的bit数…

Nginx实战:https 配置SSL证书

目录 一、上传证书 二、nginx配置 三、生效配置 一、上传证书 将SSL证书文件&#xff08;如.crt或.pem文件&#xff09;和私钥文件&#xff08;如.key文件&#xff09;上传到服务器的某个目录&#xff0c;如/etc/nginx/ssl/ 二、nginx配置 server { listen 443 ssl; se…

输入字符串fgets

输入字符串fgets fgets 是C语言中的一个函数&#xff0c;用于从指定的文件流&#xff08;如标准输入、文件等&#xff09;读取一行字符串。它通常用于读取用户输入或从文件中读取文本行。fgets 函数的原型如下&#xff1a; char *fgets(char *str, int n, FILE *stream);参数说…

Mesa软件框架以及重要数据结构分析

Mesa软件框架以及重要数据结构分析 引言 Mesa的实现比较复杂&#xff0c;其中还有许多的数据结构之间的关系逻辑还不是很清楚。感觉分析了又没有分析一样&#xff0c;这里我们再理一理&#xff01; 1.1 Mesa下EGL/GL核心数据结构和层级关系 MESA的核心数据结构很多很复杂&#…

10.RedHat认证-Linux文件系统(上)

10.RedHat认证-Linux文件系统(上) ⽂件系统&#xff0c;顾名思义&#xff0c;是⼀个组织⽂件的“系统(system)”。file system ⽂件系统是⽤来组织⽂件的&#xff0c;通俗⼀点理解的话&#xff0c;⽂件系统是⽤来存储⽂件的。 硬盘是不能直接存放⽂件或数据。 我们通过将硬…

Xed编辑器开发第三期:使用Rust从0到1写一个文本编辑器

继续Xed编辑器开发第二期:使用Rust从0到1写一个文本编辑器的开发进度&#xff0c;这是第三期的内容&#xff1a; 4.1 逐行清除 在每次刷新之前清除整个屏幕似乎不太理想&#xff0c;最好在重新绘制每行时清除每行。让我们删除 Clear(ClearType::All)&#xff0c;而是在我们绘…

Double 4 VR混合现实情景实训教学系统在戏剧英语课堂上的应用

随着科技的不断发展&#xff0c;Double 4 VR混合现实情景实训教学系统在教育领域的应用越来越广泛。在戏剧英语课堂上&#xff0c;这种教学系统可以为学生提供更加生动、逼真的学习环境&#xff0c;增强学生的学习体验和效果。 一、模拟真实场景&#xff0c;增强学习体验 Doubl…