Vettori di indicizzazione

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

Serializzazione dei dati

Prima di memorizzare i vettori in un hash Redis, questi devono essere convertiti in un formato comprensibile da 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 Python:

Connetti a Redis

Prima di memorizzare il vettore in un hash, stabilisci una connessione all'istanza Redis utilizzando un client come redis-py:

Memorizza il vettore in un hash

Gli hash Redis sono come dizionari, con coppie chiave-valore. Utilizza il comando HSET di Redis per memorizzare 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
  • Affinché l'indicizzazione vada a buon fine, i dati vettoriali devono rispettare le dimensioni e il tipo di dati impostati nello schema dell'indice.

Indici di backfill

Gli indici di backfill può verificarsi in uno dei seguenti scenari:

  • Una volta creato un indice, la procedura di backfill esegue la scansione dello spazio chiavi Redis per trovare 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 dalla creazione dello snapshot RDB, mantenendo l'integrità dell'indice e garantendo i risultati attuali.