Indexierungsvektoren

Auf dieser Seite wird erläutert, wie Vektoren in Hashes gespeichert werden. Hashes sind eine effiziente Möglichkeit, Vektoren in Memorystore for Valkey zu speichern.

Datenserialisierung

Bevor Vektoren in einem Hash-Datentyp gespeichert werden können, müssen sie in ein Format umgewandelt werden, das Memorystore for Valkey versteht. Es erfordert die Vektorserialisierung in Binär-Blobs, deren Größe der Bytegröß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 von Python:

Verbindung zu Memorystore for Valkey herstellen

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 Valkey-Instanz her:

Vektor in einem Hash speichern

Hashes sind wie Wörterbücher mit Schlüssel/Wert-Paaren. Speichern Sie den serialisierten Vektor mit dem Befehl HSET:

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_server_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 backfillen

In den folgenden Fällen kann es zu Backfilling-Indexierungen kommen:

  • Nachdem ein Index erstellt wurde, wird beim Backfilling der Schlüsselbereich nach Einträgen durchsucht, die den Indexfilterkriterien entsprechen.
  • Vektorindexe und ihre Daten werden in RDB-Snapshots gespeichert. Wenn eine RDB-Datei geladen wird, wird ein automatischer Index-Backfill-Prozess ausgelöst. Dabei werden alle neuen oder geänderten Einträge seit Erstellung des RDB-Snapshots aktiv erkannt und in den Index aufgenommen. So wird die Indexintegrität aufrechterhalten und aktuelle Ergebnisse sichergestellt.