Vettori di indicizzazione

Questa pagina spiega come memorizzare i vettori negli hash. Gli hash forniscono un modo efficiente per archiviare i vettori in Redis.

Serializzazione dei dati

Prima di memorizzare i vettori in un hash Redis, i vettori devono essere convertiti in un formato comprensibile da Redis. Richiede la serializzazione vettoriale in BLOB binari in cui la dimensione corrisponde 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 Python:

Connetti a Redis

Prima di archiviare il vettore in un hash, stabilisci una connessione alla tua istanza Redis utilizzando un client come redis-py:

Memorizza il vettore in un hash

Gli hash Redis sono come i dizionari, con coppie chiave-valore. Usa il comando HSET Redis per archiviare il vettore serializzato:

import numpy as np
import redis

# Sample vector
vector = np.array([1.2, 3.5, -0.8]) # 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 una corretta indicizzazione, 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 analizza lo spazio delle chiavi Redis alla ricerca di voci che soddisfano i criteri di filtro dell'indice.
  • Gli indici vettoriali e i relativi dati sono persistenti negli snapshot RDB. Quando viene caricato un file RDB, viene attivato un processo di backfill dell'indice automatico. Questo processo rileva e integra attivamente le voci nuove o modificate nell'indice dopo la creazione dello snapshot RDB, mantenendo l'integrità dell'indice e garantendo i risultati attuali.