向量索引

本页面介绍了如何在哈希中存储向量。哈希提供了一种在 Redis 中高效存储向量的方式。

数据序列化

在 Redis 哈希中存储向量之前,需要将向量转换为 Redis 可理解的格式。这需要将向量序列化为二进制 blob,其中大小等于数据类型的字节大小(例如,FLOAT32 为 4)乘以向量的维度数。对于 数值向量,Python NumPy 库是一个热门选择。

连接到 Redis

在哈希中存储向量之前,请使用 redis-py等客户端与集群建立连接。

在哈希中存储向量

Redis 哈希类似于字典,包含键值对。使用 Redis HSET 命令存储序列化向量:

import numpy as np
import redis

# Sample vector
vector = np.array([1.2, 3.5, -0.8], dtype=np.float32) # 3-dimensional vector

# Serialize to a binary blob
serialized_vector = vector.tobytes()

redis_client = redis.cluster.RedisCluster(host='your_redis_host', port=6379)

redis_client.hset('vector_storage', 'vector_key', serialized_vector)  # 'vector_key' is a unique identifier
  • 为了成功进行索引,向量数据必须符合索引架构中设置的维度和数据类型。

回填索引

在以下任一情况下,可能会发生回填索引:

  • 创建索引后,回填过程会扫描 Redis 键空间,以查找符合索引过滤条件的条目。
  • 向量索引及其数据会保留在 RDB 快照中。加载 RDB 文件时,系统会自动触发索引回填过程。此过程会主动检测自创建 RDB 快照以来索引中的任何新条目或修改后的条目,并将其集成到索引中,从而保持索引完整性并确保结果是最新的。