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

Vor dem Speichern von Vektoren in einem Redis-Hash müssen Vektoren in ein Format konvertiert werden, das Redis versteht. Sie erfordert eine Vektorserialisierung in binären Blobs, deren 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 seriellen Vektor zu speichern:

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

Index-Backfills

Das Auffüllen von Indexen kann in einem der folgenden Szenarien erfolgen:

  • Nachdem ein Index erstellt wurde, durchsucht das Backfill-Verfahren den Redis-Schlüsselraum nach Einträgen, die die Indexfilterkriterien erfüllen.
  • Vektorindexe und ihre Daten werden in RDB-Snapshots beibehalten. Beim Laden einer RDB-Datei wird ein automatischer Index-Backfill-Prozess ausgelöst. Dieser Prozess erkennt aktiv alle neuen oder geänderten Einträge und integriert sie in den Index, seit der RDB-Snapshot erstellt wurde. Dadurch wird die Indexintegrität aufrechterhalten und aktuelle Ergebnisse sichergestellt.