Cette page explique comment stocker des vecteurs dans des hachages. Les hachages permettent de stocker efficacement des vecteurs dans Redis.
Sérialisation des données
Avant de stocker des vecteurs dans un hachage Redis, ils doivent être convertis dans un format que Redis comprend. Il nécessite une sérialisation des vecteurs dans des blobs binaires, où la taille est égale à la taille en octets du type de données (par exemple, 4 pour FLOAT32) multiplié par le nombre de dimensions du vecteur. La bibliothèque NumPy Python est un choix populaire pour les vecteurs numériques :
Se connecter à Redis
Avant de stocker le vecteur dans un hachage, établissez une connexion à votre instance Redis à l'aide d'un client tel que redis-py :
Stocker le vecteur dans un hachage
Les hachages Redis sont comme des dictionnaires, avec des paires clé-valeur. Utilisez la commande HSET
Redis pour stocker votre vecteur sérialisé :
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
- Pour que l'indexation réussisse, vos données vectorielles doivent respecter les dimensions et le type de données définis dans le schéma d'index.
Remplissage des index
Le remplissage des index peut se produire dans l'un des scénarios suivants:
- Une fois un indice créé, la procédure de remplissage analyse l'espace de clés Redis à la recherche d'entrées qui répondent aux critères de filtre de l'indice.
- Les index vectoriels et leurs données sont conservés dans les instantanés RDB. Lorsqu'un fichier RDB est chargé, un processus de remplissage d'index automatique est déclenché. Ce processus détecte et intègre activement les entrées nouvelles ou modifiées dans l'index depuis la création de l'instantané du RDB, ce qui permet de maintenir l'intégrité de l'index et de garantir les résultats actuels.