Mit FT.CREATE wird ein durchsuchbarer Index 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 bereits ein Index mit demselben Namen vorhanden ist, wird ein Fehler zurückgegeben.ON HASH(optional): Gibt den Datentyp HASH 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_field_name nach SCHEMA gibt den Feldnamen im Hash an.[AS alias]weist den Namenaliasals Alias für das Feldnamenattribut zu.
Feldtypen
VECTOR(erforderlich): Vektorfeld für die Vektorsuche:[HNSW|FLAT](erforderlich): Angegebener Algorithmus. EntwederFLAT(Brute Force) oder HNSW (Hierarchical Navigable Small World).attribute_count(erforderlich): Gesamtzahl der Attribute von Namen und Werten, die in der Algorithmuskonfiguration übergeben werden.attribute_name attribute_value: Schlüssel/Wert-Paare, die die Indexkonfiguration definieren, aber spezifisch für einen der beiden verfügbaren Algorithmen sind.Erforderliche Attribute des HNSW-Algorithmus:
DIM(erforderlich): Anzahl der Vektordimensionen. Zulässige Werte sind1–32768.TYPE(erforderlich): Der Vektortyp. NurFLOAT32wird unterstützt.DISTANCE_METRIC(erforderlich): Muss einer der folgenden Werte sein:L2,IPoderCOSINE.
Optionale Attribute des HNSW-Algorithmus:
EF_RUNTIME(optional): Legt die Anzahl der Vektoren fest, die bei einer Abfrageoperation untersucht werden sollen. Der Standardwert ist10und der Maximalwert ist4096. Sie können diesen Parameterwert für jede Abfrage festlegen, die Sie ausführen. Höhere Werte verlängern die Abfragezeiten, verbessern aber den Recall-Wert der Abfrage.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 ist 2M. Der Standardwert ist 16. Der Maximalwert ist 512.EF_CONSTRUCTION(optional): Legt die Anzahl der Vektoren fest, die bei der Indexerstellung untersucht werden sollen. Der Standardwert ist200und der Maximalwert ist4096. Höhere Werte verlängern die Zeit, die zum Erstellen von Indexen benötigt wird, verbessern aber den Recall-Wert.INITIAL_CAP(optional): Bestimmt die anfängliche Vektorkapazität des Index. Der Standardwert ist1024. Dieser Parameter bestimmt die Arbeitsspeicherzuweisung für den Index.
Erforderliche Attribute des FLAT-Algorithmus:
DIM(erforderlich): Anzahl der Vektordimensionen.TYPE(erforderlich): Der Vektortyp. NurFLOAT32wird unterstützt.DISTANCE_METRIC(erforderlich): Muss einer der folgenden Werte sein:L2,IPoderCOSINE.
Optionale Attribute des FLAT-Algorithmus:
INITIAL_CAP(optional): Bestimmt die anfängliche Vektorkapazität des Index. Dieser Parameter bestimmt die Arbeitsspeicherzuweisung für den Index.
NUMERIC(optional): Numerisches Feld für die numerische Suche.TAG(optional): Tag-Feld für die tagbasierte Suche.SEPARATOR(optional): Ein Zeichen, das verwendet wird, um den Tag-String in einzelne Tags zu unterteilen. 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 „HeLLo“ wird als „hallo“ indexiert und eine Abfrage nach „Hallo“ und „HeLlo“ liefert dasselbe Ergebnis.
Hinweise
Im Befehl FT.CREATE können VECTOR-, NUMERIC- und TAG-Indexe in beliebiger Reihenfolge vorkommen.
Ein Feld kann nur einmal indexiert werden. Im angegebenen Beispiel kann das Feld
my_vector_field_keynicht innerhalb desselben Index wiederholt werden.In einem einzelnen FT.CREATE-Befehl können maximal 10 Felder indexiert werden.
Standardmäßig wird bei TAGs nicht zwischen Groß- und Kleinschreibung unterschieden.
Standardmäßig werden TAGs durch
,getrennt.Einzelne Abfragen für Tag- und numerische Abfragen werden nicht unterstützt. Diese Felder können nur zusammen mit vektorbasierter Suche 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