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.