本页面介绍了如何以哈希形式存储向量。哈希是一种在 Redis 中高效存储矢量的方法。
数据序列化
在 Redis 哈希中存储矢量之前,需要将矢量转换为 Redis 可以理解的格式。它需要将向量序列化为二进制 BLOB,大小等于数据类型的字节大小(例如,4)乘以矢量的维度数。Python NumPy 库是数值矢量的热门选择:
连接到 Redis
在将矢量存储在哈希中之前,请使用 redis-py 等客户端与 Redis 实例建立连接:
将向量存储在哈希中
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.Redis(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 快照以来任何新增或修改条目,并将其集成到索引中,从而维护索引完整性并确保当前结果。