FT.CREATE
erstellt einen suchbaren Index.
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 bereits ein Index mit demselben Namen 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 dem Attribut „Feldname“ den Aliasalias
zu.
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 mit Namen und Werten, die in der Algorithmuskonfiguration übergeben wurden.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 haben:L2
,IP
oderCOSINE
.
Optionale Attribute für den HNSW-Algorithmus:
EF_RUNTIME
(optional): Legt die Anzahl der Vektoren fest, die bei einem Abfragevorgang geprüft 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 Abfragezeit, 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 beträgt 2 Millionen für Schicht 0. Der Standardwert ist 16. Maximal 512.EF_CONSTRUCTION
(optional): Legt die Anzahl der Vektoren fest, die beim Erstellen des Index geprüft werden sollen. Der Standardwert ist200
und der Höchstwert4096
. Höhere Werte erhöhen die Zeit, die zum Erstellen von Indexen benötigt wird, verbessern aber das Recall-Verhältnis.INITIAL_CAP
(optional): Bestimmt die Startvektorkapazität des Index. Der Standardwert ist1024
. Dieser Parameter bestimmt die Indexspeicherzuweisung.
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-Algorithmus-Attribute:
INITIAL_CAP
(optional): Bestimmt die Startvektorkapazitä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 an, ob bei Tag-Feldern zwischen Groß- und Kleinschreibung unterschieden wird. 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 Beispiel kann 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.
Bei TAGs wird standardmäßig nicht zwischen Groß- und Kleinschreibung unterschieden.
Standardmäßig werden TAGs durch
,
voneinander getrennt.Einzelne Abfragen nach Tags und numerische 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
Beispiel für FLAT:
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