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 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 Bytegröße des Datentyps (z. B. 4 für FLOAT32) multipliziert mit der Anzahl der Dimensionen des Vektors entspricht. 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 Ihrem Cluster 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.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 Auffüllen von Indexdaten 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 ihre 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 Indexintegrität aufrechterhalten und aktuelle Ergebnisse werden gewährleistet.