Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
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 type de données de hachage, vous devez les convertir dans un format compatible avec Memorystore pour Redis. Elle nécessite la sérialisation de vecteurs dans des blobs binaires dont 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 Memorystore pour Redis à l'aide d'un client compatible avec OSS Redis, comme redis-py:
Stocker le vecteur dans un hachage
Les hachages sont comme 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.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 soit efficace, vos données vectorielles doivent respecter les dimensions et le type de données définis dans le schéma de l'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 à 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 des instantanés RDB. Lorsqu'un fichier RDB est chargé, un processus automatique de remplissage de l'index 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.
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/09/05 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Difficile à comprendre","hardToUnderstand","thumb-down"],["Informations ou exemple de code incorrects","incorrectInformationOrSampleCode","thumb-down"],["Il n'y a pas l'information/les exemples dont j'ai besoin","missingTheInformationSamplesINeed","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/09/05 (UTC)."],[],[],null,["# Indexing vectors\n\nThis page explains how to store vectors in hashes. Hashes provide an efficient way to store vectors in Redis.\n\nData serialization\n------------------\n\nBefore storing vectors in a hash data type, vectors need to be converted into a format that Memorystore for Redis understands. It requires vector serialization into binary blobs where the size equals the data type's byte size (e.g., 4 for FLOAT32) multiplied by the vector's number of dimensions. A popular choice for numerical vectors is the Python [NumPy library](https://numpy.org/):\n\nConnect to Redis\n----------------\n\nBefore storing the vector in a hash, establish a connection to your Memorystore for Redis instance using a OSS Redis compatible client like [redis-py](https://github.com/redis/redis-py):\n\nStore the vector in a hash\n--------------------------\n\nHashes are like dictionaries, with key-value pairs. Use the `HSET` command to store your serialized vector: \n\n```\nimport numpy as np\nimport redis\n\n# Sample vector\nvector = np.array([1.2, 3.5, -0.8], dtype=np.float32) # 3-dimensional vector\n\n# Serialize to a binary blob\nserialized_vector = vector.tobytes()\n\nredis_client = redis.Redis(host='your_redis_host', port=6379)\n\nredis_client.hset('vector_storage', 'vector_key', serialized_vector) # 'vector_key' is a unique identifier\n```\n\n- For successful indexing, your vector data must adhere to the dimensions and data type set in the index schema.\n\nBackfilling Indexes\n-------------------\n\nBackfilling indexes may occur in one of the following scenarios:\n\n- Once an index is created, the backfilling procedure scans through keyspace for entries that meet the index filter criteria.\n- Vector indexes and their data are persisted in [RDB snapshots](/memorystore/docs/redis/about-rdb-snapshots). When an RDB file is loaded, an automatic index backfilling process is triggered. This process actively detects and integrates any new or modified entries into the index since the RDB snapshot was created, maintaining index integrity and ensuring current results."]]