Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
Auf dieser Seite wird erläutert, wie Vektoren in Hashes gespeichert werden. Hashes bieten eine effiziente Möglichkeit, Vektoren in Redis zu speichern.
Datenserialisierung
Bevor Vektoren in einem Hash-Datentyp gespeichert werden können, müssen sie in ein Format umgewandelt werden, das von Memorystore for Redis unterstützt wird. 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:
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. 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.Redis(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 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.
[[["Leicht verständlich","easyToUnderstand","thumb-up"],["Mein Problem wurde gelöst","solvedMyProblem","thumb-up"],["Sonstiges","otherUp","thumb-up"]],[["Schwer verständlich","hardToUnderstand","thumb-down"],["Informationen oder Beispielcode falsch","incorrectInformationOrSampleCode","thumb-down"],["Benötigte Informationen/Beispiele nicht gefunden","missingTheInformationSamplesINeed","thumb-down"],["Problem mit der Übersetzung","translationIssue","thumb-down"],["Sonstiges","otherDown","thumb-down"]],["Zuletzt aktualisiert: 2025-09-05 (UTC)."],[],[],null,["# Indexing vectors\n\nThis page explains how to store vectors in hashes. Hashes provide an efficient way to store vectors in Redis.\n\nData serialization\n------------------\n\nBefore storing vectors in a hash data type, vectors need to be converted into a format that Memorystore for Redis understands. It requires vector serialization into binary blobs where the size equals the data type's byte size (e.g., 4 for FLOAT32) multiplied by the vector's number of dimensions. A popular choice for numerical vectors is the Python [NumPy library](https://numpy.org/):\n\nConnect to Redis\n----------------\n\nBefore storing the vector in a hash, establish a connection to your Memorystore for Redis instance using a OSS Redis compatible client like [redis-py](https://github.com/redis/redis-py):\n\nStore the vector in a hash\n--------------------------\n\nHashes are like dictionaries, with key-value pairs. Use the `HSET` command to store your serialized vector: \n\n```\nimport numpy as np\nimport redis\n\n# Sample vector\nvector = np.array([1.2, 3.5, -0.8], dtype=np.float32) # 3-dimensional vector\n\n# Serialize to a binary blob\nserialized_vector = vector.tobytes()\n\nredis_client = redis.Redis(host='your_redis_host', port=6379)\n\nredis_client.hset('vector_storage', 'vector_key', serialized_vector) # 'vector_key' is a unique identifier\n```\n\n- For successful indexing, your vector data must adhere to the dimensions and data type set in the index schema.\n\nBackfilling Indexes\n-------------------\n\nBackfilling indexes may occur in one of the following scenarios:\n\n- Once an index is created, the backfilling procedure scans through keyspace for entries that meet the index filter criteria.\n- Vector indexes and their data are persisted in [RDB snapshots](/memorystore/docs/redis/about-rdb-snapshots). When an RDB file is loaded, an automatic index backfilling process is triggered. This process actively detects and integrates any new or modified entries into the index since the RDB snapshot was created, maintaining index integrity and ensuring current results."]]