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

用两成数据也能训练出十成功力的模型,Jina Embeddings 这么做

alt

句向量(Sentence Embeddings)模型在多模态人工智能领域起着至关重要的作用,它通过将句子编码为固定长度的向量表示,将语义信息转化为机器可以处理的形式,在 文本分类、信息检索和相似度计算 等多个方面有着广泛应用。

然而长期以来,句向量模型在训练过程中 一直面临两大挑战:对大量数据和计算资源的依赖。传统的句向量模型,比如 Sentence-BERT 和 Sentence-T5,通常需要数十亿级别的句子对进行训练。这不仅训练成本高,还有点不环保。

为了解决这些问题,本文将深入探讨一种全新的句向量模型—— Jina Embeddings。该模型采用创新性地数据预处理、加权采样和三元组训练策略,大幅减少了训练数据需求,同时达到了与当前顶尖模型相当的性能表现。

与之前的模型相比, Jina AI 新近发布的 Jina Embeddings 在训练数据减少 80% 的情况下,性能表现依然和当前顶尖模型肩并肩。无论是用于文本检索、排序、语义相似度,还是当下最热门的检索增强生成(Retrieval Augmented Generation,RAG),它的表现都让人印象深刻。

模型: https://huggingface.co/jinaai/jina-embedding-t-en-v1

本文,我们将详细介绍 Jina Embeddings 模型是如何解决这一困扰行业的训练问题的。

数据预处理

传统的大数据思维往往是“越多越好”,使得许多用于训练句向量模型的数据集会包含重复项、非英语样本和语义相似度最小的低质量对。

在 Jina Embeddings 的训练过程中,我们对原始数据集进行了严格地过滤和优化。

alt

具体来说,我们从原始的 16 亿个句子对中,筛选出了 3.85 亿个高质量样本。 并且实施了一个分阶段的数据清洗流程,包括去重处理、语言过滤和一致性过滤。

  1. 去重处理:移除了数据集中所有重复的句子对。

  2. 语言过滤:仅保留英语句子对,以便在特定文化和语言环境中达到更高的准确率。

  3. 一致性过滤:利用辅助模型,排除了向量相似度低的句子对,这一步骤排除了 84% 的低质量数据,如 Reddit 的评论数据。

模型预训练

挑选出了好的数据,接着还要巧妙地选择用哪些数据来训练我们的模型。因此,我们 采用了并行化方法在多个数据集上进行训练,但设计了一个约束条件:每个训练批次(batch)仅包含来自单一数据集的样本。这样做既可以加速训练,又确保每个数据集都能得到合适的关注。

因为不是所有数据集都一样重要或者一样大。所以,我们 根据数据集的大小和质量来进行了加权,以决定从中抽取多少数据用于训练。这避免了在小的数据集上过拟合,同时也确保了重要的、高质量的数据集能得到足够的关注。

通过这种精打细算的训练策略,我们 实际上只用了 3.8 亿对数据就达到了不错的训练效果,用相对低的计算成本下实现了非常高效的模型训练。

三元组训练

在句子对数据进行预训练后,我们进一步采用了一个三元组训练阶段。在这一阶段里,每个样本包括一个查询、一个正样本和一个负样本。

模型在这一阶段会学习:如何让查询语句在向量空间里更加靠近正样本,而远离负样本。此外,我们还引入了难负样本(Hard Negatives),来增强模型的判别能力。

同时,我们也观察到 很多句向量模型难以准确处理否定词。比如 “一对情侣手牵手地走在街上。”,“一对情侣正在一起走。” 和 “一对情侣没有一起走。” 前两个应该关系紧密,而第二个和第三个句子,由于含义相反,应该距离较远。

然而,使用 MiniLM-L6-v2 模型时, 前两个句子的余弦相似度 0.7,而后两个句子的相似度为 0.86,这是不应发生的现象。

因此,我们决定 构建自己的反义数据集,就像上面的例子那样,每组数据都有三个部分:一个“锚点”(主句子)、一个“隐含”(和主句子意思相似的句子)和一个“否定”(和主句子意思相反的句子),并将其纳入训练数据中,帮助模型识别和区分语义不一致的表达。

在三元组训练后,我们的 jina-large-v1 模型在 处理复杂否定语句的准确率从 16.6% 提高到了 65.4%。

性能评估

我们在 MTEB 和 BEIR 等权威的数据集上,将我们的 Jina Embeddings 与 Sentence-T5 等模型市面流行句向量模型进行了基准测试, Jina Embeddings 在不同任务和模型规模下都展示了强劲的竞争力。

alt

在重新排序任务上, Jina Embeddings 系列模型,特别是“jina-large-v1”和“jina-base-v1”模型,表现出了抢眼的竞争力,超越或等于“gtr-t5-large”和“sentence-t5-xxl”等当前顶尖模型。

在检索任务表现上,专门为检索任务训练的 gtr-t5 模型成绩最好,但 Jina Embeddings 系列模型也很接近。

在文本相似度任务上,Jina-large-v1 的分数为 80.96,略低于专门用于句子相似度任务的 Sentence-t5-xxl 的 82.63。

这进一步证实了 Jina Embeddings 系列模型在多任务性能上的优越性,也突出了专门用于训练特定任务的模型,如 sentence-t5 和 gtr-t5 的局限性。

需要强调的是,Jina Embedding 系列模型在训练时对数据和计算资源的需求相对低许多,但仍能达到与顶级模型相当的性能。这一点对于那些资源有限,但又希望得到高性能模型的用户来说,是一个巨大的优势。

alt

其中最值得一提的是,参数量仅有 1.1 亿的 jina-base-v1 模型,在许多检索和排序任务中,性能甚至超越了拥有 3.3 亿参数的 Sentence-t5-large 模型,与 10 亿参数规模的模型旗鼓相当。 同时,即便只有 3500 万参数的 jina-small-v1 模型,也有非常出色的表现。这也印证了我们训练策略:高效的数据利用与训练方法能挖掘出更为精巧却强大的模型潜能。

展望未来

本文介绍了 Jina Embeddings 系列模型的训练过程,并通过 MTEB 基准的广泛评估证明了其在多任务性能上的优越性。即使只使用了两成数据,仍然达到满血的模型性能。 这一发现挑战了现有的范式,证明了用更少的数据就能有效地训练大型语言模型。

我们的研究也揭示了高效数据使用的多方面好处:

  • 资源节约:更少的数据需求,从而降低了训练所需的计算基础设施和资源压力。
  • 提高可访问性:更少的计算需求,使得资源受限的组织也能训练高性能模型。
  • 负责任 AI:更小但同样可靠的模型,意味着我们正在朝着更可持续、更负责任的 AI 发展。

目前,我们已经发布了多个预训练好的 Jina Embeddings 模型,包括 jina-embedding-t/s/b/l-en-v1 等。这些模型参数规模范围从 1400 万到 3.3 亿不等,大家可根据实际需求进行选择。其中 Tiny 的参数量是 1400 万,是目前全世界最小的向量模型。经实验评估,Jina Embedding 开源模型在关键的 9 个指标上超越了 OpenAI 的 text-embedding-ada-002,在 CPU 上的推理速度比之前最快的模型提高了一倍,每秒可以编码 1700 个句子,适合部署在边缘设备。

模型: https://huggingface.co/jinaai/jina-embedding-t-en-v1

技术报告: https://arxiv.org/abs/2307.11224

未来,我们还将推出 Jina Embeddings V2,把向量模型的序列长度拓展到 8 千,并进一步改善向量质量。在 v2 的基础上我们也会将模型拓展到多语言,包括但不限于中文、德文、西班牙文等。

本文由 mdnice 多平台发布

相关文章:

用两成数据也能训练出十成功力的模型,Jina Embeddings 这么做

句向量(Sentence Embeddings)模型在多模态人工智能领域起着至关重要的作用,它通过将句子编码为固定长度的向量表示,将语义信息转化为机器可以处理的形式,在 文本分类、信息检索和相似度计算 等多个方面有着广泛应用。 …...

SpringCloud Eureka搭建会员中心服务提供方-集群

😀前言 本篇博文是关于SpringCloud Eureka搭建会员中心服务提供方-集群,希望你能够喜欢 🏠个人主页:晨犀主页 🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到大家,您…...

详解TCP/IP协议第二篇:OSI参考模型详解

文章目录 写给自己的话 一:协议分层与OSI参考模型 二:通过对话理解分层 三:OSI参考模型 写给自己的话 不从恶人的计谋,不站罪人的道路,不坐亵慢人的座位,惟喜爱耶和华的律法,昼夜思想&#…...

OpenGL 函数列表

//纹理头文件加载 #define STB_IMAGE_IMPLEMENTATION #include "stb_image.h" //线框模式(Wireframe Mode) //glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); //翻转y轴 stbi_set_flip_vertically_on_load(true); //声明鼠标滚轮回调函数 void scroll_call…...

【C语言】每日一题(半月斩)——day1

目录 😊前言 一.选择题 1.执行下面程序,正确的输出是(c) 2.以下不正确的定义语句是( ) 3.test.c 文件中包括如下语句,文件中定义的四个变量中,是指针类型的变量为【多选】&a…...

Spring MVC 七 - Locale 本地化

Spring各模块都支持国际化,SpringMVC也同样支持。DispatcherServlet通过Locale Resovler自动根据客户端的Locale支持国际化。 request请求上来后,DispatcherServlet查找并设置Locale Resovler,我们可以通过RequestContext.getLocale()获取到…...

力扣(LeetCode)算法_C++——替换后的最长重复字符

给你一个字符串 s 和一个整数 k 。你可以选择字符串中的任一字符,并将其更改为任何其他大写英文字符。该操作最多可执行 k 次。 在执行上述操作后,返回包含相同字母的最长子字符串的长度。 示例 1: 输入:s “ABAB”, k 2 输出…...

unity 编辑器时读取FairyGUI图集单个图像

原因 想要在编辑器扩展也能访问FairyGUI图集里面的小图,随便找了一下没有找到接口自己做一个 方法 使用UIPackage.GetItemByURL获得小图信息。从图集中复制出小图,如果有旋转就逆旋转90度即可 图集里面的小图是有可能旋转的,可以通过访问 …...

下载配置 maven并在 idea 上应用

目录 一 maven 定义 二 Maven特点 三 Maven仓库 四 安装配置maven 步骤一:准备安装包,解压 步骤二:配置maven的环境变量 步骤三:测试maven的环境变量是否配置成功 步骤四:配置maven本地仓库 步骤五:阿里云、腾讯镜像配置 步骤六:全局配置idea的maven路径 步骤七:创建…...

网站搭建从零开始(0)--域名的选择与解析

目录 确定用途 购买域名 使用可靠的注册商购买域名 想好域名关键词 检查域名是否可用 添加域名到购物车并完成购买 域名的解析 登录注册商账户 选择要配置的域名 进入DNS解析设置 添加DNS记录 保存配置 检查解析是否生效 提示 确定用途 在购买域名之前&#xf…...

数分面试题2-牛客

1、面对大方差如何解决 1,AB实验场景下,如果一个指标的方差较大表示它的波动较大,那么实验组和对照组的显著差异可能是因为方差较大即随机波动较大。解决方法有:PSM方法、CUPED(方差缩减) PSM代表"Propensity Score Matchin…...

Android codec2 编码 -- 基于录屏

文章目录 前言android 原生的应用srcreenrecordMediaCodec获取编码数据流程 前言 本篇文章主要是理解Android 12编码的流程, 首先从上层的应用出发理解mediacodec提供给外部API的用法。然后针对每个api 分析编码各个流程中框架中的流程。 熟悉一个框架的流程 可以…...

【Java基础篇 | 面向对象】--- 聊聊什么是多态(上篇)

个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【JavaSE_primary】 本专栏旨在分享学习JavaSE的一点学习心得,欢迎大家在评论区讨论💌 目录 一、什么是多态二、多…...

如何使用 Node.js和Express搭建服务器?

如何使用NodeJs搭建服务器 1. 准备工作1.1 安装Node.js 2. 安装express2.1 初始化package.json2.2 安装express2.3 Express 应用程序生成器 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段…...

帮公司面试了个要25K的测试,我问了他这些问题...

深耕IT行业多年,我们发现,对于一个程序员而言,能去到一线互联网公司,会给我们以后的发展带来多大的影响。 很多人想说,这个我也知道,但是进大厂实在是太难了,简历投出去基本石沉大海&#xff0…...

Matlab之创建空数组的多种方法汇总

一、matlab空数组是什么? 在MATLAB中,空数组是指没有元素的数组对象。它可以用于占位或者作为容器,等待后续添加元素。 二、创建空数组的多种方法 1、使用空方括号 [] 创建空矩阵 A []; % 创建一个空双精度矩阵 B logical([]); % 创建一…...

HTML实现移动端布局与页面自适应

我们所说的布局方式,这里我们通常指的是width和height在不同页面情况下面的改变。 常见页面的布局方式有 静态布局 (px布局,就是固定其高宽,不论页面怎样放大缩小,其占领的依旧是,使用px固定了的高宽&…...

CSS3技巧36:backdrop-filter 背景滤镜

CSS3 有 filter 滤镜属性,能给内容,尤其是图片,添加各种滤镜效果。 filter 滤镜详见博文:CSS3中强大的filter(滤镜)属性_css3滤镜_stones4zd的博客-CSDN博客 后续,CSS3 又新增了 backdrop-filter 背景滤镜。 backdr…...

【计算机网络】传输层协议——TCP(上)

文章目录 TCPTCP协议段格式报头和有效载荷如何分离?4位首部长度 TCP可靠性确认应答机制的提出序号和确认序号为什么序号和确认序号在不同的字段? 16位窗口大小 6个标志位标志位本质具体标志位PSHRSTURG 超时重传机制 文章目录 TCPTCP协议段格式报头和有效…...

GO语言网络编程(并发编程)Goroutine池

GO语言网络编程(并发编程)Goroutine池 1. Goroutine池 1.1.1. worker pool(goroutine池) 本质上是生产者消费者模型可以有效控制goroutine数量,防止暴涨需求: 计算一个数字的各个位数之和,例…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...

MMaDA: Multimodal Large Diffusion Language Models

CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明

AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...

Linux --进程控制

本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill

视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...

Razor编程中@Html的方法使用大全

文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...

wpf在image控件上快速显示内存图像

wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像(比如分辨率3000*3000的图像)的办法,尤其是想把内存中的裸数据(只有图像的数据,不包…...

Python 高效图像帧提取与视频编码:实战指南

Python 高效图像帧提取与视频编码:实战指南 在音视频处理领域,图像帧提取与视频编码是基础但极具挑战性的任务。Python 结合强大的第三方库(如 OpenCV、FFmpeg、PyAV),可以高效处理视频流,实现快速帧提取、压缩编码等关键功能。本文将深入介绍如何优化这些流程,提高处理…...

水泥厂自动化升级利器:Devicenet转Modbus rtu协议转换网关

在水泥厂的生产流程中,工业自动化网关起着至关重要的作用,尤其是JH-DVN-RTU疆鸿智能Devicenet转Modbus rtu协议转换网关,为水泥厂实现高效生产与精准控制提供了有力支持。 水泥厂设备众多,其中不少设备采用Devicenet协议。Devicen…...