17611538698
webmaster@21cto.com

Apache Cassandra 新矢量搜索功能

作者 万能的大雄 分类 大数据 2023年05月16日

图片

导读:一个强大的搜索工具,加上世界上最具扩展性的数据库,是 AI 应用程序之游戏规则的强大改变者。

没有大数据和模型便没有人工智能。当你的数据被分散在各处时,你将花费非常多的时间来管理其实施过程,而不是专注于最重要的事情,比如构建AI应用程序,实现业务目标。

世界上最著名的应用程序已经在用 Apache Cassandra,全球在提高数据效率上已经成为一个越来越重要的目标。AI 与规模有关,它将矢量搜索引用,这是使用 AI 模型的一个关键组成部分。引入 Cassandra 将帮助组织削减成本、简化数据管理并从数据中『榨取』每一滴价值。

最近在 Cassandra 增强提案 ( CEP-30 )中概述的这一顶级功能进一步证明了 Cassandra 社区致力于快速构建可靠性的承诺。

这也充分证明了 Cassandra对 AI 开发人员和处理海量数据集组织的吸引力越来越大,为他们提供了创建高级数据驱动应用程序的工具。

什么是矢量搜索?

文本搜索的概念已经存在了很长时间,并且技术已相对成熟。

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

因此,它的全称为『矢量相似性搜索』。

首先,需要两个部分来提升我们的的搜索游戏。

首先,必须将原始数据索引到用作数学描述的矢量表示(数字数组)中。其次,矢量数据需要以一种开发者可以查询的方式存储,“给定一件事,还有什么其他事情相似?” 它对开发人员来说简单而强大,但在服务器端大规模实施具有挑战性。这就是 Cassandra 真正大放异彩的地方,它可以在全球范围内始终如一地提供任何规模的数据,并且具有弹性,让你高枕无忧。

这绝不意味着要全面深入研究矢量搜索,而是更多地说明它可以为你的应用程序做什么,它可以通过创建一个全新的、且有用数据维度来降低代码复杂性,并通过相关功能,用户可以更快地投入生产力阶段。

矢量搜索的实际用例包括如下:

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

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

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


如果想将它们引入和使用Chat GPT?

矢量搜索对于大型语言模型 (LLM) 至关重要,因为它可以高效存储和检索向量嵌入,代表在 LLM 训练过程中获得的提炼知识。

通过执行相似性搜索,向量搜索可以快速识别与用户提示对应的最相关的嵌入。这有助于 LLM 生成更准确和更适合上下文的响应,同时还为模型提供一种长期记忆形式。从本质上讲,矢量搜索是 LLM 与他们所训练的庞大知识库之间的重要桥梁。

Cassandra 即将发生什么

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

矢量数据类型

为了支持高维向量的存储,我们引入了一种新的数据类型,VECTOR. 这将支持处理和存储AI 应用程序中常用的Float32嵌入。

这已经引发了将 Cassandra 添加到像LangChain这样的 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 搜索。继续该示例,开发人员可以向数据库询问类似于根据描述创建的向量的内容。

CREATE CUSTOM INDEX item_ann_index ON product(item_vector) 
USING 'VectorMemtableIndex';

突出 Cassandra 的可扩展性

当 Cassandra 4.0 发布时,一个容易被忽视的亮点是增强了可插拔性的概念。

Cassandra 中新的矢量搜索功能是作为现有 SAI 框架的扩展构建的,它避免了核心索引引擎的重写。它使用 Lucene 中众所周知且广泛使用的HNSW 功能,为在高维空间中寻找近似最近邻提供了一种快速高效的解决方案。

Cassandra 4 的新增功能突出了其卓越的模块化和可扩展性。

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

新的用例

把 Cassandra 应用在机器学习和 AI 负载均衡上的场景已经越来越多。

多年来, Cassandra 的老用户一直将它作为快速高效的特征存储库。有江湖传言说 OpenAI 在 LLM 的构建中大量使用 Cassandra。这些现实用例都使用了 Cassandra 的现有功能。而现在有许多方法可以使用新的矢量搜索,开发者会很高兴看到开发者社区提出了什么新特性。

总体来说,它们大概可分为如下两类:

1)使用 ANN 搜索增强现有之用例

如果您已经有基于 Cassandra 构建的应用程序,则可以通过合并 ANN(“近似最近邻”)搜索来增强功能。

例如,如果有一个内容个性化推荐系统,就可以使用 ANN 搜索来查找相似的项目并提高推荐的内容相关性。其产品目录可以将特征反规范化为存储在同一记录中的嵌入向量中。

通过将行为映射到特征中,可以进一步增强欺诈检测。

2)构建向量搜索的新产品

如果你正在开始开发一个快速相似性搜索功能的项目,Cassandra 的矢量搜索新功能将是数据存储与数据检索是你的绝佳选择。

目前已知,可以在同一个系统上达到的数据可以从 GB 到 PB 级,这可以让开发者专注于构建应用程序上,而不用考虑其它权衡取舍。

除了存储向量嵌入之外,开发者还将拥有 CQL 的全部功能和全功能数据库的表格存储能力。

不管如何使用 Cassandra,这些选项都将可用。如果您自己使用开源 Cassandra 进行部署、比如使用K8ssandra部署在 Kubernetes 中或使用DataStax Astra DB等服务部署在云端中,你将获得同样出色的系统。

通过开源获得的价值,与云端相比,是可以选择如何构建应用程序的自由。

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

随着不断创新和扩展 Cassandra 的功能,我们开发者将在数据管理方面保持领先地位。而矢量搜索的引入则是一个令人兴奋的新用例,它将使数据驱动的应用程序更加强大与通用化。

这一特性与其他一些尖端技术功能(如大规模分布式 ACID 事务)一起,将使 Cassandra 5.0 成为开发者必须要做的升级。

 Cassandra 并不会从此止步,支持开发人员想出更多方法来整合数据、简化管理并有效节省资金。

这一新增功能不仅有助于 AI 开发人员,也有助于管理可从快速相似性搜索中受益的大型数据的组织。

小结

欢迎各位留意 Cassandra 的 alpha 版本,这是具有矢量搜索的新功能,该团队计划在第三季度的某个时间正式发布。

我们期待看到开发者使用此新功能构建出更出色的应用程序。


作者:万能的大雄

评论