Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
En esta página, se explica cómo almacenar vectores en hashes. Los hash proporcionan una forma eficiente de almacenar vectores en Redis.
Serialización de datos
Antes de almacenar vectores en un tipo de datos hash, los vectores deben convertirse a un formato que comprenda Memorystore para Redis. Requiere la serialización de vectores en objetos binarios en los que el tamaño es igual al tamaño de bytes del tipo de datos (p.ej., 4 para FLOAT32) multiplicado por la cantidad de dimensiones del vector. Una opción popular para los vectores numéricos es la biblioteca NumPy de Python:
Conéctate a Redis
Antes de almacenar el vector en un hash, establece una conexión con tu instancia de Memorystore para Redis con un cliente compatible con Redis OSS, como redis-py:
Almacena el vector en un hash
Los hash son como diccionarios, con pares clave-valor. Usa el comando HSET 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.Redis(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, tus datos de vectores deben cumplir con las dimensiones y el tipo de datos establecidos en el esquema del índice.
Reabastecimiento de índices
Los índices de reabastecimiento pueden ocurrir en una de las siguientes situaciones:
Una vez que se crea un índice, el procedimiento de reabastecimiento analiza el espacio de claves en busca de entradas que cumplan con los criterios del filtro de índice.
Los índices vectoriales y sus datos se conservan en las instantáneas de la RDB. Cuando se carga un archivo RDB, se activa un proceso de reabastecimiento automático del índice. Este proceso detecta e integra de forma activa las entradas nuevas o modificadas en el índice desde que se creó la instantánea de la RDB, lo que mantiene la integridad del índice y garantiza los resultados actuales.
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Difícil de entender","hardToUnderstand","thumb-down"],["Información o código de muestra incorrectos","incorrectInformationOrSampleCode","thumb-down"],["Faltan la información o los ejemplos que necesito","missingTheInformationSamplesINeed","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 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."]]