FT.CREATE

FT.CREATE erstellt einen durchsuchbaren Index. Bei Memorystore for Redis Cluster 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): 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_field_name nach SCHEMA gibt den Feldnamen im Hash an. Mit [AS alias] wird der Name alias als Alias für das Attribut „Feldname“ zugewiesen.

Feldtypen

  • VECTOR (erforderlich): Vektorfeld für die Vektorsuche:

    • [HNSW|FLAT] (erforderlich): Der angegebene Algorithmus. Entweder FLAT (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 HNSW-Algorithmusattribute:

        • DIM (erforderlich): Anzahl der Vektordimensionen. Zulässige Werte sind 132768.

        • TYPE (erforderlich): Der Vektortyp. Nur FLOAT32 wird unterstützt.

        • DISTANCE_METRIC (erforderlich): Muss einer der folgenden Werte sein: L2, IP oder COSINE.

      • Optionale HNSW-Algorithmusattribute:

        • EF_RUNTIME (optional): Legt die Anzahl der Vektoren fest, die während eines Abfragevorgangs untersucht werden sollen. Der Standardwert ist 10 und der Höchstwert 4096. Sie können diesen Parameterwert für jede ausgeführte Abfrage festlegen. Höhere Werte verlängern die Abfragezeiten, verbessern aber den Recall.

        • M (optional): Die Anzahl der maximal zulässigen ausgehenden Kanten für jeden Knoten im Diagramm in jeder Ebene. Die maximale Anzahl ausgehender Kanten beträgt für Ebene 0 2 Millionen. Der Standardwert ist 16. Der Maximalwert beträgt 512.

        • EF_CONSTRUCTION (optional): Legt die Anzahl der Vektoren fest, die während der Indexerstellung untersucht werden sollen. Der Standardwert ist 200 und der Höchstwert 4096. Höhere Werte verlängern 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 ist 1024. Dieser Parameter bestimmt die Zuweisung des Indexspeichers.

      • Erforderliche Attribute für den FLAT-Algorithmus:

        • DIM (erforderlich): Anzahl der Vektordimensionen.

        • TYPE (erforderlich): Der Vektortyp. Nur FLOAT32 wird unterstützt.

        • DISTANCE_METRIC (erforderlich): Muss einer der folgenden Werte sein: L2, IP oder COSINE.

      • Optionale Attribute für den FLAT-Algorithmus:

        • INITIAL_CAP (optional): Bestimmt die Startvektorkapazität des Index. Dieser Parameter bestimmt die Zuweisung des Indexspeichers.
  • 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. Der Tag-String „HeLLo“ wird als „hello“ indexiert. Eine Suche nach „Hello“ und „HeLlo“ liefert dasselbe Ergebnis.

Hinweise

  • Im Befehl FT.CREATE können VECTOR-, NUMERIC- und TAG-Indizes in beliebiger Reihenfolge angegeben werden.

  • Ein Feld kann nur einmal indexiert werden. Im angegebenen Beispiel kann das Feld my_vector_field_key nicht 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 Anfragen zu Tags und numerische Anfragen 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

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