本页介绍了如何将向量存储在哈希中。哈希提供了一种在 Memorystore for Valkey 中高效存储向量的方式。
数据序列化
在将向量存储在哈希数据类型中之前,需要将向量转换为 Memorystore for Valkey 可识别的格式。它需要将向量序列化为二进制 blob,其中 blob 的大小等于数据类型的字节大小(例如,FLOAT32 为 4)乘以向量的维度数量。对于数值向量,一种常用的选择是 Python NumPy 库。
连接到 Memorystore for Valkey
在将向量存储到哈希中之前,请使用与 OSS Redis 兼容的客户端(例如 redis-py)建立与 Memorystore for Valkey 实例的连接。
将向量存储在哈希中
哈希类似于字典,包含键值对。使用 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_server_host', port=6379)
redis_client.hset('vector_storage', 'vector_key', serialized_vector) # 'vector_key' is a unique identifier
- 为确保成功编入索引,您的向量数据必须符合索引架构中设置的维度和数据类型。
回填索引
在以下任一场景中,可能会发生回填索引的情况:
- 创建索引后,回填过程会扫描键空间中符合索引过滤条件的所有条目。
- 向量索引及其数据会持久保存在 RDB 快照中。加载 RDB 文件时,系统会自动触发索引回填流程。此过程会主动检测自创建 RDB 快照以来索引中的任何新条目或修改条目,并将其集成到索引中,从而保持索引完整性并确保结果是最新的。