paint-brush
彻底改变 AI 开发:Apache Cassandra 推出矢量搜索经过@datastax
1,973 讀數
1,973 讀數

彻底改变 AI 开发:Apache Cassandra 推出矢量搜索

经过 DataStax7m2023/05/22
Read on Terminal Reader

太長; 讀書

强大的矢量搜索与世界上最具扩展性的数据库 Apache Cassandra 相结合,是 AI 应用程序的游戏规则改变者。
featured image - 彻底改变 AI 开发:Apache Cassandra 推出矢量搜索
DataStax HackerNoon profile picture


没有数据就没有人工智能。当您的数据分散在各处时,您将花费更多时间来管理实施过程,而不是专注于最重要的事情:构建应用程序。世界上最著名的应用程序已经在使用 Apache Cassandra,因此提高数据效率成为一个越来越重要的目标。 AI 与规模有关,将矢量搜索——使用 AI 模型的一个关键组成部分——引入 Cassandra 将帮助组织削减成本、简化数据管理并从数据中榨取每一滴价值。


最近在 Cassandra 增强提案( CEP-30 ),进一步证明了 Cassandra 社区致力于快速构建可靠功能的承诺。这也证明了 Cassandra 对 AI 开发人员和处理海量数据集的组织的吸引力越来越大,为他们提供了创建高级数据驱动应用程序的工具。


什么是矢量搜索?

文本搜索的概念由来已久。它涉及在文档中搜索特定关键字。但重要数据不仅仅可以在文本中找到:音频、图像和视频(或某些组合)也包含需要搜索方法的相关信息。这就是矢量搜索的用武之地。它一直在使用已经有一段时间了,并且已经被证明在各种应用中相当有价值,尤其是在人工智能和机器学习领域。


也称为矢量相似性搜索,需要两个部分来提升您的搜索游戏。


首先,必须将原始数据索引到用作数学描述的矢量表示(数字数组)中。


其次,矢量数据需要以开发人员可以询问的方式存储,“给定一件事,还有什么其他事情相似?”它对开发人员来说简单而强大,但在服务器端大规模实施具有挑战性。这就是 Cassandra 真正大放异彩的地方,它可以在全球范围内始终如一地提供任何规模的数据,并且具有弹性,让您高枕无忧。


这绝不意味着要全面深入研究矢量搜索,而是更多地解释它可以通过创建有用数据的全新维度来降低代码复杂性并通过功能用户更快地投入生产来为您的应用程序做什么想。


矢量搜索的实际示例包括:

  • 基于内容的图像检索,根据图像的特征向量识别视觉上相似的图像。使用类似的库img2vec ,你可以将一个图像文件转换成512个可用于相似度搜索的唯一标识符。


  • 推荐系统,根据与他们之前交互过的项目的相似性向消费者推荐产品或内容。


  • 自然语言处理应用程序,其中可以识别文本内容之间的语义相似性并将其用于情感分析、文档聚类和主题建模等任务。这通常使用诸如word2vec并且可能需要 Cassandra 提供的规模。


  • 使用聊天 GPT?向量搜索对于大型语言模型 (LLM) 用例至关重要,因为它可以高效存储和检索向量嵌入,代表在 LLM 训练过程中获得的提炼知识。通过执行相似性搜索,向量搜索可以快速识别与用户提示对应的最相关的嵌入。


    这有助于 LLM 生成更准确和更适合上下文的响应,同时还为模型提供一种长期记忆形式。从本质上讲,矢量搜索是 LLM 与他们所训练的庞大知识库之间的重要桥梁。


卡桑德拉会发生什么?

Cassandra 项目永无止境地追求使 Cassandra 成为数据库领域的终极动力。如前所述,将数据转换为向量嵌入后,您需要一个地方来存储和使用它们。这些功能被添加到 Cassandra 中,以一种简单而强大的方式公开。


矢量数据类型

为了支持高维向量的存储,我们引入了一种新的数据类型,` VECTOR<type, dimension> `。这将使处理和存储Float32嵌入,常用于 AI 应用程序。这已经引发了将 Cassandra 添加到 AI 库中的讨论,例如浪链.在这个例子中,想象一下从描述中创建一个向量来启用语义相似性搜索。



CREATE TABLE products(

id UUID PRIMARY KEY,

name varchar,

description varchar,

item_vector VECTOR<float, 3>

);



ANN 搜索索引

我们将添加一个名为“VectorMemtableIndex”的新存储附加索引 (SAI),它将提供近似最近邻 (ANN) 搜索功能。该索引将与新数据类型和 Apache Lucene 的 Hierarchical Navigable Small World (HNSW) 库结合使用,以在 Cassandra 中实现高效的矢量搜索功能。


CREATE CUSTOM INDEX item_ann_index ON product(item_vector)

USING 'VectorMemtableIndex';


CQL 中的 ANN 运算符

为了让用户更轻松地对其数据执行 ANN 搜索,我们将引入一种新的 Cassandra 查询语言 (CQL) 运算符 ANN OF。该运算符将允许用户使用简单且熟悉的查询语法高效地对其数据执行 ANN 搜索。继续该示例,开发人员可以向数据库询问类似于根据描述创建的向量的内容。


SELECT * FROM product WHERE item_vector ANN OF [3.4, 7.8, 9.1]



突出 Cassandra 的可扩展性

当 Cassandra 4.0 发布时,一个容易被忽视的亮点是增强可插拔性的概念。 Cassandra 中新的矢量搜索功能是作为现有 SAI 框架的扩展构建的,避免了核心索引引擎的重写。它使用众所周知和广泛使用的HNSW 功能在 Lucene 中,它为在高维空间中寻找近似最近邻提供了一种快速有效的解决方案。


Cassandra 4 的新增功能突出了其卓越的模块化和可扩展性。随着 HNSW Lucene 的集成和 SAI 框架的扩展,开发人员现在可以更快地访问各种生产就绪功能。开发人员可以访问大量矢量数据库,其中许多人更喜欢在添加存储之前构建矢量索引引擎。十多年来,Cassandra 已成功解决了大规模数据存储的挑战性问题。我们非常有信心,在 Cassandra 中包含矢量搜索将提供更出色的生产就绪功能。


新用例

Cassandra 对机器学习和 AI 工作负载并不陌生。多年来,Cassandra 的长期用户一直将 Cassandra 用作快速高效的特征存储。甚至有传言说 OpenAI 在 LLM 的构建中大量使用 Cassandra。这些用例都使用了 Cassandra 的现有功能。将有许多方法可以使用新的矢量搜索。很高兴看到我们的社区提出了什么,但它们可能分为两类:


使用 ANN 搜索增强现有用例

如果您已经有基于 Cassandra 构建的应用程序,则可以通过合并 ANN(“近似最近邻”)搜索来增强其功能。例如,如果您有一个内容推荐系统,您可以使用 ANN 搜索来查找相似的项目并提高推荐的相关性。产品目录可以将特征反规范化为存储在同一记录中的嵌入向量。通过将行为映射到特征,可以进一步增强欺诈检测。想想一个用例,它可能是相关的。

构建需要矢量搜索的新东西

如果您正在开始一个需要快速相似性搜索功能的新项目,Cassandra 的新矢量搜索功能将是数据存储和检索的绝佳选择。知道您可以在同一个系统上从 GB 到 PB,这会让您专注于构建您的应用程序,而不用担心权衡取舍。除了存储向量嵌入之外,您还将拥有 CQL 的全部功能和全功能数据库的表格存储。


无论您如何使用 Cassandra,这些选项都将可用。如果是自己部署使用开源的Cassandra,部署在Kubernetes中使用K8ssandra或者在云中使用类似的服务DataStax Astra 数据库,您将获得同样出色的系统。通过开源获得的自由是选择如何构建应用程序的自由。


由开发者构建并为开发者服务

随着我们不断创新和扩展 Cassandra 的功能,我们始终致力于在数据管理方面保持领先地位。矢量搜索的引入是一个令人兴奋的新用例,它将使您的数据驱动应用程序更加强大和通用。这与其他一些尖端功能如分布式大规模 ACID 交易,将使 Cassandra 5.0 成为您可以进行的最重要的升级。我们也不会就此止步。支持 Cassandra 的公司和开发人员正在努力想出更多的方法来整合您的数据、简化管理并节省资金。


我们相信,这一新增功能不仅有助于 AI 开发人员,也有助于管理可从快速相似性搜索中受益的大型数据集的组织。因此,请密切关注 Cassandra 的 alpha 版本,该版本具有矢量搜索功能,计划在第三季度的某个时候发布。我们期待看到您将使用此新功能构建的出色应用程序,如果您与社区分享您的用例,我们将非常高兴卡桑德拉星球.



同样由 Patrick McFadin 和 DataStax在此处发布。