FT.CREATE
erstellt einen suchbaren Index. Bei Memorystore for Valkey werden Indexe auf Clusterebene erstellt. Wenn Sie einen Index auf einem beliebigen Knoten erstellen, wird der Index auf allen Knoten im Cluster erstellt.
Syntax
FT.CREATE index ON HASH [PREFIX count prefix [prefix ...]] SCHEMA field_name [AS alias] VECTOR [HNSW|FLAT] attribute_count [attribute_name attribute_value] [field_name [AS alias] NUMERIC] [field_name [AS alias] TAG [SEPARATOR ...] [CASESENSITIVE]]
index
(erforderlich): Dies ist der Name, den Sie Ihrem Index geben. Wenn ein Index mit der gleichen bereits vorhanden ist, wird ein Fehler zurückgegeben.ON HASH
(optional): Gibt den HASH-Datentyp an. Nur der Datentyp HASH wird unterstützt.PREFIX [count] [prefix]
(optional): Gibt an, welche Hash-Schlüssel indexiert werden sollen.SCHEMA hash_field_name
(erforderlich): Der Hash-Feldname nach SCHEMA gibt den Feldnamen im Hash an.[AS alias]
weist den Namenalias
als Alias für die Feldname.
Feldtypen
VECTOR
(erforderlich): Vektorfeld für die Vektorsuche:[HNSW|FLAT]
(erforderlich): Ausgewiesener Algorithmus. EntwederFLAT
(Brute-Force-Suche) oder HNSW (Hierarchical Navigable Small World).attribute_count
(erforderlich): Gesamtzahl der Attribute von Namen und Werten an die Algorithmuskonfiguration übergeben.attribute_name attribute_value
: Schlüssel/Wert-Paare, die die Indexkonfiguration definieren, aber für einen der beiden verfügbaren Algorithmen spezifisch sind.Erforderliche Attribute für den HNSW-Algorithmus:
DIM
(erforderlich): Anzahl der Vektordimensionen. Zulässige Werte sind1
–32768
.TYPE
(erforderlich): Der Vektortyp. Es wird nurFLOAT32
unterstützt.DISTANCE_METRIC
(erforderlich): Muss einen der folgenden Werte aufweisen:L2
,IP
oderCOSINE
.
Optionale Attribute für den HNSW-Algorithmus:
EF_RUNTIME
(optional): Legt die Anzahl der Vektoren fest, die während eines Abfragevorgangs untersucht werden sollen. Der Standardwert ist10
und der Höchstwert4096
. Sie können diesen Parameterwert für jede ausgeführte Abfrage festlegen. Höhere Werte erhöhen die Abfragezeiten, verbessern aber die Abfrageerinnerung.M
(optional): Die Anzahl der maximal zulässigen ausgehenden Kanten für jeden Knoten im Graphen in jeder Ebene. Die maximale Anzahl ausgehender Kanten für Ebene 0 beträgt 2 M. Der Standardwert ist 16. Maximal 512.EF_CONSTRUCTION
(optional): Legt die Anzahl der Vektoren fest, die während der Indexerstellung untersucht werden sollen. Die Standardeinstellung ist200
und die maximale Anzahl ist4096
. Höhere Werte erhöhen die Zeit, die zum Erstellen von Indexen benötigt wird, verbessern aber das Recall-Verhältnis.INITIAL_CAP
(optional): Legt die Startvektorkapazität des Index fest. Der Standardwert ist1024
. Dieser Parameter bestimmt die Arbeitsspeicherzuweisung für den Index.
Erforderliche FLAT-Algorithmusattribute:
DIM
(erforderlich): Anzahl der Vektordimensionen.TYPE
(erforderlich): Der Vektortyp. Es wird nurFLOAT32
unterstützt.DISTANCE_METRIC
(erforderlich): Muss einen der folgenden Werte haben:L2
,IP
oderCOSINE
.
Optionale FLAT-Algorithmusattribute:
INITIAL_CAP
(optional): Bestimmt die anfängliche Vektorkapazität des Index. Dieser Parameter bestimmt die Indexspeicherzuweisung.
NUMERIC
(optional): Numerisches Feld für die numerische Suche.TAG
(optional): Tag-Feld für die TAG-basierte Suche.SEPARATOR
(optional): Ein Zeichen, mit dem der Tag-String in einzelne Tags unterteilt wird. Die Standardoption ist,
. Der angegebene Wert muss ein einzelnes Zeichen sein. Der Tag-String „hallo, welt“ wird beispielsweise als „hallo“ und „welt“ interpretiert und entsprechend indexiert. Zulässige Werte sind,.<>{}[]"':;!@#$%^&*()-+=~
CASESENSITIVE
(optional): Gibt die Groß-/Kleinschreibung von Tag-Feldern an. Standardmäßig wird bei Tags nicht zwischen Groß- und Kleinschreibung unterschieden. Ein Tag-String wie „HeLLo“ wird als „hallo“ indexiert. Eine Suchanfrage nach „Hallo“ und „HeLlo“ ergibt dasselbe Ergebnis.
Hinweise
Innerhalb des Befehls „FT.CREATE“ können VEKTOR-, NUMERISCHE und TAG-Indexe in beliebiger Reihenfolge erscheinen.
Ein Feld kann nur einmal indexiert werden. Im angegebenen Beispiel darf das Feld
my_vector_field_key
nicht innerhalb desselben Index wiederholt werden.Mit einem einzelnen Befehl „FT.CREATE“ können maximal 10 Felder indexiert werden.
Standardmäßig wird bei Tags nicht zwischen Groß- und Kleinschreibung unterschieden.
Standardmäßig werden TAGs durch
,
voneinander getrennt.Einzelne Abfragen bei Tag- und numerischen Abfragen werden nicht unterstützt. Diese Felder können nur in Verbindung mit vektorbasierten Suchanfragen verwendet werden.
Beispiele
HNSW-Beispiel:
FT.CREATE my_index_name SCHEMA my_hash_field_key VECTOR HNSW 10 TYPE FLOAT32 DIM 20 DISTANCE_METRIC COSINE M 4 EF_CONSTRUCTION 100
FLAT-Beispiel:
FT.CREATE my_index_name SCHEMA my_hash_field_key VECTOR Flat 8 TYPE FLOAT32 DIM 20 DISTANCE_METRIC COSINE INITIAL_CAP 15000
HNSW-Beispiel mit einem numerischen Feld:
FT.CREATE my_index_name SCHEMA my_vector_field_key VECTOR HNSW 10 TYPE FLOAT32 DIM 20 DISTANCE_METRIC COSINE M 4 EF_CONSTRUCTION 100 my_numeric_field_key NUMERIC
HNSW-Beispiel mit einem Tag-Feld:
FT.CREATE my_index_name SCHEMA my_vector_field_key VECTOR HNSW 10 TYPE FLOAT32 DIM 20 DISTANCE_METRIC COSINE M 4 EF_CONSTRUCTION 100 my_tag_field_key TAG SEPARATOR '@' CASESENSITIVE
HNSW-Beispiel mit einem Tag und einem numerischen Feld:
FT.CREATE my_index_name SCHEMA my_vector_field_key VECTOR HNSW 10 TYPE FLOAT32 DIM 20 DISTANCE_METRIC COSINE M 4 EF_CONSTRUCTION 100 my_tag_field_key TAG SEPARATOR '@' CASESENSITIVE my_numeric_field_key NUMERIC
HNSW-Beispiel mit mehreren Tag- und numerischen Feldern:
FT.CREATE my_index_name SCHEMA my_vector_field_key VECTOR HNSW 10 TYPE FLOAT32 DIM 20 DISTANCE_METRIC COSINE M 4 EF_CONSTRUCTION 100 my_tag_field_key_1 TAG SEPARATOR '@' CASESENSITIVE my_numeric_field_key_1 NUMERIC my_numeric_field_key_2 NUMERIC my_tag_field_key_2 TAG