Indexvektoren

Auf dieser Seite wird erläutert, wie Vektoren in Hashes gespeichert werden. Hashes bieten eine effiziente Möglichkeit zum Speichern von Vektoren in Redis.

Datenserialisierung

Bevor Vektoren in einem Redis-Hash gespeichert werden, müssen sie in ein Format konvertiert werden, das Redis versteht. Er erfordert eine Vektorserialisierung in binäre Blobs, wobei die Größe der Bytegröße des Datentyps entspricht (z.B. 4 für FLOAT32) multipliziert mit der Anzahl der Dimensionen des Vektors. Eine beliebte Wahl für numerische Vektoren ist die NumPy-Bibliothek von Python:

Mit Redis verbinden

Bevor Sie den Vektor in einem Hash speichern, stellen Sie mit einem Client wie redis-py eine Verbindung zu Ihrer Redis-Instanz her:

Vektor in einem Hash speichern

Redis-Hashes sind wie Wörterbücher mit Schlüssel/Wert-Paaren. Verwenden Sie den Redis-Befehl HSET, um den serialisierten Vektor zu speichern:

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
  • Für eine erfolgreiche Indexierung müssen Ihre Vektordaten den im Indexschema festgelegten Dimensionen und Datentypen entsprechen.

Indizes backfillen

Das Backfill von Indexen kann in folgenden Fällen auftreten:

  • Nachdem ein Index erstellt wurde, durchsucht das Backfill-Verfahren den Redis-Schlüsselraum nach Einträgen, die den Indexfilterkriterien entsprechen.
  • Vektorindexe und ihre Daten werden in RDB-Snapshots beibehalten. Wenn eine RDB-Datei geladen wird, wird ein automatischer Index-Backfill-Prozess ausgelöst. Dieser Prozess erkennt aktiv neue oder geänderte Einträge und integriert sie in den Index, seit der RDB-Snapshot erstellt wurde. Dabei werden die Indexintegrität und aktuelle Ergebnisse sichergestellt.