什么是向量嵌入?

news2024/11/18 23:40:46

一、说明

        在所有关于生成式AI的讨论中,为生成式AI提供动力背后的概念可能有点压倒性。在这篇文章中,我们将重点介绍一个功能概念,它为人工智能的潜在认知能力提供支持,并为机器学习模型提供学习和成长的能力:向量嵌入。

        向量嵌入的核心是将一段数据表示为数学方程的能力。谷歌对向量嵌入的定义是“一种将数据表示为n维空间中的点的方式,以便相似的数据点聚集在一起”。对于具有强大数学背景的人来说,我相信这些词是完全有意义的,但对于我们这些在数学概念的视觉表示中挣扎的人来说,这听起来可能像胡言乱语。

        查看 Ania Kubow 的这个很棒的教程,了解有关向量嵌入的更多信息

        因此,让我们从另一个角度来看这个问题,假设你有一个装满M&M的碗,你喜欢吃零食,你最小的后代决定将它们切开并混合在一个装满Skittles糖果的碗中。对于那些不一定熟悉这两件事的人来说,M&Ms和Skittles是两种五颜六色的糖果壳零食,看起来非常相似,但一种是巧克力,另一种是柑橘,这两种口味并没有很好地混合。因此,为了纠正这种情况,我们需要对糖果进行分类,我们决定按类型和颜色对它们进行分类。所以所有的绿色M&M都放在一堆,所有的绿色彩虹一起堆在另一堆,所有的红色M&M和所有的红色Skittles,依此类推。完成后,我们会有一堆明显的M&M和Skittles,按颜色分开,我们可以直观地排列它们,以便我们可以快速看到新糖果掉落的位置。

        您可以看到,在对糖果进行分类时,我们已经开始布置模式和分组,以便更容易地将糖果关联在一起,并在找到新糖果时找到我们需要的堆。向量嵌入采用此视觉表示形式,并将数学表示形式应用于其位置。考虑这个问题的一个简单方法是,如果我们为每个位置分配不同的值。

        使用我们的糖果,现在可以根据其属性为该糖果分配一个值,并根据该数字将新糖果放入正确的位置。这最终就是向量嵌入,尽管复杂性要高得多。

        正是这种数学表示是认知能力的基础,使生成人工智能和机器学习模型(如自然语言处理、图像生成和聊天机器人)能够整理类似神经的输入并做出决策。单个嵌入就像一个神经元,就像单个神经元不能构成大脑,单个嵌入不会构成AI系统一样。嵌入越多,这些嵌入的关系就越多,具有越来越复杂的认知能力的能力就越强。当我们将大量嵌入分组到一个可以像大脑一样提供快速可扩展访问的存储库中时,它被称为矢量数据库,如由 Apache Cassandra 提供支持的 Datastax Astra。

        但是,要真正了解什么是矢量嵌入以及它们为生成式AI提供的深远价值,我们必须了解如何使用它们,如何创建它们以及它们可以表示哪些类型的数据。

二、示例:使用向量嵌入

        我们在向量嵌入方面遇到的挑战之一是它们可以表示几乎任何类型的数据。如果你看一下计算机科学/编程语言中使用的大多数数据类型,它们都表示有限形式的数据。字符被设计为表示字符,整数被设计为表示整数,浮点数被设计为表示带有小数点的更有限的数字表示。已经创建了新的数据类型来增强这些基本数据类型,如字符串和数组,但是这些类型往往仍然只能表示特定类型的数据。

        从表面上看,矢量数据类型似乎只是数组的扩展,它允许数组是多维的,并在绘制图形时提供方向性。然而,向量的最大进步是认识到在功能上任何类型的数据都可以表示为向量,更重要的是,数据可以与其他数据进行比较,并且相似性最终可以在这些多维平面内映射。

        好吧,我们在这里必须解决的是,即使在写完上述内容之后,它仍然感觉像文字汤。这一切意味着什么?我认为要真正理解向量是什么以及如何使用它,来自早期的实现之一,谷歌在2年发明的Word2013Vec。

        Word2Vec 是一种技术,用于将单词作为输入,将它们转换为向量并使用这些向量来创建可视化同义词集群的图形。

        Word2Vec 在功能上的工作方式是每个创建 n 维坐标映射或向量。在我们上面的例子中,我们有一个 5 维坐标映射,真正的矢量映射可以有数百或数千个维度,太多了,我们的大脑无法想象或理解。正是高维数据为机器学习模型提供了关联和绘制语义搜索或矢量搜索等数据点的能力。

        在上图中,您可以看到某些单词如何根据相似性自然地组合在一起。与仓鼠相比,兔子和兔子彼此之间的关系更密切,与仓鼠相比,兔子、兔子和仓鼠这三个词都根据彼此的矢量属性更紧密地组合在一起。正是n维空间内的这种方向性允许神经网络处理最近邻搜索等功能。

        那么它是如何应用的呢?嗯,可视化这一点的最简单方法之一是在推荐引擎中。例如,如果我获取该节目的质量和方面并对其进行矢量化,然后我获取所有其他节目的质量和方面并对其进行矢量化,我现在可以使用这些品质来查找与我正在观看的节目密切相关的其他节目基于方向性。通过机器学习和人工智能,我观看的节目越多,系统从我感兴趣的n维图的哪些区域获得的信息就越多,并根据这些品质为我的口味提出建议。

        如何应用此功能的另一个示例是在搜索之类的事情中。以谷歌的反向图像搜索为例。使用向量进行反向图像搜索非常快速且易于操作,因为当图像作为输入时,反向搜索引擎可以变成矢量,然后使用矢量搜索,它可以在 n 维图中找到图像应该在的特定位置,并为用户提供围绕该图像的任何其他元数据。

        在这一点上,数据矢量化的应用确实是无限的。一旦数据转化为载体,就可以完成欺诈或异常检测等操作。数据处理、转换和映射可以作为机器学习模型的一部分完成。聊天机器人可以提供给生产文档,并提供一个自然语言界面,与试图弄清楚如何使用特定功能的用户进行交互。

        向量嵌入是实现机器学习和 AI 的核心组件。一旦数据被转换为向量,我们需要将所有向量存储在一个高度可扩展、高性能的存储库中,称为向量数据库。一旦数据被转换并存储为矢量,数据现在可以为多个不同的矢量搜索用例提供支持。

三、创建向量嵌入

        那么向量嵌入是什么,它是如何创建的呢?创建向量嵌入从离散数据点开始,该数据点在高维空间中转换为向量表示。就我们的目的而言,在低 3D 空间中可视化可能是最简单的。假设我们有三个离散的数据点,单词cat,单词duck和单词弹涂鱼。我们将评估这些词是走路、游泳还是飞行。让我们以猫这个词为例。猫主要走路,所以让我们为走路分配一个值 3,猫会游泳,但大多数猫不喜欢游泳,所以让我们为此分配一个值 1,最后我不知道有任何猫可以自己飞行,所以让我们为此分配一个值 0。

        所以猫的数据点是:

        猫: (游泳 - 1, 苍蝇 - 0, 散步 — 3)

        如果我们对鸭子和弹涂鱼(一种可以在陆地上行走的鱼)这个词做同样的事情,我们会得到:

        鸭子:游泳,苍蝇 - 2,散步 - 2)

        弹涂鱼: (游泳 — 3, 苍蝇 — 0, 散步 — 1)

        通过此映射,我们可以将每个单词绘制成三维图表,创建的线是向量嵌入。猫 [3,1,0], 鸭 [3,2,2], 弹涂鱼 [2,3,0]。

        一旦我们所有的离散对象(单词)都转换为我们的向量,我们就可以根据语义相似性看到它们之间的紧密程度。例如,很容易看出所有三个词都被绘制在z轴上,因为所有的动物都可以走路。像机器学习这样的东西的真正力量在于当你查看图形平面上的向量表示时。例如,如果我们比较步行和游泳的动物,我们可以看到猫与鸭子与弹涂鱼的关系更密切。

        在我们的例子中,我们只有一个三维空间,但有一个真正的向量嵌入,向量跨越一个 N 维空间。机器学习和神经网络使用这种多维表示来做出决策并启用分层最近邻搜索模式。

        在创建向量嵌入时,可以采取两种方法,一种是特征工程,它利用领域知识和专业知识来量化将用于定义向量不同顶点的“特征”集,或者使用深度神经网络来训练模型以将对象转换为向量。训练模型往往是自特征工程以来最常见的方法,而提供对领域的详细了解需要太多的时间和费用来扩展,而训练模型可以生成密集的高维(1000s)向量。

四、预训练模型

        预训练模型是为解决一般问题而创建的模型,可以按原样使用或作为解决复杂有限问题的起点。有许多预训练模型可用于不同类型的数据的示例。BERT、Word2Vec 和 ELMo 是可用于文本数据的众多模型中的一部分。这些模型已经在非常大的数据集中进行了训练,并将单词、句子、整个段落和文档转换为向量嵌入。但预训练模型不仅限于文本数据,图像和音频数据也有许多预训练模型通常可用。像Inception这样的模型使用卷积神经网络(CNNs)模型和DALL-E 2,它使用扩散模型。

五、可以嵌入哪些类型的东西?

        向量嵌入可以提供的关键机会之一是能够将任何类型的数据表示为向量嵌入。目前有许多示例,其中文本和图像嵌入被大量用于创建解决方案,例如使用 GPT-4 等工具的自然语言处理 (NLP) 聊天机器人或 DALL-E 2 等生成图像处理器。

5.1 文本嵌入

        文本嵌入可能是最容易理解的,我们一直在使用文本嵌入作为大多数示例的基础。文本嵌入从基于文本的对象的数据语料库开始,因此对于像Word2Vec这样的大型语言模型,它们使用来自维基百科等大型数据集。但是,文本嵌入几乎可用于任何类型的基于文本的数据集,您希望快速轻松地搜索最近邻或语义相似的结果。

        例如,假设您想创建一个 NLP 聊天机器人来回答有关您的产品的问题,您可以使用产品文档和产品常见问题解答的文本嵌入,允许聊天机器人根据提出的问题回复查询。或者,将您多年来收集的所有食谱作为数据语料库,并使用该数据根据储藏室中的所有成分提供食谱。文本嵌入带来的是获取单词、段落和文档等非结构化数据并以结构化形式表示它们的能力。

5.2 图像嵌入

图像嵌入(如文本嵌入)可以表示图像的多个不同方面。从完整图像到单个像素,图像嵌入提供了对图像具有的特征集进行分类的能力,并以数学方式呈现这些特征,以供机器学习模型分析或供Dall-E 2等图像生成器使用。

图像嵌入最常见的用法之一可能是用于分类和反向图像搜索。例如,我有一张在我后院拍摄的蛇的照片,我想知道它是什么类型的蛇,它是否有毒。有了所有不同类型的蛇的大数据语料库,我可以将蛇的图像输入到所有蛇的矢量嵌入的矢量数据库中,并找到离我的图像最近的邻居。从语义搜索中,我可以提取离我的蛇最近的最近邻图像的所有“属性”,并确定它是哪种蛇以及我是否应该关注。

如何使用矢量嵌入的另一个例子是自动图像编辑,如谷歌魔术照片编辑器,它允许生成AI编辑图像,对图像的特定部分进行编辑,例如从背景中删除人物或添加更好的构图。

5.3 产品嵌入

如何使用向量嵌入的另一个示例是在推荐引擎中。产品嵌入可以是任何东西,从电影、歌曲到洗发水。通过产品嵌入,电子商务网站可以通过搜索结果、点击流和购买模式观察购物者的行为,并根据语义提出推荐,类似地推荐新产品或利基产品。例如,假设我访问了我最喜欢的在线零售商。我正在仔细阅读该网站,并为我刚刚得到的新小狗在我的购物车中添加了一堆东西。我添加了我用完的小狗食物,新的租约,一个狗碗和一个水盘。然后我搜索网球,因为我希望我的新小狗有一些玩具可以玩。现在我真的对网球或狗玩具感兴趣吗?如果我在当地的宠物店,有人在帮助我,他们会清楚地看到我对网球并不真正感兴趣,我实际上对狗玩具感兴趣。产品嵌入带来的是能够从我的购买经验中收集这些信息,使用为每个产品生成的矢量嵌入,专注于狗,并预测我实际上在寻找什么狗玩具而不是网球。

六、如何开始使用向量嵌入

        向量嵌入的概念可能非常压倒性。每当我们尝试可视化n维并使用这些来寻找语义相似性时,都将是一个挑战。值得庆幸的是,有许多工具可用于创建矢量嵌入,如Word2Vec,CNN和许多其他工具,可以将您的数据转换为矢量。

        如何处理这些数据,如何存储和访问以及如何更新这些数据才是真正的挑战所在。

        虽然这听起来很复杂,但 Astra DB 上的矢量搜索通过一个完全集成的解决方案为您处理所有这些问题,该解决方案提供了为 AI 构建上下文数据所需的所有部分。从数字神经系统 Astra Streaming,建立在提供内联矢量嵌入的数据管道之上,一直到实时大容量存储、检索、访问和处理,通过当今市场上最具可扩展性的矢量数据库 Astra DB,在一个易于使用的云平台中。立即免费试用DataStax Astra DB。

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

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

相关文章

【C语言】浅谈代码运行效率及内存优化

【C语言】浅谈代码运行效率及内存优化 C语言作为一种高效率的编译语言 常用来写单片机等讲究时序性的设备 而只有代码优化得好 才能提高运行效率 当然这里的代码优化 并不是编译器优化 而是人为的代码习惯 文章目录 代码效率条件判断if else语句 抛弃边缘状态中断函数串口解析…

算法基础学习|排序

快速排序 模板 void quick_sort(int q[], int l, int r) {if (l > r) return;int i l - 1, j r 1, x q[l r >> 1];while (i < j){do i ; while (q[i] < x);do j -- ; while (q[j] > x);if (i < j) swap(q[i], q[j]);}quick_sort(q, l, j)&#xf…

希尔排序(C++实现)

文章目录 前言1. 基础概念2. 动图演示3. 代码实现4. 排序过程5. 效率分析6. 总结 前言 上篇文章讲了直接插入排序算法。 首先&#xff0c;在待排序的数组中&#xff0c;元素本身就是有序的情况下&#xff0c;就不需要移动任何元素&#xff0c;所以直接插入排序最好情况时间复…

Javascript 事件的动态绑定

动态绑定事件&#xff0c;是指在代码执行过程中&#xff0c;通过Javascript代码来绑定事件。这种技术可以大大增强网页的交互性和用户体验。上一期介绍的是通过事件监听器 EventListener 去实现元素颜色的变化。这一期将通过动态绑定方法去实现&#xff0c;对象.事件 匿名函数…

哈希/散列--哈希表[思想到结构]

文章目录 1.何为哈希?1.1百度搜索1.2自身理解1.3哈希方法/散列方法1.4哈希冲突/哈希碰撞1.5如何解决?哈希函数的设计 2.闭散列和开散列2.1闭散列/开放定址法2.2开散列/链地址法/开链法1.概念2.容量问题 3.代码实现[配备详细注释]3.1闭散列3.2开散列 1.何为哈希? 1.1百度搜索…

【工具】idea 设置自动渲染注释

前言 需求&#xff1a;自动渲染文档注释&#xff0c;看源码更加舒服。 已知 crtl alt Q 可以 设置 尝试搜索 render&#xff0c;发现有启用 “渲染文档注释” 的地方 坐标 &#xff1a; Settings -> Editor-> Appearance

CSS3与HTML5

box-sizing content-box&#xff1a;默认&#xff0c;宽高包不含边框和内边距 border-box&#xff1a;也叫怪异盒子&#xff0c;宽高包含边框和内边距 动画&#xff1a;移动translate&#xff0c;旋转、transform等等 走马灯&#xff1a;利用动画实现animation&#xff1a;from…

分布式锁:jvm本地加锁解决商品超卖的方案

一 分布式锁 1.1 分布式锁的作用 在多线程高并发场景下&#xff0c;为了保证资源的线程安全问题&#xff0c;jdk为我们提供了synchronized关键字和ReentrantLock可重入锁&#xff0c;但是它们只能保证一个工程内的线程安全。在分布式集群、微服务、云原生横行的当下&#xff…

python二次开发CATIA:根据已知数据点创建曲线

已知数据点存于Coords.txt文件如下&#xff1a; 8.67155477658819,20.4471021292557,0 41.2016126836927,20.4471021292557,0 15.9568941320569,-2.93388599177698,0 42.2181532110364,-6.15301746150354,0 43.0652906622083,-26.4843096139083,0 -31.6617679595947,-131.1513…

Java基本数据类型和变量

目录 一、基本数据类型 1.1 整型 1.1.1 byte 1.1.2 short 1.1.3 int 1.1.4 long 1.2 浮点型 1.2.1 float 1.2.2 double 1.3 字符型 1.4 布尔型 二、变量 2.1 变量的概念 2.2 语法格式 2.3 整型变量 2.3.1 整型变量 2.3.2 长整型变量 2.3.3 短整型变量 2.3.…

【Unity2022】Unity实现在两个物体之间连出一条线

文章目录 Line Renderer组件添加Line Renderer组件重要属性Positions&#xff08;位置&#xff09;Width &#xff08;宽度&#xff09;Material&#xff08;材质&#xff09;其他属性 使用脚本绘制直线绳子运行结果其他文章 Line Renderer组件 我们可以使用LineRenderer组件来…

【GO 编程语言】面向对象

指针与结构体 文章目录 指针与结构体一、OOP 思想二、继承三、方法 一、OOP 思想 Go语言不是面向对象的语言&#xff0c;这里只是通过一些方法来模拟面向对象&#xff0c;从而更好的来理解面向对象思想 面向过程的思维模式 1.面向过程的思维模式是简单的线性思维&#xff0c;…

苹果电脑壁纸软件Irvue for mac激活

Irvue是一款Mac上的壁纸软件&#xff0c;里面包含了数千张来精彩照片&#xff0c;方便用户将喜欢的照片设置为壁纸。以下是Irvue软件的一些主要特点和功能&#xff1a; 丰富的壁纸资源&#xff1a;Irvue提供了数千张来自Unsplash的高分辨率照片&#xff0c;涵盖了风景、建筑、…

【前段基础入门之】=>元素定位布局

导语&#xff1a; CSS 元素定位&#xff0c;是目前 CSS 页面布局的一种主要方式。 文章目录 相对定位开启相对定位相对定位的参考点相对定位的特点 绝对定位开启绝对定位绝对定位的参考点绝对定位的特点 固定定位开启固定定位固定定位的参考点固定位的特点 粘性定位开启粘性定位…

详解C语言—编译与链接

目录 1、程序的翻译环境 2、C语言程序的编译链接 3、程序执行的过程&#xff1a; 1、程序的翻译环境 在ANSI C标准的任何一种实现中&#xff0c;存在两个不同的环境。 第1种是翻译环境&#xff0c;在这个环境中源代码被转换为可执行的机器指令。 第2种是执行环境&#xff0…

基于SSM的电动车上牌管理系统(有报告)。Javaee项目。

演示视频&#xff1a; 基于SSM的电动车上牌管理系统&#xff08;有报告&#xff09;。Javaee项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过Spring SpringM…

【3】c++设计模式——>UML表示类之间的关联关系

关联关系 关联&#xff08;Assocition&#xff09;关系是类与类之间最常见的一种关系&#xff0c;它是一种结构化的关系&#xff0c;表示一个对象与另一个对象之间有联系&#xff0c;如汽车和轮胎、师傅和徒弟、班级和学生等。在UML类图中&#xff0c;用&#xff08;带接头或不…

JVM篇---第一篇

系列文章目录 文章目录 系列文章目录一、知识点汇总二、知识点详解:三、说说类加载与卸载一、知识点汇总 JVM是Java运行基础,面试时一定会遇到JVM的有关问题,内容相对集中,但对只是深度要求较高. 其中内存模型,类加载机制,GC是重点方面.性能调优部分更偏向应用,重点突出实践…

专业图标制作软件 Image2icon 最新中文 for mac

Image2Icon是一款用于Mac操作系统的图标转换工具。它允许用户将常见的图像文件&#xff08;如PNG、JPEG、GIF等&#xff09;转换为图标文件&#xff08;.ico格式&#xff09;&#xff0c;以便在Mac上用作应用程序、文件夹或驱动器的自定义图标。 以下是Image2Icon的一些主要功…