Indexierungsvektoren

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 Hash-Datentyp gespeichert werden, müssen sie in ein Format konvertiert werden, das von Memorystore for Redis unterstützt wird. 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 OSS-Redis-kompatiblen Client wie redis-py eine Verbindung zu Ihrer Memorystore for Redis-Instanz her:

Vektor in einem Hash speichern

Hashes sind wie Wörterbücher mit Schlüssel/Wert-Paaren. Verwenden Sie den 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
  • 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, werden beim Backfilling-Vorgang alle Einträge im Keyspace gescannt, die den Indexfilterkriterien entsprechen.
  • Vektorindexe und die zugehörigen Daten werden in RDB-Snapshots gespeichert. Wenn eine RDB-Datei geladen wird, wird ein automatischer 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.