dot Redis 8 来了——而且是开源的

了解更多

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

在最近一次前往瑞士的家庭旅行中,当我们在可爱的拉沃葡萄园梯田漫步时,我的儿子用他的智能手机拍了一张照片。

使用 Google Lens,他能够使用图像快速查找 这个联合国教科文组织世界遗产地 的迷人历史。 Google Lens 允许用户使用一种称为向量相似度搜索 (VSS) 的技术来“搜索他们周围看到的东西”,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. 2D 向量空间中向量嵌入的简化表示

在上面的图 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 笔记本,说明了将视觉和语义相似性构建到您的应用程序中所需的关键要素。 这些是

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

试试看,玩得开心。 我们很乐意听取您对 Redis VSS 的第一次体验的看法。

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

想大规模试用 Redis VSS 吗? 

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

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

其他资源