dot 未来速度即将在您所在城市举行的一场活动中展现。

加入我们在 Redis 发布会

使用新的 Redis 向量相似性搜索构建智能应用程序

在最近一次瑞士家庭旅行中,我的儿子在穿过美丽的拉沃葡萄园梯田时用智能手机拍了一张照片。

使用 Google Lens,他能够使用这张图片快速查找 这个联合国教科文组织世界遗产 的迷人历史。Google Lens 允许用户通过使用称为向量相似性搜索 (VSS) 的技术来“搜索他们所看到的东西”,这是一种由 AI 支持的方法,用于测量任何两段数据的相似性,包括图像。

VSS 使开发人员能够构建具有强大功能的智能应用程序,例如“视觉搜索”或“语义相似性”,只需几行代码即可。最棒的是,您无需成为人工智能 (AI) 或机器学习 (ML) 专家即可做到这一点。事实上,使用 Redis 向量相似性搜索变得前所未有的容易,这是一项我们刚刚发布的新功能,它将 Redis 变成了一个 向量数据库

什么是 VSS?想试试吗?继续阅读!

什么是向量相似性搜索 (VSS)?

如上所述,VSS 是一种高级搜索方法,用于测量不同数据片段之间的相似性。虽然它在处理结构化数据时效果很好,但 VSS 在比较非结构化数据的相似性方面真正脱颖而出,例如图像、音频或长篇文本。例如,使用 VSS 和一些 AI/ML(下一节将详细介绍),您可以获取一对图像并为每个图像生成向量。这些向量——或者更准确地说,向量“嵌入”——将每个图像的特征编码为一个一维数字数组。这些嵌入可以相互比较,以确定它们之间的视觉相似性。任何两个嵌入之间的“距离”表示原始图像之间的相似程度——嵌入之间的“距离”越短,两个源图像越相似。

如何从图像或文本中生成向量?

这就是 AI/ML 发挥作用的地方。

预训练机器学习模型的广泛可用性使得将几乎任何类型的非结构化数据(图像、音频、长篇文本)转换为向量嵌入变得十分简单。例如,Hugging Face 是一家专注于 自然语言理解 (NLU) 的初创公司,提供数百种最先进模型的免费访问权限,这些模型可以将原始文本数据转换为其向量表示(嵌入)。

Vector Similarity Diagram

这些模型的巧妙之处在于,只有当两个句子的含义在语义上相似时,为这两个句子生成的嵌入才会“接近”彼此。

Vector Similarity Illustration
图 1. 二维向量空间中向量嵌入的简化表示

在上面的图 1 中,您可以了解句子嵌入之间的关系。如果您查看为与“手机”相关的句子生成的嵌入,您会注意到它们彼此“接近”(参见图表左上角)。更重要的是,这两个嵌入明显远离为与食品补充剂产品相关的句子生成的嵌入(图表右下角)。嵌入之间的“距离”充当其语义相似性的代理。甚至有一些模型可以捕获多种语言中句子的语义相似性。

在计算机视觉领域,也有等效的模型:Torchvision 是一个用于计算机视觉的 PyTorch 库,它提供许多可以用来为给定图像生成向量的预训练模型。与 Hugging Face 模型类似,只有当两张图像在视觉上相似时,Torchvision 生成的两张图像的嵌入才会彼此接近。

开发人员可以将这些免费提供的模型利用到他们的应用程序中。

但是,生成向量表示或嵌入只是第一步。您需要一个数据库来存储这些向量、对其进行索引并执行向量相似性搜索。

Redis 作为向量数据库

向量相似性搜索的核心是存储、索引和查询向量数据的能力。这些是在向量数据库中必不可少的功能。

我们的 VSS 功能作为 RediSearch 模块的新功能构建。它允许开发人员像在 Redis 散列中存储任何其他字段一样轻松地存储向量。它提供了执行低延迟搜索大型向量空间(通常跨多个机器分布的数万到数亿个向量)所需的先进索引和搜索功能。

简而言之,这个新的 RediSearch 功能将 Redis 变成您的应用程序需要的强大的实时内存向量数据库。

好的,那么我该如何将视觉或语义搜索相似性构建到我的应用程序中呢?

动手体验我们的 Redis VSS 演示

如果您有 Docker 和一些 Python 知识,您可以在容器上试用 Redis VSS,并使用现实数据集进行操作。Redis VSS 演示 提供逐步指导,帮助您入门。

您将启动一个包含 Redis VSS 的 Docker 容器,并完成几个 Jupyter Notebook,展示如何生成、加载、索引和查询从产品图像和文本描述生成的向量。

您将使用 Amazon Berkeley Object (ABO) 数据集,该数据集包含亚马逊上列出的数十万种产品的文本和图像。

在演示中,您将找到四个 Jupyter Notebook,展示构建视觉和语义相似性到应用程序中所需的几个关键元素。它们是

  1. 为 ABO 数据集中的产品图像和文本描述生成向量嵌入。
  2. 为向量数据创建索引。
  3. 将向量以及其他产品数据加载到 Redis 散列中。
  4. 运行视觉和语义相似性查询。

试一试,享受乐趣。我们很乐意听取您对 Redis VSS 的首次体验的反馈。

请加入我们的 #VSS Discord 频道。我们很乐意回答您可能对 VSS 及其潜在应用的任何问题。

想在规模上尝试 Redis VSS 吗?

注册我们的托管私有预览计划。

在私有预览期间,我们与一些拥有明确用例和大量数据的客户合作。我们将为您提供资源来尝试在规模上使用 VSS。作为回报,我们将要求您分享您对体验的反馈。
Discord 上与我们联系,让我们开始对话。

其他资源