Redis 向量集

Redis 向量集简介

向量集是一种类似于有序集合的数据类型,但向量集元素不像有序集合那样有一个分数,而是包含向量的字符串表示。向量集允许您向集合添加项目,然后可以

  • 检索与指定向量最相似的项目子集,或者
  • 检索与向量集中已有的元素向量最相似的项目子集。

向量集还提供可选的过滤搜索功能。您可以将属性与向量集中的全部或部分元素关联,然后使用 VSIM 命令的 FILTER 选项,在检索与给定向量相似的项目时,对这些属性应用简单的数学过滤器。以下是一个示例过滤器:".year > 1950"

向量集支持以下命令

  • VADD - 将元素添加到向量集,如果集合不存在则创建新集合。
  • VCARD - 检索向量集中的元素数量。
  • VDIM - 检索向量集中的向量维度。
  • VEMB - 检索与向量集元素关联的近似向量。
  • VGETATTR - 检索向量集元素的属性。
  • VINFO - 检索向量集的元数据和内部详细信息,包括大小、维度、量化类型和图结构。
  • VLINKS - 检索向量集中指定元素的邻居;即 HNSW 图各层的连接。
  • VRANDMEMBER - 检索向量集的随机元素。
  • VREM - 从向量集中移除元素。
  • VSETATTR - 设置或替换向量集元素的属性。
  • VSIM - 检索与给定向量或元素相似的元素,可选择过滤。

示例

以下示例概述了如何使用向量集。为清晰起见,我们将使用一组二维向量来表示笛卡尔坐标平面上的点。然而,在实际用例中,向量通常代表文本嵌入,并具有数百个维度。请参阅面向 AI 的 Redis,了解有关使用文本嵌入的更多信息。

我们将使用的点包括 A: (1.0, 1.0)、B: (-1.0, -1.0)、C: (-1.0, 1.0)、D: (1.0, -1.0) 和 E: (1.0, 0),如下图所示。

Example points on the coordinate plane.

基本操作

首先使用 VADD 将点向量添加到名为 points 的集合中。这也会创建向量集对象。TYPE 命令会为此对象返回 vectorset 类型。

使用 VCARD 获取集合中的元素数量(也称为集合的基数),并使用 VDIM 获取向量的维度数量

使用 VEMB 获取元素的坐标值。请注意,这些值通常不会是您添加向量时提供的精确值,因为会应用量化处理以提高性能。

使用 VSETATTRVGETATTR 设置和检索元素的 JSON 属性数据。您也可以向 VSETATTR 传递一个空字符串来删除属性数据

使用 VREM 移除不需要的元素

使用 VSIM 根据点到样本点的向量距离对点进行排序

找到最接近点 A 的四个元素并显示它们的距离“分数”

添加一些 JSON 属性,并使用过滤表达式将其包含在搜索中

更多信息

请参阅本节的其他页面,了解有关向量集功能和性能参数的更多信息。

评价此页面
返回顶部 ↑