Auf dieser Seite wird erläutert, wie Sie Vektoren in Hashes speichern. 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 von Redis verstanden wird. Dazu ist die Vektorserialisierung in binäre Blobs erforderlich, wobei die 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 Python NumPy-Bibliothek:
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 Ihren 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
- Für eine erfolgreiche Indexierung müssen Ihre Vektordaten den im Indexschema festgelegten Dimensionen und Datentypen entsprechen.
Indizes mit Daten füllen
Das Füllen von Indizes mit Daten kann in einem der folgenden Szenarien auftreten:
- Nachdem ein Index erstellt wurde, werden beim Füllen des Index mit Daten alle Einträge im Redis-Schlüsselbereich gescannt, die den Indexfilterkriterien entsprechen.
- Vektorindizes und ihre Daten werden in RDB-Snapshots gespeichert. Wenn eine RDB-Datei geladen wird, wird automatisch ein Prozess zum Füllen des Index mit Daten ausgelöst. Bei diesem Prozess werden alle neuen oder geänderten Einträge seit der Erstellung des RDB-Snapshots erkannt und in den Index aufgenommen. So wird die Indexintegrität gewahrt und aktuelle Ergebnisse sind gewährleistet.