Vettori di indicizzazione

Questa pagina spiega come archiviare i vettori negli 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 in cui la 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 comune per i vettori numerici è la libreria NumPy di Python:

Connetti a Redis

Prima di archiviare il vettore in un hash, stabilisci una connessione all'istanza Memorystore for Redis utilizzando un client compatibile con OSS Redis come redis-py:

Memorizzare il vettore in un hash

Gli hash sono come 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

Il riempimento degli indici può verificarsi in uno dei seguenti scenari:

  • Una volta creato un indice, la procedura di backfilling esegue la scansione dello spazio delle chiavi per trovare le voci che soddisfano i criteri di filtro dell'indice.
  • Gli indici vettoriali e i relativi dati vengono mantenuti negli snapshot RDB. Quando viene caricato un file RDB, viene attivata una procedura di riempimento automatico dell'indice. Questo processo rileva e integra attivamente nel database qualsiasi voce nuova o modificata dalla creazione dello snapshot RDB, mantenendo l'integrità dell'indice e garantendo risultati aggiornati.