Auf dieser Seite wird erläutert, wie Vektoren in Hashes gespeichert werden. Hashes bieten eine effiziente Möglichkeit, Vektoren in Redis zu speichern.
Datenserialisierung
Bevor Vektoren in einem Redis-Hash gespeichert werden, müssen sie in ein Format konvertiert werden, das Redis versteht. Es erfordert die Vektorserialisierung in Binär-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 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
In den folgenden Fällen kann es zu Backfilling-Indexierungen kommen:
- Nachdem ein Index erstellt wurde, sucht das Backfilling-Verfahren im Redis-Schlüsselbereich nach Einträgen, die den Indexfilterkriterien entsprechen.
- Vektorindexe und ihre Daten werden in RDB-Snapshots gespeichert. Wenn eine RDB-Datei geladen wird, wird ein automatischer Index-Backfill-Prozess ausgelöst. Dabei werden alle neuen oder geänderten Einträge seit Erstellung des RDB-Snapshots aktiv erkannt und in den Index aufgenommen. So wird die Indexintegrität aufrechterhalten und aktuelle Ergebnisse sichergestellt.