KAKI. CREATE - Amazon MemoryDB

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

KAKI. CREATE

Membuat indeks dan memulai pengurukan indeks itu. Untuk informasi selengkapnya, lihat Ikhtisar pencarian vektor untuk detail tentang konstruksi indeks.

Sintaksis

FT.CREATE <index-name> ON HASH | JSON [PREFIX <count> <prefix1> [<prefix2>...]] SCHEMA (<field-identifier> [AS <alias>] NUMERIC | TAG [SEPARATOR <sep>] [CASESENSITIVE] | TEXT | VECTOR [HNSW|FLAT] <attr_count> [<attribute_name> <attribute_value>]) )+

Skema

  • Pengidentifikasi bidang:

    • Untuk kunci hash, pengenal bidang adalah nama bidang.

    • Untuk JSON kunci, pengenal bidang adalah JSON jalur A.

    Untuk informasi selengkapnya, lihat Jenis bidang indeks.

  • Jenis bidang:

    • TAG: Untuk informasi selengkapnya, lihat Tag.

    • NUMERIC: Bidang berisi angka.

    • TEXT: Bidang berisi gumpalan data.

    • VECTOR: bidang vektor yang mendukung pencarian vektor.

      • Algoritma — dapat berupa HNSW (Hierarchical Navigable Small World) atau FLAT (brute force).

      • attr_count— jumlah atribut yang akan diteruskan sebagai konfigurasi algoritma, ini termasuk nama dan nilai.

      • {attribute_name} {attribute_value}— pasangan kunci/nilai khusus algoritma yang menentukan konfigurasi indeks.

        Untuk FLAT algoritma, atribut adalah:

        Diperlukan:

        • DIM— Jumlah dimensi dalam vektor.

        • DISTANCE_ METRIC - Dapat menjadi salah satu dari [L2 | IP |COSINE].

        • TYPE— Jenis vektor. Satu-satunya jenis yang didukung adalahFLOAT32.

        Opsional:

        • INITIAL_ CAP — Kapasitas vektor awal dalam indeks yang mempengaruhi ukuran alokasi memori indeks.

        Untuk HNSW algoritma, atribut adalah:

        Diperlukan:

        • TYPE— Jenis vektor. Satu-satunya jenis yang didukung adalahFLOAT32.

        • DIM— Dimensi vektor, ditentukan sebagai bilangan bulat positif. Maksimal: 32768

        • DISTANCE_ METRIC - Dapat menjadi salah satu dari [L2 | IP |COSINE].

        Opsional:

        • INITIAL_ CAP — Kapasitas vektor awal dalam indeks yang mempengaruhi ukuran alokasi memori indeks. Default ke 1024.

        • M — Jumlah tepi keluar maksimum yang diizinkan untuk setiap node dalam grafik di setiap lapisan. pada lapisan nol jumlah maksimal tepi keluar adalah 2M. Defaultnya adalah 16 Maksimum adalah 512.

        • EF_ CONSTRUCTION — mengontrol jumlah vektor yang diperiksa selama konstruksi indeks. Nilai yang lebih tinggi untuk parameter ini akan meningkatkan rasio penarikan dengan mengorbankan waktu pembuatan indeks yang lebih lama. Nilai default adalah 200. Nilai maksimum adalah 4096.

        • EF_ RUNTIME — mengontrol jumlah vektor yang diperiksa selama operasi kueri. Nilai yang lebih tinggi untuk parameter ini dapat menghasilkan penarikan yang lebih baik dengan mengorbankan waktu kueri yang lebih lama. Nilai parameter ini dapat diganti berdasarkan per-query. Nilai default adalah 10. Nilai maksimum adalah 4096.

Nilai yang ditampilkan

Mengembalikan string pesan OK sederhana atau balasan kesalahan.

Contoh

catatan

Contoh berikut menggunakan argumen asli valkey-cli, seperti de-quoting dan de-escaping data, sebelum mengirimnya ke Valkey atau Redis. OSS Untuk menggunakan klien bahasa pemrograman lainnya (Python, Ruby, C #, dll.), Ikuti aturan penanganan lingkungan tersebut untuk menangani string dan data biner. Untuk informasi selengkapnya tentang klien yang didukung, lihat Alat untuk Dibangun AWS

contoh 1: Buat beberapa indeks

Buat indeks untuk vektor ukuran 2

FT.CREATE hash_idx1 ON HASH PREFIX 1 hash: SCHEMA vec AS VEC VECTOR HNSW 6 DIM 2 TYPE FLOAT32 DISTANCE_METRIC L2 OK

Buat JSON indeks 6 dimensi menggunakan HNSW algoritma:

FT.CREATE json_idx1 ON JSON PREFIX 1 json: SCHEMA $.vec AS VEC VECTOR HNSW 6 DIM 6 TYPE FLOAT32 DISTANCE_METRIC L2 OK
contoh Contoh 2: Mengisi beberapa data

Perintah berikut diformat sehingga dapat dieksekusi sebagai argumen untuk program terminal redis-cli. Pengembang yang menggunakan klien bahasa pemrograman (seperti Python, Ruby, C #, dll.) Perlu mengikuti aturan penanganan lingkungan mereka untuk menangani string dan data biner.

Membuat beberapa data hash dan json:

HSET hash:0 vec "\x00\x00\x00\x00\x00\x00\x00\x00" HSET hash:1 vec "\x00\x00\x00\x00\x00\x00\x80\xbf" JSON.SET json:0 . '{"vec":[1,2,3,4,5,6]}' JSON.SET json:1 . '{"vec":[10,20,30,40,50,60]}' JSON.SET json:2 . '{"vec":[1.1,1.2,1.3,1.4,1.5,1.6]}'

Perhatikan hal berikut:

  • Kunci hash dan JSON data memiliki awalan definisi indeksnya.

  • Vektor berada pada jalur yang sesuai dari definisi indeks.

  • Vektor hash dimasukkan sebagai data hex sementara JSON data dimasukkan sebagai angka.

  • Vektor adalah panjang yang sesuai, entri vektor hash dua dimensi memiliki data hex senilai dua float, entri vektor json enam dimensi memiliki enam angka.

contoh Contoh 3: Hapus dan buat ulang indeks
FT.DROPINDEX json_idx1 OK FT.CREATE json_idx1 ON JSON PREFIX 1 json: SCHEMA $.vec AS VEC VECTOR FLAT 6 DIM 6 TYPE FLOAT32 DISTANCE_METRIC L2 OK

Perhatikan JSON indeks baru menggunakan FLAT algoritma bukan HNSW algoritma. Perhatikan juga bahwa itu akan mengindeks ulang JSON data yang ada:

FT.SEARCH json_idx1 "*=>[KNN 100 @VEC $query_vec]" PARAMS 2 query_vec "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" DIALECT 2 1) (integer) 3 2) "json:2" 3) 1) "__VEC_score" 2) "11.11" 3) "$" 4) "[{\"vec\":[1.1, 1.2, 1.3, 1.4, 1.5, 1.6]}]" 4) "json:0" 5) 1) "__VEC_score" 2) "91" 3) "$" 4) "[{\"vec\":[1.0, 2.0, 3.0, 4.0, 5.0, 6.0]}]" 6) "json:1" 7) 1) "__VEC_score" 2) "9100" 3) "$" 4) "[{\"vec\":[10.0, 20.0, 30.0, 40.0, 50.0, 60.0]}]"