Funktionen und Grenzen der Vektorsuche - Amazon ElastiCache

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Funktionen und Grenzen der Vektorsuche

Verfügbarkeit der Vektorsuche

Die Vektorsuche für Amazon ElastiCache ist mit Valkey Version 8.2 auf knotenbasierten Clustern in allen AWS Regionen ohne zusätzliche Kosten verfügbar. Sie können die Vektorsuche auch für Ihre vorhandenen Cluster verwenden, indem Sie mit wenigen Klicks und ohne Ausfallzeiten von einer beliebigen Version von Valkey oder Redis OSS auf Valkey 8.2 aktualisieren.

Die Vektorsuche ist derzeit für alle ElastiCache Instance-Typen mit Ausnahme von Knoten mit Daten-Tiering verfügbar. Die Verwendung der Vektorsuche auf T2-, T3- und T4G-Instances erfordert eine Erhöhung der Speicherreserve auf mindestens 50% für Mikro- und 30% für kleine Instances. Weitere Informationen finden Sie auf dieser Seite.

Parametrische Einschränkungen

Die folgende Tabelle zeigt Grenzwerte für verschiedene Vektor-Suchelemente:

Grenzwerte für die Vektorsuche
Item Maximaler Wert
Anzahl der Dimensionen in einem Vektor 32768
Anzahl der Indizes, die erstellt werden können 10
Anzahl der Felder in einem Index 50
FT.SEARCH TIMEOUT-Klausel (Millisekunden) 60000
Maximal zulässige Anzahl von Präfixen pro Index 16
Maximale Länge eines Tag-Felds 10000
Maximale Länge eines numerischen Feldes 256
HNSW M-Parameter 2000000
HNSW EF_KONSTRUKTIONSPARAMETER 4096
HNSW EF_RUNTIME-Parameter 4096

Betriebseinschränkungen

Persistenz und Backfilling von Indizes

Der Aktualisierungsvorgang besteht aus drei Schritten. Im ersten Schritt wird der HASH- oder JSON-Schlüssel geändert und der anfragende Client wird blockiert. Der zweite Schritt wird im Hintergrund ausgeführt und aktualisiert jeden der Indizes, die den geänderten Schlüssel enthalten. Im dritten Schritt wird der Client entsperrt. Bei Abfrageoperationen, die auf derselben Verbindung wie eine Mutation ausgeführt werden, ist diese Änderung also sofort in den Suchergebnissen sichtbar. Das Einfügen oder Aktualisieren eines Schlüssels ist jedoch möglicherweise für einen kurzen Zeitraum nicht in den Suchergebnissen anderer Clients sichtbar. In Zeiten hoher Systemlast und and/or starker Mutation von Daten kann sich die Sichtbarkeitsverzögerung verlängern.

Die Vektorsuchfunktion behält die Definition von Indizes und den Inhalt der Indizes bei. Indizes für Vektorfelder werden gespeichert, aber die Indizes für TAGS und NUMERIC werden nicht gespeichert, was bedeutet, dass sie neu erstellt werden müssen, wenn sie extern geladen werden (vollständige Synchronisierung oder Neuladen). Das bedeutet, dass bei jeder Betriebsanfrage oder jedem Ereignis, das zum Starten oder Neustarten eines Knotens führt, die Indexdefinition und der Inhalt für Vektoren aus dem letzten Snapshot wiederhergestellt werden. Um dies zu initiieren, ist keine Benutzeraktion erforderlich. Bei TAGS- und NUMERIC-Indizes wird die Neuerstellung jedoch als Backfill-Vorgang durchgeführt, sobald die Daten wiederhergestellt sind. Dies entspricht funktionell der automatischen Ausführung eines FT.CREATE-Befehls durch das System für jeden definierten Index. Beachten Sie, dass der Knoten für Anwendungsoperationen verfügbar ist, sobald die Daten wiederhergestellt sind, aber wahrscheinlich bevor das Auffüllen des Index abgeschlossen ist, was bedeutet, dass Backfill-Operationen wieder für Anwendungen sichtbar werden.

Der Abschluss des Index-Backfills wird nicht zwischen einem primären Replikat und einem Replikat synchronisiert. Dieser Mangel an Synchronisation kann für Anwendungen unerwartet sichtbar werden. Es wird daher empfohlen, dass Anwendungen den Abschluss des Backfills für Primärdateien und alle Replikate überprüfen, bevor sie Suchvorgänge einleiten.

Grenzen der Skalierung

Bei Skalierungsereignissen kann es vorkommen, dass der Index bei der Migration von Daten wieder aufgefüllt wird. Dies führt zu einem geringeren Abruf von Suchanfragen.

Snapshot import/export und Live-Migration

Die RDB-Dateien aus dem einen Cluster mit Suchindizes können in einen anderen ElastiCache Valkey-Cluster mit Version 8.2 oder höher importiert werden. Der neue Cluster wird den Indexinhalt beim Laden der RDB-Datei neu erstellen. Das Vorhandensein von Suchindizes in einer RDB-Datei schränkt jedoch die Kompatibilität dieser Daten mit früheren Versionen von Valkey ein. Das durch die Vektorsuchfunktion definierte Format der Suchindizes wird nur von einem anderen ElastiCache Cluster mit Valkey-Version 8.2 oder höher verstanden. RDB-Dateien, die keine Indizes enthalten, sind auf diese Weise jedoch nicht eingeschränkt.

Beim Auffüllen ist nicht genügend Arbeitsspeicher verfügbar

Ähnlich wie bei Valkey-OSS-Schreiboperationen unterliegt ein Index-Backfill Einschränkungen. out-of-memory Wenn der Engine-Speicher voll ist, während ein Backfill läuft, werden alle Backfills angehalten. Wenn Speicher verfügbar wird, wird der Backfill-Vorgang wieder aufgenommen. Es ist möglich, einen Index zu löschen, wenn das Auffüllen aufgrund von Speichermangel unterbrochen wird.

Transaktionen

Die BefehleFT.CREATE,, FT.DROPINDEX FT.ALIASADDFT.ALIASDEL, und FT.ALIASUPDATE können nicht in einem Transaktionskontext ausgeführt werden, d. h. nicht innerhalb eines MULTI/EXEC Blocks oder innerhalb eines LUA- oder FUNCTION-Skripts.