Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
Questa pagina spiega come memorizzare i vettori in hash. Gli hash forniscono un modo efficiente per archiviare i vettori in Redis.
Serializzazione dei dati
Prima di archiviare i vettori in un tipo di dati hash, questi devono essere convertiti in un formato comprensibile da Memorystore per Redis. Richiede la serializzazione dei vettori in blob binari la cui dimensione è uguale alla dimensione in byte del tipo di dati (ad es. 4 per FLOAT32) moltiplicato per il numero di dimensioni del vettore. Una scelta popolare per i vettori numerici è la libreria NumPy di Python:
Connetti a Redis
Prima di memorizzare il vettore in un hash, stabilisci una connessione all'istanza Memorystore for Redis utilizzando un client OSS Redis compatibile come redis-py:
Memorizza il vettore in un hash
Gli hash sono come i dizionari, con coppie chiave-valore. Utilizza il comando HSET per archiviare il vettore serializzato:
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
Per un'indicizzazione corretta, i dati vettoriali devono rispettare le dimensioni e il tipo di dati impostati nello schema dell'indice.
Indici di backfill
Gli indici di backfill possono verificarsi in uno dei seguenti scenari:
Una volta creato un indice, la procedura di backfill esegue la scansione dello spazio chiavi per individuare le voci che soddisfano i criteri di filtro dell'indice.
Gli indici di vettori e i relativi dati vengono mantenuti nelle istantanee RDB. Quando viene caricato un file RDB, viene attivata una procedura di backfill automatico dell'indice. Questo processo rileva e integra attivamente le voci nuove o modificate nell'indice dal momento della creazione dello snapshot RDB, mantenendo l'integrità dell'indice e garantendo risultati aggiornati.
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Difficile da capire","hardToUnderstand","thumb-down"],["Informazioni o codice di esempio errati","incorrectInformationOrSampleCode","thumb-down"],["Mancano le informazioni o gli esempi di cui ho bisogno","missingTheInformationSamplesINeed","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 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."]]