En esta página se explica cómo almacenar vectores en hashes. Los hashes proporcionan una forma eficiente de almacenar vectores en Redis.
Serialización de datos
Antes de almacenar vectores en un hash de Redis, estos deben convertirse a un formato que Redis pueda interpretar. Requiere la serialización de vectores en blobs binarios cuyo tamaño sea igual al tamaño en bytes del tipo de datos (por ejemplo, 4 para FLOAT32) multiplicado por el número de dimensiones del vector. Una opción popular para los vectores numéricos es la biblioteca NumPy de Python:
Conectarse a Redis
Antes de almacenar el vector en un hash, establece una conexión con tu instancia de Redis mediante un cliente como redis-py:
Almacena el vector en un hash
Los hashes de Redis son como diccionarios, con pares clave-valor. Usa el comando HSET
de Redis para almacenar tu vector serializado:
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
- Para que la indexación se realice correctamente, los datos vectoriales deben cumplir las dimensiones y el tipo de datos definidos en el esquema del índice.
Reposición de índices
La indexación de datos históricos puede producirse en uno de los siguientes casos:
- Una vez creado un índice, el procedimiento de relleno retroactivo analiza el espacio de claves de Redis en busca de entradas que cumplan los criterios del filtro del índice.
- Los índices vectoriales y sus datos se conservan en instantáneas de RDB. Cuando se carga un archivo RDB, se activa un proceso automático de relleno de índices. Este proceso detecta e integra de forma activa cualquier entrada nueva o modificada en el índice desde que se creó la captura de RDB, lo que mantiene la integridad del índice y garantiza que los resultados estén actualizados.