FT.CREATE - Amazon MemoryDB

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.

FT.CREATE

Erzeugt einen Index und initiiert ein Auffüllen dieses Indexes. Weitere Informationen zur Indexkonstruktion finden Sie unter Überblick über die Vektorsuche.

Syntax

FT.CREATE <index-name> ON HASH | JSON [PREFIX <count> <prefix1> [<prefix2>...]] SCHEMA (<field-identifier> [AS <alias>] NUMERIC | TAG [SEPARATOR <sep>] [CASESENSITIVE] | TEXT | VECTOR [HNSW|FLAT] <attr_count> [<attribute_name> <attribute_value>]) )+

Schema

  • Feldbezeichner:

    • Bei Hashschlüsseln ist die Feldkennung ein Feldname.

    • Bei JSON-Schlüsseln ist die Feld-ID ein JSON-Pfad.

    Weitere Informationen finden Sie unter Typen von Indexfeldern.

  • Feldtypen:

    • TAG: Weitere Informationen finden Sie unter Tags.

    • NUMERISCH: Das Feld enthält eine Zahl.

    • TEXT: Das Feld enthält einen beliebigen Datenblock.

    • VECTOR: Vektorfeld, das die Vektorsuche unterstützt.

      • Algorithmus — kann HNSW (Hierarchical Navigable Small World) oder FLAT (Brute Force) sein.

      • attr_count— Anzahl der Attribute, die als Algorithmuskonfiguration übergeben werden, dazu gehören sowohl Namen als auch Werte.

      • {attribute_name} {attribute_value}— Algorithmusspezifische Schlüssel/Wert-Paare, die die Indexkonfiguration definieren.

        Für den FLAT-Algorithmus sind die Attribute:

        Erforderlich:

        • DIM — Anzahl der Dimensionen im Vektor.

        • DISTANCE_METRIC — Kann einer von [L2 | IP | COSINE] sein.

        • TYPE — Vektortyp. Der einzige unterstützte Typ istFLOAT32.

        Optional:

        • INITIAL_CAP — Die anfängliche Vektorkapazität im Index beeinflusst die Größe der Speicherzuweisung des Indexes.

        Für den HNSW-Algorithmus sind die Attribute:

        Erforderlich:

        • TYPE — Vektortyp. Der einzige unterstützte Typ istFLOAT32.

        • DIM — Vektordimension, angegeben als positive Ganzzahl. Maximum: 32768

        • DISTANCE_METRIC — Kann einer von [L2 | IP | COSINE] sein.

        Optional:

        • INITIAL_CAP — Die anfängliche Vektorkapazität im Index beeinflusst die Größe der Speicherzuweisung des Indexes. Der Standardwert ist 1024.

        • M — Anzahl der maximal zulässigen ausgehenden Kanten für jeden Knoten im Diagramm in jeder Ebene. Auf Ebene Null beträgt die maximale Anzahl von ausgehenden Kanten 2 M. Die Standardeinstellung ist 16, das Maximum ist 512.

        • EF_CONSTRUCTION — steuert die Anzahl der Vektoren, die bei der Indexerstellung untersucht werden. Höhere Werte für diesen Parameter verbessern die Rückrufrate auf Kosten längerer Indexerstellungszeiten. Der Standardwert ist 200. Der Maximalwert ist 4096.

        • EF_RUNTIME — steuert die Anzahl der Vektoren, die bei Abfrageoperationen untersucht werden. Höhere Werte für diesen Parameter können zu einem besseren Abruf führen, allerdings auf Kosten längerer Abfragezeiten. Der Wert dieses Parameters kann für jede Abfrage außer Kraft gesetzt werden. Standardwert: 10. Der Höchstwert ist 4096.

Ergebnis

Gibt eine einfache Zeichenfolge zurück: OK-Meldung oder Fehlerantwort.

Beispiele

Anmerkung

Das folgende Beispiel verwendet Argumente, die für redis-cli typisch sind, wie z. B. das Entfernen von Anführungszeichen und das Entfernen von Escapes von Daten, bevor sie an Redis OSS gesendet werden. Um andere Programmiersprachenclients (Python, Ruby, C# usw.) zu verwenden, befolgen Sie die Regeln dieser Umgebungen für den Umgang mit Zeichenketten und Binärdaten. Weitere Informationen zu unterstützten Clients finden Sie unter Tools to Build On AWS

Beispiel 1: Erstellen Sie einige Indizes

Erstellen Sie einen Index für Vektoren der Größe 2

FT.CREATE hash_idx1 ON HASH PREFIX 1 hash: SCHEMA vec AS VEC VECTOR HNSW 6 DIM 2 TYPE FLOAT32 DISTANCE_METRIC L2 OK

Erstellen Sie einen 6-dimensionalen JSON-Index mit dem HNSW-Algorithmus:

FT.CREATE json_idx1 ON JSON PREFIX 1 json: SCHEMA $.vec AS VEC VECTOR HNSW 6 DIM 6 TYPE FLOAT32 DISTANCE_METRIC L2 OK
Beispiel 2: Füllen Sie einige Daten aus

Die folgenden Befehle sind so formatiert, dass sie als Argumente für das Redis-CLI-Terminalprogramm ausgeführt werden können. Entwickler, die Programmiersprachen-Clients (wie Python, Ruby, C# usw.) verwenden, müssen die Regeln ihrer Umgebung für den Umgang mit Zeichenketten und Binärdaten befolgen.

Einige Hash- und JSON-Daten erstellen:

HSET hash:0 vec "\x00\x00\x00\x00\x00\x00\x00\x00" HSET hash:1 vec "\x00\x00\x00\x00\x00\x00\x80\xbf" JSON.SET json:0 . '{"vec":[1,2,3,4,5,6]}' JSON.SET json:1 . '{"vec":[10,20,30,40,50,60]}' JSON.SET json:2 . '{"vec":[1.1,1.2,1.3,1.4,1.5,1.6]}'

Beachten Sie Folgendes:

  • Die Schlüssel der Hash- und JSON-Daten haben die Präfixe ihrer Indexdefinitionen.

  • Die Vektoren befinden sich an den entsprechenden Pfaden der Indexdefinitionen.

  • Die Hash-Vektoren werden als Hex-Daten eingegeben, während die JSON-Daten als Zahlen eingegeben werden.

  • Die Vektoren haben die entsprechenden Längen, die zweidimensionalen Hash-Vektoreinträge haben Hex-Daten im Wert von zwei Fließkommazahlen, die sechsdimensionalen JSON-Vektoreinträge haben sechs Zahlen.

Beispiel 3: Löschen Sie einen Index und erstellen Sie ihn neu
FT.DROPINDEX json_idx1 OK FT.CREATE json_idx1 ON JSON PREFIX 1 json: SCHEMA $.vec AS VEC VECTOR FLAT 6 DIM 6 TYPE FLOAT32 DISTANCE_METRIC L2 OK

Beachten Sie, dass der neue JSON-Index den FLAT Algorithmus anstelle des HNSW Algorithmus verwendet. Beachten Sie auch, dass die vorhandenen JSON-Daten neu indexiert werden:

FT.SEARCH json_idx1 "*=>[KNN 100 @VEC $query_vec]" PARAMS 2 query_vec "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" DIALECT 2 1) (integer) 3 2) "json:2" 3) 1) "__VEC_score" 2) "11.11" 3) "$" 4) "[{\"vec\":[1.1, 1.2, 1.3, 1.4, 1.5, 1.6]}]" 4) "json:0" 5) 1) "__VEC_score" 2) "91" 3) "$" 4) "[{\"vec\":[1.0, 2.0, 3.0, 4.0, 5.0, 6.0]}]" 6) "json:1" 7) 1) "__VEC_score" 2) "9100" 3) "$" 4) "[{\"vec\":[10.0, 20.0, 30.0, 40.0, 50.0, 60.0]}]"