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
Erstellt 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 Hash-Schlüsseln ist die Feld-ID ein Feldname.
Bei JSON Schlüsseln ist der Feldbezeichner ein JSON Pfad.
Weitere Informationen finden Sie unter Typen von Indexfeldern.
Feldtypen:
TAG: Weitere Informationen finden Sie unter Tags
. NUMERIC: 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 FLAT Algorithmen 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 ist
FLOAT32
.
Optional:
INITIAL_ CAP — Die anfängliche Vektorkapazität im Index wirkt sich auf die Größe der Speicherzuweisung des Indexes aus.
Für den HNSW Algorithmus sind die Attribute:
Erforderlich:
TYPE— Vektortyp. Der einzige unterstützte Typ ist
FLOAT32
.DIM— Vektordimension, angegeben als positive Ganzzahl. Maximal: 32768
DISTANCE_ METRIC — Kann einer von [L2 | IP |] sein. COSINE
Optional:
INITIAL_ CAP — Die anfängliche Vektorkapazität im Index wirkt sich auf die Größe der Speicherzuweisung des Indexes aus. 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 wurden. 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
Im folgenden Beispiel werden Argumente verwendet, die für Valkey-cli
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 folgenden 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 des Hash und der 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]}]"