Indexierungsvektoren

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 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 (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 OSS Redis-kompatiblen Client wie redis-py eine Verbindung zu Ihrer Memorystore for Redis-Instanz her:

Vektor in einem Hash speichern

Hashes ähneln Wörterbüchern 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 ihre 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 Indexintegrität aufrechterhalten und aktuelle Ergebnisse werden gewährleistet.