FT.CREATE

FT.CREATE membuat indeks yang dapat ditelusuri. Dengan Memorystore for Valkey, indeks dibuat di tingkat cluster. Membuat indeks di node mana pun akan menyebabkan pembuatan indeks di semua node dalam cluster.

Sintaks

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 (wajib): Ini adalah nama yang Anda berikan ke indeks. Jika indeks dengan nama yang sama sudah ada, error akan ditampilkan.

  • ON HASH (opsional): Ini menunjukkan jenis data HASH. Hanya jenis data HASH yang didukung.

  • PREFIX [count] [prefix] (opsional): Ini menunjukkan kunci hash yang akan diindeks.

  • SCHEMA hash_field_name (wajib): hash_field_name setelah SCHEMA mengidentifikasi nama kolom dalam hash. [AS alias] menetapkan nama alias sebagai alias untuk atribut nama kolom.

Jenis kolom

  • VECTOR (wajib): Kolom vektor untuk penelusuran vektor:

    • [HNSW|FLAT] (wajib): Algoritma yang ditetapkan. FLAT (brute force) atau HNSW (Hierarchical Navigable Small World).

    • attribute_count (wajib diisi): Total jumlah atribut nama dan nilai yang diteruskan dalam konfigurasi algoritma.

    • attribute_name attribute_value: Pasangan nilai kunci yang menentukan konfigurasi indeks, tetapi khusus untuk salah satu dari dua algoritma yang tersedia.

      • Atribut algoritma HNSW yang diperlukan:

        • DIM (wajib): Jumlah dimensi vektor. Nilai yang diterima adalah 1-32768.

        • TYPE (wajib): Jenis vektor. Hanya FLOAT32 yang didukung.

        • DISTANCE_METRIC (wajib): Harus salah satu dari berikut ini - L2, IP, atau COSINE.

      • Atribut algoritma HNSW opsional:

        • EF_RUNTIME (opsional): Menetapkan jumlah vektor yang akan diperiksa selama operasi kueri. Defaultnya adalah 10, dan maksimumnya adalah 4096. Anda dapat menetapkan nilai parameter ini untuk setiap kueri yang dijalankan. Nilai yang lebih tinggi akan meningkatkan waktu kueri, tetapi meningkatkan perolehan kueri.

        • M (opsional): Jumlah maksimum tepi keluar yang diizinkan untuk setiap node dalam grafik di setiap lapisan. Jumlah maksimum tepi keluar adalah 2 juta untuk lapisan 0. Defaultnya adalah 16. Maksimumnya 512.

        • EF_CONSTRUCTION (opsional): Menetapkan jumlah vektor yang akan diperiksa selama pembuatan indeks. Defaultnya adalah 200, dan maksimumnya adalah 4096. Nilai yang lebih tinggi akan meningkatkan waktu yang diperlukan untuk membuat indeks, tetapi meningkatkan rasio recall.

        • INITIAL_CAP (opsional): Menentukan kapasitas vektor awal indeks. Defaultnya adalah 1024. Parameter ini menentukan alokasi memori indeks.

      • Atribut algoritma FLAT yang diperlukan:

        • DIM (wajib): Jumlah dimensi vektor.

        • TYPE (wajib): Jenis vektor. Hanya FLOAT32 yang didukung.

        • DISTANCE_METRIC (wajib): Harus salah satu dari berikut ini - L2, IP, atau COSINE.

      • Atribut algoritma FLAT opsional:

        • INITIAL_CAP (opsional): Menentukan kapasitas vektor awal indeks. Parameter ini menentukan alokasi memori indeks.
  • NUMERIC (opsional) - Kolom numerik untuk penelusuran numerik.

  • TAG (opsional) - Kolom tag untuk penelusuran berbasis TAG.

    • SEPARATOR (opsional): Karakter yang digunakan untuk membagi string tag menjadi tag individual. Opsi default-nya adalah ,. Nilai yang ditentukan harus berupa karakter tunggal. Misalnya, string tag "hello, world" akan ditafsirkan sebagai "hello" dan "world" dan akan diindeks sebagaimana mestinya. Nilai yang diizinkan adalah ,.<>{}[]"':;!@#$%^&*()-+=~

    • CASESENSITIVE (opsional): Menunjukkan kepekaan huruf besar/kecil kolom tag. Secara default, tag tidak peka huruf besar/kecil. String tag "HeLLo" akan diindeks sebagai "hello", dan kueri untuk "Hello" dan "HeLlo" akan menghasilkan hasil yang sama.

Catatan

  • Dalam perintah FT.CREATE, indeks VECTOR, NUMERIC, dan TAG dapat muncul dalam urutan apa pun.

  • Kolom hanya dapat diindeks sekali. Dalam contoh yang diberikan, kolom my_vector_field_key tidak dapat diulang dalam indeks yang sama.

  • Dalam satu perintah FT.CREATE, maksimum 10 kolom dapat diindeks.

  • Secara default, TAG tidak peka huruf besar/kecil.

  • Secara default, TAG dibatasi oleh ,.

  • Kueri individual pada tag dan kueri numerik tidak didukung. Kolom ini hanya dapat digunakan bersama dengan penelusuran berbasis vektor.

Contoh

Contoh HNSW:

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

Contoh FLAT:

FT.CREATE my_index_name SCHEMA my_hash_field_key VECTOR Flat 8 TYPE FLOAT32 DIM 20 DISTANCE_METRIC COSINE INITIAL_CAP 15000

Contoh HNSW dengan kolom numerik:

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

Contoh HNSW dengan kolom tag:

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 

Contoh HNSW dengan tag dan kolom numerik:

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

Contoh HNSW dengan beberapa kolom tag dan numerik:

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