Stocker des vecteurs

Cette page explique comment stocker des vecteurs dans des hachages. Les hachages constituent un moyen efficace de stocker des vecteurs dans Memorystore pour Valkey.

Sérialisation des données

Avant de stocker des vecteurs dans un type de données de hachage, ils doivent être convertis dans un format que Memorystore pour Valkey comprend. Elle nécessite la sérialisation des vecteurs en blobs binaires dont la taille est égale à la taille en octets du type de données (par exemple, 4 pour FLOAT32) multipliée par le nombre de dimensions du vecteur. La bibliothèque NumPy de Python est un choix populaire pour les vecteurs numériques :

Se connecter à Memorystore pour Valkey

Avant de stocker le vecteur dans un hachage, établissez une connexion à votre instance Memorystore pour Valkey à l'aide d'un client compatible OSS Redis tel que redis-py :

Stocker le vecteur dans un hachage

Les hachages sont semblables à des dictionnaires, avec des paires clé/valeur. Utilisez la commande HSET 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.cluster.RedisCluster(host='your_server_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.

Index de remplissage

Le remplissage des index peut se produire dans l'un des scénarios suivants :

  • Une fois l'index créé, la procédure de remplissage analyse l'espace de clés pour trouver les entrées qui répondent aux critères de filtre de l'index.
  • Les index vectoriels et leurs données sont conservés dans des instantanés RDB. Lorsqu'un fichier RDB est chargé, un processus de remplissage automatique de l'index est déclenché. Ce processus détecte et intègre activement toutes les entrées nouvelles ou modifiées dans l'index depuis la création de l'instantané RDB. Il maintient ainsi l'intégrité de l'index et garantit des résultats actuels.