Auf dieser Seite wird erläutert, wie Sie Vektoren in Hashes speichern. Hashes sind eine effiziente Möglichkeit, Vektoren in Redis zu speichern.
Datenserialisierung
Bevor Vektoren in einem Redis-Hash gespeichert werden können, müssen sie in ein Format konvertiert werden, das Redis versteht. Dazu ist die Serialisierung von Vektoren in binäre Blobs erforderlich, deren Größe der Byte-Größ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 für 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 ähneln Wörterbüchern 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.cluster.RedisCluster(host='your_redis_host', port=6379) redis_client.hset('vector_storage', 'vector_key', serialized_vector) # 'vector_key' is a unique identifier
- Damit die Indexierung erfolgreich ist, müssen Ihre Vektordaten den im Indexschema festgelegten Dimensionen und dem Datentyp entsprechen.
Indizes sichern
Das Backfilling von Indexen kann in einem der folgenden Szenarien erfolgen:
- Nachdem ein Index erstellt wurde, wird der Redis-Schlüsselbereich beim Backfilling nach Einträgen durchsucht, die den Indexfilterkriterien entsprechen.
- Vektorindexe und die zugehörigen Daten werden in RDB-Snapshots gespeichert. Wenn eine RDB-Datei geladen wird, wird automatisch ein Index-Backfilling-Prozess ausgelöst. Bei diesem Prozess werden alle neuen oder geänderten Einträge seit der Erstellung des RDB-Snapshots aktiv erkannt und in den Index aufgenommen. So wird die Integrität des Index gewahrt und aktuelle Ergebnisse werden sichergestellt.