一 模型介绍

向量模型用于生成向量表示,被广泛应用于检索、分类、聚类或语义匹配等传统的自然语言处理任务。到了大模型时代,由于上下文长度的限制,需要压缩、存储和查询大量的信息,这就需要用到向量模型对输入的文本进行向量化表示,然后再喂给大模型,以得到期望的输出。更长的向量模型输入的长度可以提高 RAG 场景下大模型回复的准确性,而且适用于各种处理长文本的场景,例如处理数十页的报告综述等。

模型参数

模型特点:

  • 使用了Alibi而不是位置编码,直接在计算注意力的时候加入了双向的Alibi,达到更长的输入长度
  • 在大量精处理后的数据上进行训练,并使用文本对数据和难负样本数据进行微调

更多详情可以查看论文:https://arxiv.org/pdf/2310.19923.pdf

二 效果对比

jina 标榜自己是一个双语模型,不是单语或者多语言模型,这样更加适合做语义相似检索,而且不需要进行翻译。因此本次使用jina-embeddings-v2-base-zh这个模型来验证中英双语能力。

中英文双语表征能力

使用下面的一个句子对,对比模型是MOKA的m3e-large

['How is the weather today?', '今天天气怎么样?']
模型 相似度
jina-v2-base-zh 0.7860609
m3e-large 0.7047691

很明显,结果表明了jina模型对这两个句子嵌入后的向量更加相似

长中英文双语表征能力

上述差距还不大,但是jina-v2支持的上下文可达8k,而m3e-large最多只能到512。这回用长本文来看看两者的差距。


e = "Here's a breakdown of Machine Learning (ML) and Deep Learning (DL):\n Machine Learning:\n A subfield of artificial intelligence (AI) that enables computers to learn from data without explicit programming.\n The process involves training a model on a large dataset to identify patterns and relationships.\n Once trained, the model can make new predictions or decisions based on new data.\n Examples of machine learning include:\n Supervised learning: training a model on labeled data (e.g., training a spam filter on emails).\n Unsupervised learning: finding hidden patterns in unlabeled data (e.g., discovering clusters of customers in a dataset).\n Reinforcement learning: an agent learns through trial and error to maximize its rewards (e.g., a robot learning to play a game).\n Deep Learning:\n A subfield of machine learning that focuses on mimicking the structure and function of the human brain.\n Deep learning models are built using artificial neural networks with multiple layers.\n Each layer of the network performs a specific task, and the entire network works together to learn complex patterns from data."
len(e)
>> 1109 z = "以下是机器学习 (ML) 和深度学习 (DL) 的细分:\n 机器学习:\n 人工智能 (AI) 的一个子领域,使计算机无需显式编程即可从数据中学习。\n 该过程涉及训练模型在大型数据集上识别模式和关系。\n 经过训练,模型可以根据新数据做出新的预测或决策。\n 机器学习的示例包括:\n 监督学习:在标记数据(例如,训练电子邮件的垃圾邮件过滤器)。\n 无监督学习:在未标记的数据中查找隐藏模式(例如,发现数据集中的客户集群)。\n 强化学习:代理通过反复试验进行学习,以最大化其奖励(例如,学习玩游戏的机器人)。\n 深度学习:\n 机器学习的一个子领域,专注于模仿人脑的结构和功能。\n 深度学习模型是使用多层人工神经网络构建的。\n 网络的每一层都执行特定的任务,整个网络协同工作,从数据中学习复杂的模式"
len(z)
>> 344
模型 相似度
jina-v2-base-zh 0.82530826
m3e-large 0.66310775

输入的文本长度增加后,可以明显看到两者的差距,再长的文本可能m3e也处理不了,因此没有必要再进行下一步验证。

内存占用

模型 向量长度 字节
jina-v2-base-zh 768 3072 Bytes
m3e-large 1024 4096 Bytes

相当于每个嵌入后的向量,jina-v2-base可以节省大约1k字节。如果有10亿条这样的向量数据可节省1T的空间,这对于大规模RAG场景下非常有用。

8k中英双语文本嵌入模型效果初探的更多相关文章

  1. 我在 B 站学机器学习(Machine Learning)- 吴恩达(Andrew Ng)【中英双语】

    我在 B 站学机器学习(Machine Learning)- 吴恩达(Andrew Ng)[中英双语] 视频地址:https://www.bilibili.com/video/av9912938/ t ...

  2. Matalb中英双语手册-年少无知翻译版本

    更新: 20171207: 这是大学期间参加数模翻译的手册 正文: 愚人节快乐,突然发现自己在博客园的一篇文章.摘取如下: MATLAB 语言是一种工程语言,语法很像 VB 和 C,比 R 语言容易学 ...

  3. One SQL to Rule Them All – an Efficient and Syntactically Idiomatic Approach to Management of Streams and Tables(中英双语)

    文章标题 One SQL to Rule Them All – an Efficient and Syntactically Idiomatic Approach to Management of S ...

  4. Introducing DataFrames in Apache Spark for Large Scale Data Science(中英双语)

    文章标题 Introducing DataFrames in Apache Spark for Large Scale Data Science 一个用于大规模数据科学的API——DataFrame ...

  5. What’s new for Spark SQL in Apache Spark 1.3(中英双语)

    文章标题 What’s new for Spark SQL in Apache Spark 1.3 作者介绍 Michael Armbrust 文章正文 The Apache Spark 1.3 re ...

  6. A Tale of Three Apache Spark APIs: RDDs, DataFrames, and Datasets(中英双语)

    文章标题 A Tale of Three Apache Spark APIs: RDDs, DataFrames, and Datasets 且谈Apache Spark的API三剑客:RDD.Dat ...

  7. [中英双语] 数学缩写列表 (List of mathematical abbreviations)

    List of mathematical abbreviations From Wikipedia, the free encyclopedia 数学缩写列表 维基百科,自由的百科全书 This ar ...

  8. 痞子衡嵌入式:开启NXP-MCUBootUtility工具的HAB加密功能 - CST(中英双语)

    1 Reason for enabling HAB encryption function 为什么要开启HAB加密功能 NXP-MCUBootUtility is a tool designed fo ...

  9. 痞子衡嵌入式:开启NXP-MCUBootUtility工具的HAB签名功能 - CST(中英双语)

    1 Reason for enabling HAB signature function 为什么要开启HAB签名功能 NXP-MCUBootUtility is a tool designed for ...

  10. Apache Spark as a Compiler: Joining a Billion Rows per Second on a Laptop(中英双语)

    文章标题 Apache Spark as a Compiler: Joining a Billion Rows per Second on a Laptop Deep dive into the ne ...

随机推荐

  1. P8+架构师养成计划

    一.P8+要求 1.收集能力要求 1.专业能力 技术架构.业务架构.做到无中生有. 2.基石能力 沟通协调能力.团队管理能力.逻辑能力.风险控制能力. 3.影响力 团队内部影响.外部影响.行业影响力. ...

  2. Vue前端项目架构梳理

    撰写日期:2020-07-23 撰稿人:彭成刚 转载需经本人同意. Vue前端项目架构梳理 后期可以将TypeScript加入到项目来,对参数的数据类型进行更严格的校验. 现在主流就 Vue 和 Re ...

  3. maven解决尝试手段

    发现原来用的buildBody不好用,百度这个请求有异于其他sdk 关于写身份证接口那边:首先报有两个slf4j冲突,经过查阅,不能包含两个slf4j遂写了exclusion,但是排除不了,要使用** ...

  4. Cesium之原生控件

    1. 控件概述 Cesium的开始,基本上是从new一个Viewer开始 // ... <div id="cesiumContainer"></div> & ...

  5. 记录--npm, npx, cnpm, yarn, pnpm梭哈

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 依赖管理解决了在软件开发过程中管理和协调各种依赖项的问题,简化了开发流程,提高了项目的可靠性.可维护性和可重复性.它们帮助开发人员更高效地 ...

  6. Ficow 陪你看 WWDC 2022

    本文首发于 Ficow Shen's Blog,原文地址: WWDC22 - Xcode 14 新特性. 内容概览 前言 用好过滤器 Recap,节约你的宝贵时间 Essential,取其精华 必看内 ...

  7. IDEA (任意 JetBrains IDE)拆分先前 commit

    最近在合并上游代码,遇到了一个问题:某个 commit 杂糅了几个不同的特性修改,这可能会导致 rebase 上游代码时需要再对该 commit 进行额外的代码冲突处理 解决方法:合并上游分支前,拆分 ...

  8. nginx location块

    location块在server块中使用,它的作用是根据客户端请求URL去定位不同的应用. 匹配格式 作用 location = /uri = 表示精确匹配,只有完全匹配上才能生效 location ...

  9. 简单c++构建第一人称

    本文内容为UE4.27的文档教程 GameMode确定 新建的项目会自动生成GameMode,如果有更改,而不是使用默认的GameMode类,就需要在引擎的设置中更改 角色的实现 前后左右移动 //前 ...

  10. 06 PSP成熟度模型【软件过程与管理】

    PSP成熟度模型(Personal Software Process) 个体度量过程 PSP3 周期开发 个体计划过程 PSP2 代码评审 设计评审 PSP2.1 设计模板 个体质量管理过程 PSP1 ...