VADD

语法
VADD key [REDUCE dim] (FP32 | VALUES num) vector element [CAS] [NOQUANT | Q8 | BIN]
  [EF build-exploration-factor] [SETATTR attributes] [M numlinks]
可用版本
Redis Open Source 8.0.0
时间复杂度
添加每个元素的时间复杂度为 O(log(N)),其中 N 是向量集中的元素数量。

将新元素添加到由 key 指定的向量集中。向量可以作为 32 位浮点数 (FP32) 的 blob 值提供,也可以作为浮点数字符串提供,前缀为元素数量(例如,下面的例子中为 3)。

VADD mykey VALUES 3 0.1 1.2 0.5 my-element

必需参数

key

是保存向量集数据的键名。

FP32 vector 或 VALUES num vector

32 位浮点数 (FP32) 的 blob 值,或者 num 个浮点数字符串。

element

是添加到向量集中的元素名称。

可选参数

REDUCE dim

通过随机投影降低向量维度。投影矩阵将与向量集一起保存和重新加载。请注意,REDUCE 选项必须紧接在向量之前传递。例如:

VADD mykey REDUCE 50 VALUES ...
CAS

以 check-and-set 方式部分使用线程执行操作。耗时的邻居候选集合过程在后台执行,而命令在主线程中执行。

NOQUANT

对于给定 key 的第一次 VADD 调用,NOQUANT 强制创建不使用 int8 量化的向量,否则 int8 量化是默认的。

BIN

强制向量使用二进制量化而不是 int8 量化。这速度更快,内存使用更少,但会影响召回质量。

Q8

强制向量使用有符号 8 位量化。这是默认设置,此选项仅用于确保在插入时检查向量集格式是否相同。

注意
NOQUANTQ8BIN 是互斥的。
EF build-exploration-factor

在将新节点连接到现有分层可导航小世界 (HNSW) 图时,用于寻找优质候选节点所付出的努力程度。默认值为 200。使用更大的值可能有助于获得更好的召回率。为了提高召回率,也可以在 VSIM 搜索期间增加 EF。

SETATTR attributes

将属性(以 JavaScript 对象形式)关联到新创建的条目,或更新(如果已存在)其属性。这与单独调用 VSETATTR 命令相同。

M numlinks

是图中每个节点与其他节点的最大连接数。默认值为 16。连接数越多,内存使用越多,但图探索效率更高。零层(所有节点至少存在于零层)的节点有 M * 2 个连接,而其他层只有 M 个连接。例如,将 M 设置为 64,零层将至少使用 1024 字节的内存。这是 M * 2 个连接乘以 8 字节(指针),即 128 * 8 = 1024。对于更高层,请考虑以下情况:

  • 平均每个节点出现在约 1.33 个层中(来自 HNSW 论文的经验观察),这意味着每个节点约有 0.33 个更高层。
  • 这些更高层中的每个节点都有 M = 64 个连接。

因此,每个节点的额外内存约为 0.33 × 64 × 8 ≈ 169.6 字节,总内存约为 1193 字节。

如果您没有召回质量问题,默认值是可以接受的,并且使用的内存最少。

RESP2 回复

以下之一:

RESP3 回复

以下之一:


评价此页面
返回顶部 ↑