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

2023-10-26

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 多平台发布

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 华为OD机试 Python 【食堂供餐】

    题目 员工食堂现在供应盒饭 我们的目标是让员工不用排队直接取餐 根据过去的取餐统计 我们想知道每单位时间 食堂至少要制作多少盒饭 才能确保每个员工都不用等待 输入 3 14 10 4 5 输出 3 输入 3 这表示在一个特定的时间段内 共有
  • YOLO综述:从YOLOV1到YOLOV8

    YOLO综述 从YOLOV1到YOLOV8 ABSTRACT 1 Introduction 2 YOLO Applications Across Diverse Fields 3 Object Detection Metrics and N

随机推荐

  • nginx报错nginx: [error] open() “/run/nginx.pid” failed (2: No such file or directory)

    nginx error open run nginx pid failed 2 No such file or directory 日期 2018 11 03 来源 Linux公社 作者 醉落红尘 字体 大 中 小 CentOS 7 5下启
  • vue 按钮 权限控制

    vue 按钮 权限控制 前言 在日常项目中 会碰到需要根据后台接口返回的数据 来判断当前用户的操作权限 必须当有删除权限时 就显示删除按钮 没有这个权限时 就不显示或者删除这个按钮 通过查找资料 通过vuex来实现这个功能 步骤 1 定义b
  • PID算法

    比例P 数值固定 不会随着情况调整 增幅器 积分I 比例P过小 增幅器补充 抑制器 微分D 比例P过大 抑制器削减 比例P 偏差量 目标量 传感器 比例P 偏差量 比例P系数 执行量 比例P 积分I 偏差量 目标量 传感器 积分I 积分I
  • 得到课程:冯雪·科学减肥16讲

    发刊词 减肥的动机 是为了健康 更是为了提高你的魅力 提高你的社会竞争力 减肥的实质 是改变生活方式 换一种新的人生 只有跟一群志同道合的人一起走 才能走得更远 最终减肥成功 基本原理 01 终点 三个目标一个都不能少 只要体重 体脂和体型
  • 小样本学习(FSL):Few-shot Learning 综述【模型微调(Fine-tunning)、数据增强、迁移学习(Transfer Learning)】

    分类非常常见 但如果每个类只有几个标注样本 怎么办呢 比如 我们打造了一个智能对话开发平台以赋能第三方开发者来开发各自业务场景中的任务型对话 其中一个重要功能就是对意图进行分类 大量平台用户在创建一个新对话任务时 并没有大量标注数据 每个意
  • 启发式搜索算法:A算法(全局、局部择优算法)+A*算法 解决八数码问题

    文章目录 1 A 算法 1 1 全局择优算法 1 1 1 求解八数码 1 2 局部择优算法 1 2 1 求解八数码 2 A 算法 2 1 解决八数码难题 参考博客 人工智能搜索策略 A 算法 1 A 算法 在图搜索算法中 如果能在搜索的每一
  • 华为OD机试 - IPv4地址转换成整数(Java)

    题目描述 存在一种虚拟IPv4地址 由4小节组成 每节的范围为0 255 以 号间隔 虚拟IPv4地址可以转换为一个32位的整数 例如 128 0 255 255 转换为32位整数的结果为2147549183 0x8000FFFF 1 0
  • 相关概念地址笔记

    公平锁与非公平锁 https www jianshu com p f584799f1c77 java socket编程https www cnblogs com mingforyou p 3258418 html java四种引用类型htt
  • markdown文档:一个简单标记语言的使用及GitHub实际应用

    目录 1 什么是Markdown 2 Markdown与HTML的简单对比 3 Markdown的基本语法 4 GitHub中Markdown的使用 4 1 GitHub上自定义的md文件格式与markdown pad IDE 的区别 4
  • CS143:编译原理实验PA1

    PA1报告 Stack Machine 实验内容 基于cool语言实现一个可执行若干指令的stack machine 要求实现的栈机可以满足以下命令 Command Meaning int 将该整数压入栈 s 将字符s压入栈 e 根据栈顶元
  • Servlet原理

    Mapping问题 package com kuang servlet import javax servlet ServletException import javax servlet http HttpServletRequest i
  • 对MTK的pdaf对焦方式的分析

    上周五分析了下mt6752的pdaf对焦规律 以前一直认为pdaf对焦不可能准到一步到位 应该是走到清晰点附近后再用CAF 反差式 对焦到最清晰点 但通过log查看 感觉应该是分几种情况 如果pdaf的可信度高 比如色彩分明 环境亮度高 则
  • Angular基础(八) Observable & RxJS

    对于一个应用来说 获取数据的方法可以有很多 比如 Ajax Websockets LocalStorage Indexdb Service Workers 但是如何整合多种数据源 如何避免BUG 如何提高可维护性 如何提升应用的速度 这些却
  • vue3中使用jweixin-module报错

    在vue3中使用 var jweixin require jweixin module 会编译报错 require is not defined 没有require模块 改成import的话 由于jweixin module不支持expor
  • REDIS 4 集群搭建

    REDIS 4 集群搭建 1 下载 redis wget http download redis io releases redis 4 0 10 tar gz tar xzf redis 4 0 10 tar gz cd redis 4
  • [学习笔记]Centos7虚拟机网络重启失败

    好久没用虚拟机了 这次学习的时候打开之前安装好的Centos7发现又连不了网了 在网上跟着教程配置好IP之后重启网络服务 执行service network restart命令 出现了错误 Restarting network via sy
  • Install ModelSim on Linux

    To use ModelSim on Linux is quite difficult There is only exe file for installing ModelSim on Windows on the official we
  • php的phpstoem代码编辑器的快捷键,比较常用的归纳

    1 CTRL SHIFT N 全局搜索文件 优先文件名匹配的文件 2 CTRL R 当前窗口替换文本 3 CTRL E 最近打开的文件 4 F5 复制文件 文件夹 5 CTRL C 复制 CTRL V 粘贴 CTRL X 剪切 删除行 Ct
  • Linux 面试题-(腾讯,百度,美团,滴滴)

    Linux 面试题 腾讯 百度 美团 滴滴 分析日志t log 访问量 将各个ip 地址截取 并统计出现次数 并按从大到小排序 腾讯 http 192 168 200 10 index1 html http 192 168 200 10 i
  • 用两成数据也能训练出十成功力的模型,Jina Embeddings 这么做

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