货物

什么是矢量数据库,它们的工作原理和潜在市场

矢量数据库是一种将数据存储为高维向量的数据库,高维向量是特征或属性的数学表示。 

这些向量通常是通过对原始数据(例如文本、图像、音频、视频等)应用某种嵌入函数来生成的。

矢量数据库可以是 definite 是一种索引和存储向量嵌入的工具,用于快速检索和相似性搜索,具有元数据过滤和水平缩放等功能。

预计阅读时间: 9 分钟

日益增长的投资者兴趣

最近几周,投资者对矢量数据库的兴趣有所增加。 自 2023 年初以来,我们注意到:

  • 矢量数据库启动 减轻 他有 50 万美元 B 轮融资;
  • 松球 在 B 轮融资中筹集了 100 亿美元,估值为 750 亿美元;
  • 浓度 ,一个开源项目,为其嵌入数据库筹集了 18 万美元;

让我们更详细地了解什么是矢量数据库。

向量作为数据表示

矢量数据库在很大程度上依赖于矢量嵌入,这是一种数据表示形式,其中包含对 AI 理解和维持长期记忆至关重要的语义信息,以便在执行复杂活动时加以利用。 

矢量嵌入

矢量嵌入就像一张地图,但它们不是向我们展示事物在世界上的位置,而是向我们展示事物在某个叫做 向量空间。 向量空间有点像一个大游乐场,一切都有它玩耍的地方。 想象一下,你有一群动物:一只猫、一只狗、一只鸟和一条鱼。 我们可以通过在操场上给它一个特殊的位置来为每个图像创建一个矢量嵌入。 猫可能在一个角落,狗在另一边。 鸟可以在天上,鱼可以在池塘里。 这个地方是一个多维空间。 每个维度对应着它们的不同方面,比如鱼有鳍,鸟有翅膀,猫狗有腿。 它们的另一个方面可能是鱼属于水,鸟主要属于天空,而猫和狗则属于地面。 一旦我们有了这些向量,我们就可以使用数学技术根据它们的相似性对它们进行分组。 根据我们掌握的信息,

因此,向量嵌入就像一张地图,可以帮助我们找到向量空间中事物之间的相似性。 就像地图可以帮助我们环游世界一样,矢量嵌入可以帮助我们在矢量游乐场中导航。

关键思想是语义相似的嵌入之间的距离更小。 为了找出它们有多相似,我们可以使用向量距离函数,例如欧氏距离、余弦距离等。

矢量数据库与矢量库

矢量库 将向量的嵌入存储在内存中的索引中,以便执行相似性搜索。 矢量库具有以下特征/限制:

  1. 仅存储向量 :向量库只存储向量的嵌入,而不存储生成它们的关联对象。 这意味着当我们查询时,矢量库将以相关矢量和对象 ID 进行响应。 这是有限制的,因为实际信息存储在对象中而不是 id 中。 为了解决这个问题,我们应该将对象存储在二级存储中。 然后我们可以使用查询返回的 ID 并将它们与对象匹配以了解结果。
  2. 索引数据是不可变的 : 矢量库生成的索引是不可变的。 这意味着一旦我们导入了数据并建立了索引,我们就无法进行任何更改(不能进行新的插入、删除或更改)。 要更改我们的索引,我们将不得不从头开始重建它
  3. 限制导入时查询 : 大多数矢量库在导入数据时无法查询。 我们需要先导入所有数据对象。 所以索引是在导入对象之后创建的。 对于需要导入数百万甚至数十亿个对象的应用程序来说,这可能是个问题。

有许多矢量搜索库可用: Facebook 的 FAISS,惹恼了 通过 Spotify 和 扫描神经网络 由谷歌。 FAISS 使用聚类方法,Annoy 使用树,ScanNN 使用向量压缩。 每个都有性能权衡,我们可以根据我们的应用程序和性能指标进行选择。

CRUD

矢量数据库与矢量库的主要区别在于能够存档、更新和删除数据。 矢量数据库有 CRUD 支持 完全(创建、读取、更新和删除)解决了矢量库的局限性。

  1. 归档载体和对象 :数据库可以存储数据对象和向量。 由于两者都已存储,我们可以将向量搜索与结构化过滤器结合起来。 过滤器使我们能够确保最近的邻居与元数据过滤器匹配。
  2. 可变性 : 作为矢量数据库完全支持 垃圾, 创建索引后,我们可以轻松地添加、删除或更新索引中的条目。 这在处理不断变化的数据时特别有用。
  3. 实时搜索 :与矢量库不同,数据库允许我们在导入过程中查询和修改数据。 当我们加载数百万个对象时,导入的数据仍然是完全可访问和可操作的,因此您不必等待导入完成就可以开始处理已有的数据。

简而言之,矢量数据库通过解决前面讨论的自包含矢量索引的局限性,为处理矢量嵌入提供了一个更好的解决方案。

但是是什么让矢量数据库优于传统数据库呢?

矢量数据库与传统数据库

传统数据库旨在使用关系模型存储和检索结构化数据,这意味着它们针对基于数据列和行的查询进行了优化。 虽然可以在传统数据库中存储向量嵌入,但这些数据库并未针对向量操作进行优化,无法有效地对大型数据集执行相似性搜索或其他复杂操作。

这是因为传统数据库使用基于简单数据类型(例如字符串或数字)的索引技术。 这些索引技术不适用于矢量数据,矢量数据具有高维性,需要专门的索引技术,如倒排索引或空间树。

此外,传统数据库并非旨在处理通常与矢量嵌入相关的大量非结构化或半结构化数据。 例如,一个图像或音频文件可能包含数百万个数据点,传统数据库无法有效处理这些数据点。

另一方面,矢量数据库专为存储和检索矢量数据而设计,并针对大型数据集上的相似性搜索和其他复杂操作进行了优化。 他们使用专为处理高维数据而设计的索引技术和算法,使它们比传统数据库更有效地存储和检索向量嵌入。

现在您已经阅读了很多关于矢量数据库的内容,您可能想知道,它们是如何工作的? 让我们来看看。

矢量数据库如何工作?

我们都知道关系数据库的工作原理:它们在行和列中存储字符串、数字和其他类型的标量数据。 另一方面,矢量数据库对矢量进行操作,因此其优化和查询方式大不相同。

在传统数据库中,我们通常查询数据库中的行,其中的值通常与我们的查询完全匹配。 在向量数据库中,我们应用相似性度量来找到与我们的查询最相似的向量。

矢量数据库结合了几种算法,这些算法都参与最近邻搜索 (ANN)。 这些算法通过散列、量化或基于图形的搜索来优化搜索。

这些算法被组装成一个管道,可以快速准确地检索查询向量的邻居。 由于向量数据库提供了近似结果,我们考虑的主要权衡是在准确性和速度之间。 结果越精确,查询就越慢。 然而,一个好的系统可以提供超快速的搜索和近乎完美的准确性。

  • 索引 :矢量数据库使用 PQ、LSH 或 HNSW 等算法对矢量进行索引。 此步骤将向量与数据结构相关联,从而加快搜索速度。
  • 询问 :向量数据库将索引查询向量与数据集中的索引向量进行比较,以找到最近的邻居(应用该索引使用的相似性度量)
  • 后期处理 :在某些情况下,矢量数据库会从数据集中获取最终的最近邻,并对它们进行后处理以返回最终结果。 此步骤可能包括使用不同的相似性度量对最近的邻居进行重新分类。

好处

矢量数据库是对大型数据集进行相似性搜索和其他复杂操作的强大工具,而传统数据库无法有效执行这些操作。 要构建功能向量数据库,嵌入是必不可少的,因为它们捕获数据的语义并实现准确的相似性搜索。 与矢量库不同,矢量数据库旨在适应我们的用例,使其成为性能和可扩展性至关重要的应用程序的理想选择。 随着机器学习和人工智能的兴起,矢量数据库对于包括推荐系统、图像搜索、语义相似性在内的广泛应用变得越来越重要,而且这个例子不胜枚举。 随着该领域的不断发展,我们可以期待在未来看到更多矢量数据库的创新应用。

Ercole Palmeri

创新通讯
不要错过有关创新的最重要新闻。 注册以通过电子邮件接收它们。

Articoli最新回应

卡塔尼亚综合诊所的 Apple 观众对增强现实进行创新干预

卡塔尼亚综合诊所使用 Apple Vision Pro 商业查看器进行了眼部整形手术……

3 2024五月

儿童涂色页的好处 - 适合所有年龄段的魔法世界

通过着色培养精细运动技能可以帮助孩子们为写作等更复杂的技能做好准备。填色…

2 2024五月

未来已来:航运业如何彻底改变全球经济

海军部门是真正的全球经济力量,已迈向 150 亿美元的市场……

1 2024五月

出版商和 OpenAI 签署协议以规范人工智能处理的信息流

上周一,英国《金融时报》宣布与 OpenAI 达成协议。英国《金融时报》授予其世界级新闻报道许可……

四月30 2024