All Products
Search
Document Center

Tair (Redis® OSS-Compatible):Vektor

Last Updated:May 14, 2026

TairVector adalah struktur data yang diperluas dari Tair untuk penyimpanan dan pengambilan vektor berkinerja tinggi secara real-time.

TairVector

TairVector menggunakan struktur data hash multi-layer.TairVector数据结构 TairVector menyediakan dua algoritma pengindeksan: Hierarchical Navigable Small World (HNSW) dan flat search:

  • HNSW: Membuat indeks berbasis graf untuk pencarian vektor dan mendukung reklamasi ruang asinkron. Pendekatan ini menjamin akurasi kueri yang tinggi sekaligus menyeimbangkan kinerja dengan pembaruan real-time.

  • flat search: Memberikan akurasi kueri 100% dan penyisipan data yang cepat, sehingga ideal untuk set data kecil.

TairVector juga mendukung beberapa metrik jarak, seperti Jarak Euclidean, inner product, jarak kosinus, dan jarak Jaccard. Dibandingkan dengan layanan pencarian vektor tradisional, TairVector menawarkan keunggulan berikut:

  • Menyimpan semua data di memori dan mendukung pembaruan indeks real-time untuk mencapai latensi baca-tulis yang lebih rendah.

  • Menggunakan struktur data in-memory yang dioptimalkan untuk mengurangi penggunaan memori.

  • Menyediakan layanan cloud siap pakai dengan arsitektur yang sederhana dan efisien tanpa ketergantungan komponen yang kompleks.

  • Mendukung pencarian hibrida, yang menggabungkan pencarian vektor dengan pencarian teks penuh.

  • Mendukung pembuatan indeks terbalik pada skalar, seperti atribut tag. Hal ini memungkinkan pencarian tetangga terdekat (KNN) untuk terlebih dahulu memfilter berdasarkan skalar, lalu melakukan pencarian vektor pada hasil yang telah difilter.

Catatan rilis

  1. 13 Oktober 2022: TairVector dirilis pada instans berbasis DRAM Tair yang kompatibel dengan Redis 6.0.

  2. 22 November 2022 (Versi 6.2.2.0): Menambahkan dukungan untuk metrik jarak Jaccard. Meningkatkan perintah TVS.GETINDEX agar mengembalikan statistik penggunaan memori untuk setiap indeks dalam bidang index_data_size dan attribute_data_size.

  3. 26 Desember 2022 (Versi 6.2.3.0): Menambahkan dukungan untuk modus proxy pada kluster, tipe data vektor FLOAT16, serta perintah TVS.MINDEXKNNSEARCH dan TVS.MINDEXMKNNSEARCH.

  4. 4 Juli 2023 (Versi 6.2.8.2): Menambahkan dukungan untuk metrik jarak kosinus dan garbage collection otomatis untuk indeks HNSW.

  5. 3 Agustus 2023 (Versi 23.8.0.0): Menambahkan dukungan untuk mengatur time-to-live (TTL) pada level key dengan perintah seperti TVS.HEXPIREAT dan TVS.HPEXPIREAT, serta pencarian tetangga terdekat vektor pada daftar key tertentu dengan perintah TVS.GETDISTANCE. Versi ini juga memperkenalkan pencarian teks penuh melalui pembaruan perintah seperti TVS.CREATEINDEX dan TVS.KNNSEARCH, yang memungkinkan pencarian hibrida.

  6. 6 Juni 2024 (Versi 24.5.1.0): Menambahkan perintah TVS.KNNSEARCHFIELD dan TVS.MINDEXKNNSEARCHFIELD untuk mengembalikan informasi atribut tag selama pencarian tetangga terdekat.

  7. 22 Juli 2024 (Versi 24.7.0.0): Mengaktifkan indeks HNSW untuk vektor jarang.

Praktik terbaik

Prasyarat

Instans harus merupakan instans berbasis DRAM yang kompatibel dengan Redis 6.0 atau versi lebih baru.

Catatan

Instans berbasis DRAM yang menjalankan Redis 5.0 tidak dapat ditingkatkan ke Redis 6.0. Untuk menggunakan Redis 6.0, Anda harus membuat instans berbasis DRAM baru.

Catatan

  • Operasi ini berlaku untuk data TairVector dalam instans Tair.

  • TairVector tidak mendukung fitur Redis hashtags pada bidang seperti index_name dan Key.

  • TairVector tidak mendukung perintah seperti MOVE.

  • Untuk kebutuhan persistensi data yang tinggi, aktifkan modus replikasi semi-sinkron.

Referensi perintah

Tabel 1. Perintah TairVector

Jenis

Perintah

Sintaks

Deskripsi

Operasi indeks

TVS.CREATEINDEX

TVS.CREATEINDEX index_name dims algorithm distance_method [algo_param_key alog_param_value] ...

Membuat indeks vektor, menentukan algoritma untuk membangun dan mengkueri indeks, serta fungsi jarak. Indeks hanya dapat dihapus dengan perintah TVS.DELINDEX.

TVS.GETINDEX

TVS.GETINDEX index_name

Mengambil metadata dari indeks vektor tertentu.

TVS.DELINDEX

TVS.DELINDEX index_name

Menghapus indeks vektor tertentu beserta seluruh datanya.

TVS.SCANINDEX

TVS.SCANINDEX cursor [MATCH pattern] [COUNT count]

Memindai secara inkremental indeks vektor dalam instans Tair yang sesuai dengan kriteria tertentu.

Operasi data vektor

TVS.HSET

TVS.HSET index_name key attribute_key attribute_value [attribute_key attribute_value] ...

Menyisipkan catatan data ke dalam indeks vektor. Jika catatan data dengan key tertentu sudah ada, catatan yang ada akan ditimpa.

TVS.HGETALL

TVS.HGETALL index_name key

Mengambil semua atribut dan nilai catatan data untuk key tertentu dalam indeks vektor.

TVS.HMGET

TVS.HMGET index_name key attribute_key [attribute_key ...]

Mengembalikan nilai kunci atribut tertentu untuk key tertentu dalam indeks vektor.

TVS.DEL

TVS.DEL index_name key [key ...]

Menghapus catatan data (key) tertentu dari indeks vektor tertentu.

TVS.HDEL

TVS.HDEL index_name key attribute_key [attribute_key ...]

Menghapus satu atau beberapa kunci atribut dan nilainya dari catatan (key) dalam indeks vektor.

TVS.SCAN

TVS.SCAN index_name cursor [MATCH pattern] [COUNT count] [FILTER filter_string] [VECTOR vector] [MAX_DIST max_distance]

Memindai catatan data (diidentifikasi oleh key) yang memenuhi kondisi tertentu dalam indeks vektor tertentu.

TVS.HINCRBY

TVS.HINCRBY index_name key attribute_key num

Menambah nilai integer dari attribute_key untuk catatan data (key) tertentu dalam indeks vektor sebesar num.

TVS.HINCRBYFLOAT

TVS.HINCRBYFLOAT index_name key attribute_key num

Menambah nilai attribute_key untuk catatan data (key) tertentu dengan bilangan titik mengambang num dalam indeks vektor tertentu.

TVS.HPEXPIREAT

TVS.HPEXPIREAT index_name key milliseconds-timestamp

Menetapkan waktu kedaluwarsa absolut dalam milidetik untuk catatan data, diidentifikasi oleh key-nya, dalam indeks vektor tertentu.

TVS.HPEXPIRE

TVS.HPEXPIRE index_name key milliseconds-timestamp

Menetapkan waktu kedaluwarsa relatif dalam milidetik untuk key tertentu dalam indeks vektor.

TVS.HEXPIREAT

TVS.HEXPIREAT index_name key timestamp

Menetapkan waktu kedaluwarsa absolut untuk key tertentu dalam indeks vektor, akurat hingga detik.

TVS.HEXPIRE

TVS.HEXPIRE index_name key timestamp

Menetapkan waktu kedaluwarsa relatif dalam detik untuk vektor (key) tertentu dalam indeks vektor.

TVS.HPTTL

TVS.HPTTL index_name key

Mengembalikan TTL, dalam milidetik, untuk catatan data (key) tertentu dalam indeks vektor.

TVS.HTTL

TVS.HTTL index_name key

Mengambil TTL dalam detik untuk catatan data (key) tertentu dalam indeks vektor tertentu.

TVS.HPEXPIRETIME

TVS.HPEXPIRETIME index_name key

Mengembalikan waktu kedaluwarsa absolut catatan data (key) tertentu dalam indeks vektor, sebagai stempel waktu UNIX dalam milidetik.

TVS.HEXPIRETIME

TVS.HEXPIRETIME index_name key

Mengembalikan waktu kedaluwarsa absolut catatan data (key) tertentu dalam indeks vektor sebagai stempel waktu UNIX dalam detik.

Kueri tetangga terdekat vektor

TVS.KNNSEARCH

TVS.KNNSEARCH index_name topN vector [filter_string] [param_key param_value]

Menjalankan kueri tetangga terdekat untuk vektor tertentu dalam indeks vektor dan mengembalikan hingga topN hasil.

TVS.KNNSEARCHFIELD

TVS.KNNSEARCHFIELD index_name topN vector field_count field_name [field_name ...] [filter_string] [param_key param_value]

Mencari tetangga terdekat vektor tertentu dalam indeks vektor. Logika pencarian identik dengan TVS.KNNSEARCH, tetapi perintah ini juga mengembalikan atribut tag.

TVS.GETDISTANCE

TVS.GETDISTANCE index_name vector key_count key [key, ...] [TOPN topN] [FILTER filter_string] [MAX_DIST max_distance]

Menemukan tetangga terdekat dari vektor kueri dari daftar key tertentu dalam indeks vektor.

TVS.MKNNSEARCH

TVS.MKNNSEARCH index_name topN vector_count vector [vector ...] [filter_string] [param_key param_value]

Menjalankan pencarian tetangga terdekat batch untuk beberapa vektor dalam indeks vektor tertentu.

TVS.MINDEXKNNSEARCH

TVS.MINDEXKNNSEARCH index_count index_name [index_name ...] topN vector [filter_string] [param_key param_value]

Mencari tetangga terdekat vektor tertentu di beberapa indeks vektor.

TVS.MINDEXKNNSEARCHFIELD

TVS.MINDEXKNNSEARCHFIELD index_count index_name [index_name ...] topN vector field_count field_name [field_name ...] [filter_string] [param_key param_value]

Menjalankan kueri tetangga terdekat untuk vektor tertentu di beberapa indeks vektor dan secara opsional mengembalikan tag.

TVS.MINDEXMKNNSEARCH

TVS.MINDEXMKNNSEARCH index_count index_name [index_name ...] topN vector_count vector [vector ...] [filter_string] [param_key param_value]

Mencari beberapa indeks vektor untuk tetangga terdekat dari beberapa vektor.

Umum

DEL

DEL key [key ...]

Menghapus satu atau beberapa indeks TairVector menggunakan perintah Redis DEL asli.

Catatan

Daftar berikut menjelaskan konvensi sintaks perintah yang digunakan dalam topik ini:

  • Kata kunci huruf kapital: menunjukkan kata kunci perintah.

  • Teks miring: menunjukkan variabel.

  • [opsi]: menunjukkan bahwa parameter yang diapit bersifat opsional. Parameter yang tidak diapit kurung siku harus ditentukan.

  • A|B: menunjukkan bahwa parameter yang dipisahkan oleh garis vertikal (|) saling eksklusif. Hanya satu parameter yang dapat ditentukan.

  • ...: menunjukkan bahwa parameter sebelum simbol ini dapat diulang.

TVS.CREATEINDEX

Item

Deskripsi

Sintaks

TVS.CREATEINDEX index_name dims algorithm distance_method [algo_param_key algo_param_value] ...

Kompleksitas waktu

O(1)

Deskripsi perintah

Membuat indeks vektor, menentukan algoritma untuk membangun dan mengkueri indeks, serta fungsi jarak. Indeks hanya dapat dihapus dengan perintah TVS.DELINDEX.

Parameter

  • index_name: Nama indeks vektor.

  • dims: Dimensi vektor. Semua vektor yang dimasukkan ke dalam indeks harus memiliki dimensi yang sama. Nilai harus berada dalam rentang [1, 32768].

  • algorithm: Algoritma untuk membangun dan mengkueri indeks. Nilai yang valid:

    • FLAT: Menjalankan kueri dengan pencarian brute-force tanpa membuat indeks terpisah. Algoritma ini cocok untuk set data kecil dengan kurang dari 10.000 catatan.

    • HNSW: Membangun indeks berbasis graf HNSW untuk kueri. Algoritma ini cocok untuk set data besar.

  • distance_method: Metode untuk menghitung jarak antar vektor. Nilai yang valid:

    • L2: Jarak Euclidean kuadrat.

    • IP: Inner product. Jarak dihitung sebagai 1 - inner product.

    • COSINE: Jarak kosinus. Jarak dihitung sebagai 1 - cosine similarity. Saat Anda menggunakan jarak kosinus, vektor input dikonversi menjadi vektor satuan (normalisasi L2). Akibatnya, vektor yang dikembalikan mungkin tidak identik dengan vektor aslinya.

    • JACCARD: Jarak Jaccard. Jarak dihitung sebagai 1 - koefisien Jaccard. Memerlukan parameter data_type diatur ke BINARY.

  • algo_param_key dan algo_param_value:

    • data_type: Tipe data vektor padat. Nilai yang valid:

      • FLOAT32 (default): Bilangan floating-point presisi tunggal 4 byte.

      • FLOAT16: Bilangan floating-point presisi setengah 2 byte yang sesuai dengan standar IEEE 754-2008. Tipe data ini dapat mengurangi penggunaan penyimpanan untuk vektor tetapi mungkin mengakibatkan sedikit kehilangan presisi. Rentang nilai untuk FLOAT16 adalah [-65519, 65519].

      • BINARY: Vektor biner yang hanya berisi 0 dan 1. Tipe data ini hanya dapat digunakan dengan fungsi jarak Jaccard.

    • Parameter khusus untuk indeks HNSW:

      • ef_construct: Ukuran daftar dinamis yang digunakan selama pembangunan indeks dengan algoritma HNSW. Nilai default adalah 100 dan rentang validnya [1, 1000]. Nilai yang lebih besar umumnya meningkatkan akurasi kueri tetapi mengurangi kinerja.

      • M: Jumlah maksimum koneksi keluar untuk setiap node pada setiap lapisan graf. Nilai default adalah 16 dan rentang validnya [1, 100]. Nilai yang lebih besar umumnya meningkatkan akurasi kueri tetapi mengurangi kinerja.

      • auto_gc: Mengaktifkan atau menonaktifkan reklamasi ruang indeks otomatis. Nilai yang valid adalah false (default) dan true. Fitur ini memerlukan versi minor instans 6.2.8.2 atau lebih baru. Indeks HNSW menggunakan penghapusan bertanda. Mengaktifkan fitur ini memungkinkan reklamasi ruang otomatis, yang mengurangi penggunaan memori tetapi mungkin memengaruhi kinerja kueri tetangga terdekat. Kami merekomendasikan mengaktifkan fitur ini untuk skenario yang sensitif terhadap memori.

    • Parameter khusus untuk indeks hibrida:

      • Untuk membuat indeks terbalik pada bidang tag tertentu, Anda harus menentukan nama bidang dan tipe datanya.

        Gunakan sintaks inverted_index_<field_name> int|long|float|double|string untuk membuat indeks terbalik pada field_name. Tipe data yang didukung adalah int, long, float, double, dan string. Kata kunci field_name dan tipe data harus dalam huruf kecil.

        Sebagai contoh, untuk membuat indeks terbalik pada bidang bernama productname dengan tipe String, gunakan inverted_index_productname string.

      • lexical_algorithm: Algoritma pencarian teks penuh.

        • bm25: Algoritma BM25 (Okapi BM25), yang cocok untuk pencarian teks penuh.

          • Saat Anda menulis data menggunakan TVS.HSET, atur attribute_key ke TEXT (harus huruf kapital). Indeks teks penuh kemudian dibangun secara otomatis pada attribute_value yang sesuai.

          • Anda memberikan teks asli, dan Tair membangun indeksnya.

        • vector: Algoritma vektor, yang cocok untuk vektor jarang.

          Anda harus mengodekan teks asli (penyematan) dan menyediakan vektor jarang. Format datanya adalah "[[<index1>,<value1>],[<index2>,<value2>],...]", di mana Indeks bertipe uint32_t dan value bertipe Float yang merepresentasikan Bobot atau frekuensi kata kunci.

      • Jika Anda mengatur lexical_algorithm ke bm25, Anda juga dapat mengonfigurasi parameter berikut.

        • analyzer: Alat analisis. Saat ini, jieba (default) dan ik_smart didukung.

        • k1: Mengontrol saturasi frekuensi istilah dalam algoritma BM25. Nilai harus lebih besar dari 0. Nilai default adalah 1,2.

        • b: Mengontrol pengaruh panjang dokumen dalam algoritma BM25. Nilai harus berada dalam rentang [0, 1]. Nilai default adalah 0,75.

      • Jika Anda mengatur lexical_algorithm ke vector, Anda juga dapat mengonfigurasi parameter berikut.

        • lexical_use_hnsw: Menentukan apakah akan menggunakan indeks HNSW untuk vektor jarang. Nilai yang valid: 1 (gunakan indeks HNSW) dan 0 (default, gunakan indeks terbalik).

        • lexical_hnsw_m: Saat lexical_use_hnsw diatur ke 1, parameter ini menentukan nilai M untuk indeks HNSW. Untuk informasi lebih lanjut, lihat Parameter khusus untuk indeks HNSW.

        • lexical_hnsw_ef_construct: Saat lexical_use_hnsw diatur ke 1, parameter ini menentukan nilai ef_construct untuk indeks HNSW. Untuk informasi lebih lanjut, lihat Parameter khusus untuk indeks HNSW.

      • hybrid_ratio: Bobot default untuk pencarian vektor dalam kueri. Nilai harus berupa float dalam rentang [0, 1]. Nilai default adalah 0,5. Bobot untuk pencarian teks penuh dihitung sebagai 1 - hybrid_ratio.

Nilai kembali

  • Mengembalikan OK jika berhasil.

  • Jika tidak, mengembalikan pesan error.

Contoh

Contoh perintah:

# Buat indeks vektor dengan dimensi vektor 2, algoritma HNSW, fungsi jarak Jaccard, dan tipe data BINARY.
TVS.CREATEINDEX index_name0 2 HNSW JACCARD data_type BINARY

# Buat indeks vektor dengan dimensi vektor 2, algoritma HNSW, fungsi jarak L2, dan tipe data FLOAT32.
TVS.CREATEINDEX index_name1 2 HNSW L2 

# Buat indeks vektor dengan dimensi vektor 2, algoritma FLAT, fungsi jarak IP, dan tipe data FLOAT32.
TVS.CREATEINDEX index_name2 2 FLAT IP 

# Buat indeks vektor dengan dimensi vektor 2, algoritma FLAT, fungsi jarak Jaccard, dan tipe data BINARY.
TVS.CREATEINDEX index_name3 2 FLAT JACCARD data_type BINARY

# Buat indeks hibrida dengan dimensi vektor 2, algoritma HNSW, fungsi jarak IP, tipe data FLOAT32, dan algoritma pencarian teks penuh bm25. Ini juga menentukan indeks terbalik pada bidang 'productname' dengan tipe String.
TVS.CREATEINDEX index_name4 2 HNSW IP lexical_algorithm bm25 inverted_index_productname string

# Buat indeks vektor jarang dengan dimensi vektor 2, fungsi jarak IP, dan indeks HNSW.
TVS.CREATEINDEX index_name5 2 HNSW IP lexical_algorithm vector lexical_use_hnsw 1 lexical_hnsw_m 8 lexical_hnsw_ef_construct 100

Contoh output:

OK

TVS.GETINDEX

Item

Deskripsi

Sintaks

TVS.GETINDEX index_name

Kompleksitas waktu

O(1)

Deskripsi perintah

Mengambil metadata dari indeks vektor tertentu.

Parameter

  • index_name: Nama indeks vektor.

Output

  • Jika perintah berhasil, mengembalikan metadata indeks vektor.

  • Jika indeks vektor tertentu tidak ada, mengembalikan (empty array).

  • Jika tidak, mengembalikan pesan error.

Contoh

Jalankan perintah berikut terlebih dahulu:

TVS.CREATEINDEX my_index 2 HNSW L2 auto_gc true lexical_algorithm bm25
TVS.HSET my_index key0 VECTOR [1,2] creation_time 1730
TVS.HSET my_index key1 VECTOR [3,4] creation_time 1740
TVS.HSET my_index key2 VECTOR [5,6] creation_time 1750

Contoh perintah untuk indeks HNSW:

TVS.GETINDEX my_index

Contoh output:

 1) "lexical_term_count"   // Jumlah istilah dalam indeks teks penuh.
 2) "0"
 3) "lexical_record_count" // Jumlah dokumen dalam indeks teks penuh.
 4) "0"
 5) "lexical_algorithm"    // Algoritma pengindeksan teks penuh.
 6) "bm25"
 7) "auto_gc"              // Menentukan apakah reklamasi ruang memori otomatis diaktifkan untuk indeks HNSW.
 8) "1"
 9) "dimension"            // Dimensi vektor.
10) "2"
11) "attribute_data_size"  // Penggunaan memori data atribut, dalam byte.
12) "3720"
13) "distance_method"      // Metode jarak.
14) "L2"
15) "data_type"            // Tipe data vektor.
16) "FLOAT32"
17) "algorithm"            // Algoritma pengindeksan.
18) "HNSW"
19) "index_data_size"      // Penggunaan memori data vektor, dalam byte.
20) "105128040"
21) "M"                    // Jumlah maksimum tetangga keluar untuk setiap node dalam struktur indeks graf. Parameter ini hanya dikembalikan untuk indeks HNSW.
22) "16"
23) "data_count"           // Jumlah catatan pengguna.
24) "3"
25) "current_record_count" // Jumlah total vektor.
26) "3"
27) "ef_construct"         // Ukuran array dinamis yang digunakan selama pembangunan indeks. Parameter ini hanya dikembalikan untuk indeks HNSW.
28) "100"
29) "inverted_index_productname" // Informasi tentang indeks terbalik, termasuk nama bidang, tipe data, dan jumlah.
30) "field: productname, type: string, size: 1"
31) "delete_record_count"  // Jumlah vektor yang akan dihapus.
32) "0"

TVS.DELINDEX

Item

Deskripsi

sintaks

TVS.DELINDEX index_name

kompleksitas waktu

O(N), di mana N adalah jumlah key dalam indeks vektor.

deskripsi

Menghapus indeks vektor tertentu beserta seluruh datanya.

parameter

  • index_name: Nama indeks vektor.

nilai kembali

  • Mengembalikan 1 jika indeks vektor berhasil dihapus.

  • Mengembalikan 0 jika indeks tertentu tidak ada.

  • Jika tidak, mengembalikan pesan error.

contoh

Perintah:

TVS.DELINDEX index_name0

Output:

(integer) 1

TVS.SCANINDEX

Item

Deskripsi

Sintaks

TVS.SCANINDEX cursor [MATCH pattern] [COUNT count]

Kompleksitas waktu

O(N), di mana N adalah jumlah indeks vektor dalam instans Tair.

Deskripsi perintah

Memindai secara inkremental indeks vektor dalam instans Tair yang sesuai dengan kriteria tertentu.

Opsi

  • cursor: Kursor untuk pemindaian. Gunakan 0 untuk pemindaian awal. Untuk pemindaian berikutnya, gunakan kursor yang dikembalikan oleh panggilan sebelumnya.

  • pattern: Pola bergaya glob yang digunakan untuk memfilter indeks vektor berdasarkan nama.

  • count: Petunjuk jumlah item yang disarankan untuk dipindai per iterasi. Defaultnya adalah 10, dan jumlah aktual item yang dikembalikan mungkin berbeda.

Output

  • Mengembalikan array yang berisi dua elemen:

    • Kursor untuk iterasi berikutnya. Nilai "0" berarti pemindaian selesai.

    • Array nama indeks vektor (index_name) yang ditemukan dalam pemindaian saat ini.

  • Jika perintah gagal, mengembalikan pesan error.

Contoh

Contoh perintah:

TVS.SCANINDEX 0

Contoh output:

1) "0"
2) 1) "index_name1"
   2) "index_name0"
   3) "index_name2"
   4) "index_name3"

Contoh perintah dengan pola:

TVS.SCANINDEX 0 MATCH **name[0|1]

Contoh output:

1) "0"
2) 1) "index_name1"
   2) "index_name0"

TVS.HSET

Item

Deskripsi

Sintaks

TVS.HSET index_name key attribute_key attribute_value [attribute_key attribute_value] ...

Kompleksitas waktu

Kompleksitas waktu adalah O(1) jika tidak ada data vektor yang dibuat atau diperbarui; jika tidak, O(log(N)), di mana N adalah jumlah key dalam indeks vektor.

Deskripsi perintah

Menyisipkan catatan data ke dalam indeks vektor. Jika catatan data dengan key tertentu sudah ada, catatan yang ada akan ditimpa.

Parameter

  • index_name: Nama indeks vektor.

  • key: Kunci utama untuk catatan data. Anda dapat menggunakan perintah TVS.DEL untuk menghapus catatan tersebut.

  • attribute_key dan attribute_value: Atribut catatan, ditentukan sebagai satu atau beberapa pasangan kunci-nilai.

    • Untuk menyisipkan data vektor, atur attribute_key ke kata kunci VECTOR (harus huruf kapital). attribute_value yang sesuai harus berupa string data vektor yang sesuai dengan dimensi (dims) indeks vektor. Contoh: VECTOR [1,2]. Setiap key hanya dapat memiliki satu atribut VECTOR. Jika Anda mengatur atribut ini lagi untuk key yang sama, data yang ada akan ditimpa.

    • Untuk menyisipkan data teks, Anda harus telah mengonfigurasi parameter indeks hibrida saat membuat indeks. Atur attribute_key ke kata kunci TEXT (harus huruf kapital). attribute_value yang sesuai dapat berupa data teks, seperti "TairVector adalah layanan database vektor proprietary yang dikembangkan oleh Tair", atau embedding, seperti "[[2,0.221],[42,09688],...]".

    • Anda juga dapat menambahkan atribut atau metadata kustom lainnya, seperti create_time 1663637425 (waktu pembuatan) atau location Hangzhou (lokasi).

Nilai kembali

  • Jika berhasil, perintah mengembalikan jumlah atribut baru yang ditambahkan ke catatan data. Jika hanya atribut yang sudah ada yang diperbarui, mengembalikan 0.

  • Jika tidak, mengembalikan pesan error.

Contoh

Contoh perintah:

TVS.HSET my_index key5 VECTOR [7,8] TEXT "TairVector adalah layanan database vektor proprietary yang dikembangkan oleh Tair" create_time 1800

Contoh output:

(integer) 3

TVS.HGETALL

Item

Deskripsi

Sintaks

TVS.HGETALL index_name key

Kompleksitas waktu

O(1)

Deskripsi perintah

Mengambil semua atribut dan nilai catatan data untuk key tertentu dalam indeks vektor.

Parameter

  • index_name: Nama indeks vektor.

  • key: Kunci utama catatan data.

Nilai kembali

  • Jika berhasil, mengembalikan array atribut dan nilai yang sesuai secara bergantian untuk key tertentu.

  • Jika indeks vektor atau key tertentu tidak ada, mengembalikan (empty array).

  • Jika tidak, mengembalikan pesan error.

Contoh

Contoh perintah:

TVS.HGETALL index_name0 key0

Contoh output:

1) "VECTOR"
2) "[1,2]"
3) "location"
4) "Hangzhou"
5) "create_time"
6) "1663637425"

TVS.HMGET

Item

Deskripsi

Sintaks

TVS.HMGET index_name key attribute_key [attribute_key ...]

Kompleksitas waktu

O(1)

Deskripsi perintah

Mengembalikan nilai kunci atribut tertentu untuk key tertentu dalam indeks vektor.

Parameter

  • index_name: Nama indeks vektor.

  • key: Kunci utama catatan.

  • attribute_key: Kunci atribut yang akan diambil. Untuk mengambil vektor, tentukan kata kunci VECTOR (harus huruf kapital). Untuk mengambil data teks mentah dari indeks teks penuh, tentukan kata kunci TEXT (harus huruf kapital).

Mengembalikan

  • Jika berhasil, mengembalikan array nilai untuk kunci atribut yang ditentukan, sesuai urutan permintaan. Jika kunci atribut tidak ada, perintah mengembalikan nil di tempatnya.

  • Jika tidak, perintah mengembalikan pesan error.

Contoh

Contoh perintah:

TVS.HMGET index_name0 key0 create_time location VECTOR TEXT

Contoh output:

1) "1800"
2) "[7,8]"
3) "TairVector adalah layanan database vektor proprietary yang dikembangkan oleh Tair"

TVS.DEL

Item

Deskripsi

Sintaks

TVS.DEL index_name key [key ...]

Kompleksitas waktu

O(1)

Deskripsi perintah

Menghapus catatan data (key) tertentu dari indeks vektor tertentu.

Parameter

  • index_name: Nama indeks vektor.

  • key: Kunci utama catatan data.

Nilai kembali

  • Berhasil: Menghapus catatan data (key) tertentu dan mengembalikan jumlah penghapusan untuk key.

  • Mengembalikan 0 jika indeks vektor tidak ada.

  • Jika tidak, mengembalikan pesan error.

Contoh

Contoh perintah:

TVS.DEL index_name0 keyV

Contoh output:

 (integer) 1

TVS.HDEL

Item

Deskripsi

Sintaks

TVS.HDEL index_name key attribute_key [attribute_key ...]

Kompleksitas waktu

O(1)

Deskripsi perintah

Menghapus satu atau beberapa kunci atribut dan nilainya dari catatan (key) dalam indeks vektor.

Parameter

  • index_name: Nama indeks vektor.

  • key: Kunci utama catatan.

  • attribute_key: Kunci atribut untuk operasi. Anda dapat menentukan beberapa kunci. Untuk menghapus data vektor, masukkan kata kunci VECTOR dalam huruf kapital. Untuk menghapus data indeks penuh, masukkan kata kunci TEXT dalam huruf kapital.

Nilai kembali

  • Mengembalikan jumlah kunci atribut yang dihapus.

  • Mengembalikan 0 jika indeks vektor tidak ada.

  • Mengembalikan pesan error dalam kasus lain.

Contoh

Contoh perintah:

TVS.HDEL index_name0 keyc VECTOR

Contoh output:

 (integer) 1

TVS.SCAN

Kategori

Deskripsi

Sintaks

TVS.SCAN index_name cursor [MATCH pattern] [COUNT count] [FILTER filter_string] [VECTOR vector] [MAX_DIST max_distance]

Kompleksitas waktu

O(N), di mana N adalah jumlah key dalam indeks vektor.

Deskripsi perintah

Memindai catatan data (diidentifikasi oleh key) yang memenuhi kondisi tertentu dalam indeks vektor tertentu.

Parameter

  • index_name: Nama indeks vektor.

  • cursor: Kursor untuk pemindaian. Gunakan 0 untuk pemindaian pertama. Untuk pemindaian berikutnya, gunakan kursor yang dikembalikan oleh panggilan sebelumnya.

  • pattern: Pola bergaya glob untuk mencocokkan key.

  • count: Jumlah item yang disarankan untuk dipindai dalam setiap iterasi. Nilai default adalah 10. Jumlah aktual item yang dikembalikan tidak dijamin tepat.

  • filter_string: Kondisi filter.

    • Mendukung operator seperti +, -, *, /, <, >, !=, (), &&, dan ||. Operator > dan < tidak mendukung perbandingan string. Untuk menyertakan literal string dalam filter Anda, gunakan karakter escape (\) untuk tanda kutip. Contoh: create_time > 1663637425 && location == \"Hangzhou\".

    • Pisahkan operator dari operandnya dengan spasi. Contoh: "creation_time > 1735".

    • Perbandingan boolean langsung, seperti flag == true, tidak didukung. Sebagai gantinya, bandingkan nilai sebagai string: flag == \"true\".

  • vector: Vektor kueri. Parameter ini harus digunakan dengan parameter max_distance.

  • max_distance: Ambang batas jarak maksimum. Parameter ini harus digunakan dengan parameter vector. Saat keduanya ditentukan, perintah hanya mengembalikan hasil yang jaraknya dari vector kueri kurang dari max_distance.

Nilai kembali

  • Jika berhasil, perintah mengembalikan array dengan dua elemen:

    • Elemen pertama adalah kursor untuk iterasi berikutnya. Nilai 0 menunjukkan bahwa pemindaian selesai.

    • Elemen kedua adalah array nama key untuk catatan data yang ditemukan dalam iterasi saat ini.

  • Jika gagal, perintah mengembalikan pesan error.

Contoh

Contoh perintah:

TVS.SCAN index_name0 0

Contoh nilai kembali:

1) "0"
2) 1) "key0"
   2) "keyV"

TVS.HINCRBY

Kategori

Deskripsi

Sintaks

TVS.HINCRBY index_name key attribute_key num

Kompleksitas waktu

O(1)

Deskripsi perintah

Menambah nilai integer dari attribute_key untuk catatan data (key) tertentu dalam indeks vektor sebesar num.

Jika attribute_key tidak ada, perintah mengaturnya ke 0 sebelum melakukan penambahan. Jika nilai attribute_key bukan integer, perintah mengembalikan error.

Parameter

  • index_name: Nama indeks vektor.

  • key: Pengenal kunci utama catatan data.

  • attribute_key: Kunci atribut yang akan ditambah.

  • num: Nilai integer yang akan ditambahkan.

Nilai kembali

  • Balasan integer: Nilai baru dari attribute_key.

  • Jika tidak, mengembalikan pesan error.

Contoh

Contoh perintah:

TVS.HINCRBY index_name0 key0 tv01 20

Contoh output:

(integer) 20

TVS.HINCRBYFLOAT

Kategori

Deskripsi

Sintaks

TVS.HINCRBYFLOAT index_name key attribute_key num

Kompleksitas waktu

O(1)

Deskripsi perintah

Menambah nilai attribute_key untuk catatan data (key) tertentu dengan bilangan titik mengambang num dalam indeks vektor tertentu.

Jika attribute_key tertentu tidak ada, maka dibuat dengan num sebagai nilai awalnya.

Parameter

  • index_name: Nama indeks vektor.

  • key: Pengenal kunci utama catatan.

  • attribute_key: Kunci atribut yang akan ditambah.

  • num: Nilai titik mengambang yang akan ditambahkan.

Nilai kembali

  • Jika berhasil, nilai atribut kunci yang diperbarui.

  • Jika gagal, pesan error.

Contoh

Contoh perintah:

TVS.HINCRBYFLOAT index_name0 key0 tv02 9.34

Contoh output:

"9.34"

TVS.HPEXPIREAT

Kategori

Deskripsi

Sintaks

TVS.HPEXPIREAT index_name key milliseconds-timestamp

Kompleksitas waktu

O(1)

Deskripsi perintah

Menetapkan waktu kedaluwarsa absolut dalam milidetik untuk catatan data, diidentifikasi oleh key-nya, dalam indeks vektor tertentu.

Parameter

  • index_name: Nama indeks vektor.

  • key: Kunci utama catatan data.

  • milliseconds-timestamp: Stempel waktu UNIX yang ditentukan dalam milidetik. Jika stempel waktu berada di masa lalu, key kedaluwarsa segera.

Nilai kembali

  • Mengembalikan 1 jika timeout diatur untuk key yang ada.

  • Mengembalikan 0 jika key tidak ada.

  • Jika tidak, mengembalikan exception.

Contoh

Contoh perintah:

TVS.HPEXPIREAT index_name0 key1 16914619090000

Contoh output:

(integer) 1

TVS.HPEXPIRE

Item

Deskripsi

Sintaks

TVS.HPEXPIRE index_name key milliseconds-timestamp

Kompleksitas waktu

O(1)

Deskripsi perintah

Menetapkan waktu kedaluwarsa relatif dalam milidetik untuk key tertentu dalam indeks vektor.

Parameter

  • index_name: Nama indeks vektor.

  • key: Pengenal kunci utama vektor.

  • milliseconds-timestamp: Waktu kedaluwarsa relatif, dalam milidetik.

Nilai kembali

  • 1 jika kedaluwarsa diatur.

  • 0 jika key tidak ada.

  • Error dalam kasus lain.

Contoh

Contoh perintah:

TVS.HPEXPIRE index_name0 key1 1000

Contoh output:

(integer) 1

TVS.HEXPIREAT

Kategori

Deskripsi

Sintaks

TVS.HEXPIREAT index_name key timestamp

Kompleksitas waktu

O(1)

Deskripsi perintah

Menetapkan waktu kedaluwarsa absolut untuk key tertentu dalam indeks vektor, akurat hingga detik.

Opsi

  • index_name: Nama indeks vektor.

  • key: Kunci utama catatan.

  • timestamp: Stempel waktu UNIX dalam detik. Jika stempel waktu berada di masa lalu, key kedaluwarsa segera.

Nilai kembali

  • Mengembalikan 1 jika timeout diatur untuk key.

  • Mengembalikan 0 jika key tidak ada.

  • Mengembalikan pesan error jika tidak.

Contoh

Contoh perintah:

TVS.HEXPIREAT index_name0 key2 1691466981

Contoh output:

(integer) 1

TVS.HEXPIRE

Kategori

Deskripsi

Sintaks

TVS.HEXPIRE index_name key timestamp

Kompleksitas waktu

O(1)

Deskripsi perintah

Menetapkan waktu kedaluwarsa relatif dalam detik untuk vektor (key) tertentu dalam indeks vektor.

Parameter

  • index_name: Nama indeks vektor.

  • key: Pengenal kunci utama vektor.

  • timestamp: Waktu kedaluwarsa relatif, dalam detik.

Output

  • Jika timeout berhasil diatur untuk key yang ada: 1.

  • Jika key tidak ada: 0.

  • Jika tidak, pesan error dikembalikan.

Contoh

Contoh perintah:

TVS.HEXPIRE index_name0 key2 100

Contoh output:

(integer) 1

TVS.HPTTL

Kategori

Deskripsi

Sintaks

TVS.HPTTL index_name key

Kompleksitas waktu

O(1)

Deskripsi perintah

Mengembalikan TTL, dalam milidetik, untuk catatan data (key) tertentu dalam indeks vektor.

Parameter

  • index_name: Nama indeks vektor.

  • key: Kunci utama catatan data.

Nilai kembali

  • TTL dalam milidetik, jika key ada dan memiliki waktu kedaluwarsa yang diatur.

  • -1 jika key ada tetapi tidak memiliki waktu kedaluwarsa yang diatur.

  • -2 jika key atau index_name tidak ada.

  • Pesan error.

Contoh

Contoh perintah:

TVS.HPTTL index_name0 key2

Contoh output:

(integer) 65417

TVS.HTTL

Kategori

Deskripsi

Sintaks

TVS.HTTL index_name key

Kompleksitas waktu

O(1)

Deskripsi perintah

Mengambil TTL dalam detik untuk catatan data (key) tertentu dalam indeks vektor tertentu.

Parameter

  • index_name: Nama indeks vektor.

  • key: Kunci utama catatan data.

Nilai kembali

  • Sisa TTL dalam detik, jika key ada dan memiliki waktu kedaluwarsa.

  • -1, jika key ada tetapi tidak memiliki waktu kedaluwarsa.

  • -2, jika key atau index_name tidak ada.

  • Pesan exception untuk error lainnya.

Contoh

Contoh perintah:

TVS.HTTL index_name0 key2

Contoh output:

(integer) 58

TVS.HPEXPIRETIME

Kategori

Deskripsi

Sintaks

TVS.HPEXPIRETIME index_name key

Kompleksitas waktu

O(1)

Deskripsi perintah

Mengembalikan waktu kedaluwarsa absolut catatan data (key) tertentu dalam indeks vektor, sebagai stempel waktu Unix dalam milidetik.

Parameter

  • index_name: Nama indeks vektor.

  • key: Pengenal kunci utama catatan data.

Nilai kembali

  • Jika key ada dan memiliki waktu kedaluwarsa yang diatur: Waktu kedaluwarsa absolut sebagai stempel waktu Unix dalam milidetik.

  • Jika key ada tetapi tidak memiliki waktu kedaluwarsa yang diatur: -1.

  • Jika key atau index_name tidak ada: -2.

  • Jika tidak: Pesan error yang sesuai.

Contoh

Contoh perintah:

TVS.HPEXPIRETIME index_name0 key2

Contoh output:

(integer) 1691473985764

TVS.HEXPIRETIME

Item

Deskripsi

Sintaks

TVS.HEXPIRETIME index_name key

Kompleksitas waktu

O(1)

Deskripsi perintah

Mengembalikan waktu kedaluwarsa absolut catatan data (key) tertentu dalam indeks vektor sebagai stempel waktu Unix dalam detik.

Parameter

  • index_name: Nama indeks vektor.

  • key: Pengenal kunci utama catatan data.

Output

  • Jika key ada dan memiliki waktu kedaluwarsa yang diatur, nilainya adalah waktu kedaluwarsa absolut (stempel waktu Unix) dalam detik.

  • key ada tetapi tidak memiliki waktu kedaluwarsa: -1.

  • Jika key atau index_name tidak ada, perintah mengembalikan -2.

  • Dalam kasus lain, perintah mengembalikan pesan error.

Contoh

Contoh perintah:

TVS.HEXPIRETIME index_name0 key2

Contoh output:

(integer) 1691473985

TVS.KNNSEARCH

Item

Deskripsi

Sintaks

TVS.KNNSEARCH index_name topN vector [filter_string] [param_key param_value]

Kompleksitas waktu

  • Algoritma HNSW: O(log(N))

  • Algoritma FLAT: O(N)

N adalah jumlah key dalam indeks vektor.

Deskripsi perintah

Menjalankan kueri tetangga terdekat untuk vektor tertentu dalam indeks vektor dan mengembalikan hingga topN hasil.

Parameter

  • index_name: Nama indeks vektor.

  • topN: Jumlah hasil yang dikembalikan. Nilai harus berada dalam rentang [1, 10000].

  • vector: Nilai vektor yang digunakan untuk menjalankan kueri tetangga terdekat. Jika Anda ingin hanya menjalankan pencarian teks penuh pada indeks hibrida, Anda dapat mengirimkan "" ke bidang ini.

  • filter_string: Kondisi filter.

    • Mendukung operator seperti +-*/<>!=()&&||. Perbandingan string untuk lebih besar atau lebih kecil tidak didukung. Untuk menyertakan literal string dalam filter Anda, Anda harus menggunakan karakter escape (\) untuk tanda kutip. Contoh: "create_time > 1663637425 && location == \"Hangzhou\"".

    • Operator harus dipisahkan dari operandnya dengan spasi. Contoh: "creation_time > 1735".

    • Perbandingan boolean langsung, seperti flag == true, tidak didukung. Sebagai gantinya, bandingkan nilai sebagai string: flag == \"true\".

  • param_key dan param_value: Parameter operasional untuk kueri, ditentukan sebagai pasangan kunci-nilai. Parameter berikut didukung:

    • ef_search: Ukuran daftar dinamis untuk pencarian. Nilai default adalah 100, dan rentang validnya [1, 1000]. Nilai yang lebih besar umumnya meningkatkan akurasi pencarian tetapi meningkatkan overhead kinerja. Parameter ini khusus untuk algoritma HNSW.

      Untuk indeks hibrida yang menggunakan indeks HNSW untuk vektor jarang, gunakan sparse_ef_search untuk menentukan parameter ef_search untuk indeks vektor jarang.

    • MAX_DIST: Batas jarak maksimum. Ini harus berupa float. Menyaring key yang jaraknya ke vektor kueri lebih besar dari nilai ini.

    • TEXT: Teks kueri untuk pencarian hibrida, yang dapat berupa teks atau vektor. Jika parameter ini tidak ditentukan atau diatur ke "", tidak ada pencarian teks penuh yang dilakukan dan hanya pencarian vektor yang dilakukan.

    • hybrid_ratio: Bobot untuk hasil pencarian vektor dalam kueri ini. Nilai harus berupa float dalam rentang [0, 1]. Defaultnya adalah nilai hybrid_ratio yang diatur saat pembuatan indeks. Bobot untuk pencarian teks penuh dihitung sebagai 1-hybrid_ratio.

    • Secara default, sistem menggunakan strategi PostFilter, yang menjalankan pencarian vektor tetangga terdekat (KNN) sebelum menerapkan filter skalar.

      • vector_filter_count: Jumlah maksimum kandidat yang difilter dari hasil pencarian vektor. Default: 10.000.

        Dalam strategi PostFilter, pencarian berhenti jika memfilter lebih dari jumlah kandidat ini tanpa menemukan hasil topN.

      • fulltext_filter_count: Jumlah maksimum kandidat yang difilter dari hasil pencarian teks penuh. Default: 10.000.

        Dalam strategi PostFilter, pencarian berhenti jika memfilter lebih dari jumlah kandidat ini tanpa menemukan hasil topN.

      • Untuk menggunakan strategi PreFilter, yang menjalankan filter skalar berdasarkan indeks terbalik sebelum pencarian vektor KNN, tambahkan parameter search_policy scalar ke kueri Anda.

        Anda juga dapat memberikan parameter ivf_filter_count, yang menentukan jumlah maksimum catatan yang diambil dari indeks terbalik selama tahap pre-filtering. Defaultnya adalah 10.000. Dalam strategi PreFilter, jika jumlah catatan yang sesuai dengan filter skalar melebihi nilai ini, sistem kembali ke strategi PostFilter.

      Catatan

      Dalam kebanyakan kasus, parameter default ini memastikan latensi rendah sekaligus mempertahankan akurasi tinggi. Anda dapat menyesuaikannya untuk permintaan tertentu, tetapi perlu diingat bahwa nilai yang lebih tinggi dapat meningkatkan latensi kueri.

Nilai kembali

  • Eksekusi yang berhasil mengembalikan key dari tetangga terdekat dan jaraknya ke vektor target, diurutkan berdasarkan jarak dari terdekat ke terjauh.

  • Jika indeks vektor tertentu tidak ada, perintah mengembalikan (empty array).

  • Dalam kasus lain, mengembalikan pesan error.

Contoh

Jalankan perintah berikut terlebih dahulu:

TVS.CREATEINDEX my_index_k 2 HNSW L2 inverted_index_productname string
TVS.HSET my_index_k key0 VECTOR [1,2] creation_time 1730 productname "Aliyun"
TVS.HSET my_index_k key1 VECTOR [3,4] creation_time 1740 productname "other"
TVS.HSET my_index_k key2 VECTOR [5,6] creation_time 1750 productname "Aliyun"

Contoh 1:

TVS.KNNSEARCH my_index_k 2 [3,3.1] "creation_time > 1735"

Respons 1:

1) "key1"
2) "0.81000018119812012"
3) "key2"
4) "12.410000801086426"

Contoh 2:

TVS.KNNSEARCH my_index_k 2 [3,3.1]  "creation_time > 1735 && productname ==  \"Aliyun\"" search_policy scala ivf_filter_count 15000

Respons 2:

1) "key2"
2) "12.410000801086426"

TVS.KNNSEARCHFIELD

Item

Deskripsi

Sintaks

TVS.KNNSEARCHFIELD index_name topN vector field_count field_name [field_name ...] [filter_string] [param_key param_value]

Kompleksitas waktu

  • Algoritma HNSW: O(log(N))

  • Algoritma FLAT: O(N)

N adalah jumlah key dalam indeks vektor.

Deskripsi perintah

Mencari tetangga terdekat vektor tertentu dalam indeks vektor. Logika pencarian identik dengan TVS.KNNSEARCH, tetapi perintah ini juga mengembalikan atribut tag.

Parameter

  • index_name: Nama indeks vektor.

  • topN: Jumlah hasil yang dikembalikan. Nilai harus berada dalam rentang [1, 10000].

  • vector: Vektor kueri untuk pencarian tetangga terdekat. Untuk hanya menjalankan pencarian teks penuh pada indeks hibrida, Anda dapat mengirimkan string kosong ("") untuk parameter ini.

  • field_count: Jumlah atribut tag yang dikembalikan. Untuk mengembalikan semua atribut tag, atur field_count ke 0.

  • field_name: Nama atribut tag yang dikembalikan. Jumlah nama harus sesuai dengan nilai field_count.

  • filter_string: Kondisi filter. Untuk informasi lebih lanjut, lihat TVS.KNNSEARCH.

  • param_key dan param_value: Parameter operasional untuk kueri. Untuk informasi lebih lanjut, lihat TVS.KNNSEARCH.

Nilai kembali

  • Jika berhasil, perintah ini mengembalikan key, jarak dari vektor kueri, dan pasangan kunci-nilai atribut tag untuk setiap tetangga terdekat. Hasil diurutkan berdasarkan jarak secara ascending.

  • Jika indeks vektor tertentu tidak ada, mengembalikan (empty array).

  • Jika tidak, mengembalikan pesan error.

Contoh

Jalankan perintah berikut terlebih dahulu:

TVS.CREATEINDEX my_index_k 2 HNSW L2
TVS.HSET my_index_k key0 VECTOR [1,2] creation_time 1730
TVS.HSET my_index_k key1 VECTOR [3,4] creation_time 1740
TVS.HSET my_index_k key2 VECTOR [5,6] creation_time 1750

Contoh perintah:

TVS.KNNSEARCHFIELD my_index_k 2 [3,3.1] 0 "creation_time > 1735"

Contoh output:

1) 1) "key1"
   2) "0.81000018119812012"
   3) "VECTOR"
   4) "[3,4]"
   5) "creation_time"
   6) "1740"
2) 1) "key2"
   2) "12.410000801086426"
   3) "VECTOR"
   4) "[5,6]"
   5) "creation_time"
   6) "1750"

TVS.GETDISTANCE

Item

Deskripsi

Sintaks

TVS.GETDISTANCE index_name vector key_count key [key, ...] [TOPN topN] [FILTER filter_string] [MAX_DIST max_distance]

Kompleksitas waktu

  • Algoritma HNSW: O(log N)

  • Algoritma FLAT: O(N)

N adalah jumlah key dalam indeks vektor.

Deskripsi perintah

Menemukan tetangga terdekat dari vektor kueri dari daftar key tertentu dalam indeks vektor.

Parameter

  • index_name: Nama indeks vektor.

  • vector: Vektor kueri.

  • key_count: Jumlah key kandidat.

  • key: Nama key kandidat. Jumlah key harus sesuai dengan nilai key_count.

  • TOPN: Jumlah maksimum hasil yang dikembalikan. Nilai default adalah key_count. Nilai harus berada dalam rentang [1, key_count].

  • FILTER: Kondisi filter.

    • Mendukung operator seperti +-*/<>!=()&&||. Perbandingan lebih besar dan lebih kecil tidak didukung untuk string. Untuk menyertakan literal string, Anda harus menggunakan karakter escape (\) untuk tanda kutip. Contoh: create_time > 1663637425 && location == \"Hangzhou\".

    • Operator harus dipisahkan dari operandnya dengan spasi. Contoh, "creation_time > 1735".

    • Perbandingan boolean langsung, seperti flag == true, tidak didukung. Sebagai gantinya, bandingkan nilai sebagai string: flag == \"true\".

  • MAX_DIST: Menyaring key yang jaraknya dari vektor kueri melebihi nilai ini.

Output

  • Mengembalikan key yang cocok dan jaraknya. Secara default, hasil dikembalikan dalam urutan yang sama seperti key yang diberikan. Jika TOPN ditentukan, perintah mengembalikan key terdekat topN dan jaraknya, diurutkan dari terdekat ke terjauh.

  • Mengembalikan (empty array) jika indeks vektor tidak ada.

  • Untuk semua error lainnya, pesan error dikembalikan.

Contoh

Jalankan perintah berikut terlebih dahulu:

TVS.CREATEINDEX my_index_k 2 HNSW L2
TVS.HSET my_index_k key0 VECTOR [1,2] creation_time 1730
TVS.HSET my_index_k key1 VECTOR [3,4] creation_time 1740
TVS.HSET my_index_k key2 VECTOR [5,6] creation_time 1750

Contoh perintah:

TVS.GETDISTANCE my_index_k [1,1] 2 key1 key2

Contoh output:

1) "key1"
2) "13"
3) "key2"
4) "41"

TVS.MKNNSEARCH

Item

Deskripsi

Sintaks

TVS.MKNNSEARCH index_name topN vector_count vector [vector ...] [filter_string] [param_key param_value]

Kompleksitas waktu

  • Algoritma HNSW: vector_count * O(log(N))

  • Algoritma FLAT: vector_count * O(N)

N adalah jumlah key dalam indeks vektor.

Deskripsi perintah

Menjalankan pencarian tetangga terdekat batch untuk beberapa vektor dalam indeks vektor tertentu.

Parameter

  • index_name: Nama indeks vektor.

  • topN: Jumlah hasil yang dikembalikan untuk setiap vektor kueri. Nilai harus berada dalam rentang [1, 10000].

  • vector_count : Jumlah vektor kueri.

  • vector: Satu atau beberapa vektor untuk pencarian tetangga terdekat. Untuk hanya menjalankan pencarian teks penuh pada indeks hibrida, kirimkan "" untuk parameter ini.

  • filter_string: Kondisi filter. Untuk informasi lebih lanjut, lihat deskripsi di TVS.KNNSEARCH.

  • param_key dan param_value: Parameter runtime untuk kueri. Untuk informasi lebih lanjut, lihat deskripsi di TVS.KNNSEARCH.

Nilai kembali

  • Jika berhasil, perintah mengembalikan beberapa array hasil, satu untuk setiap vektor kueri. Setiap array berisi key dari tetangga terdekat dan jaraknya, diurutkan dari terdekat ke terjauh.

  • Jika indeks vektor tidak ada, perintah mengembalikan (empty array).

  • Jika tidak, perintah mengembalikan pesan error.

Contoh

Jalankan perintah berikut terlebih dahulu:

TVS.CREATEINDEX my_index_m 2 HNSW L2
TVS.HSET my_index_m key0 VECTOR [1,2] creation_time 1730
TVS.HSET my_index_m key1 VECTOR [3,4] creation_time 1740
TVS.HSET my_index_m key2 VECTOR [5,6] creation_time 1750

Contoh perintah:

TVS.MKNNSEARCH my_index_m 2 2 [3,4] [5,6] "creation_time > 1735"

Contoh output:

1) 1) "key1"
   2) "0"
   3) "key2"
   4) "8"
2) 1) "key2"
   2) "0"
   3) "key1"
   4) "8"

TVS.MINDEXKNNSEARCH

Item

Deskripsi

Sintaks

TVS.MINDEXKNNSEARCH index_count index_name [index_name ...] topN vector [filter_string] [param_key param_value]

Kompleksitas waktu

  • Algoritma HNSW: index_count * O(log(N))

  • Algoritma FLAT: index_count * O(N)

N adalah jumlah key dalam indeks vektor.

Deskripsi perintah

Mencari tetangga terdekat vektor tertentu di beberapa indeks vektor.

Parameter

  • index_count: Jumlah indeks vektor.

  • index_name: Nama indeks vektor.

  • topN: Jumlah tetangga terdekat yang dikembalikan, dari 1 hingga 10.000. Perintah mengambil hasil top topN dari setiap indeks yang ditentukan, menggabungkannya, dan mengembalikan tetangga terdekat top topN secara keseluruhan dari set gabungan.

  • vector: Vektor kueri untuk kueri tetangga terdekat.

  • filter_string: Kondisi filter. Untuk informasi lebih lanjut, lihat deskripsi di TVS.KNNSEARCH.

  • param_key dan param_value: Parameter operasional untuk kueri. Untuk informasi lebih lanjut, lihat deskripsi di TVS.KNNSEARCH.

Output

  • Mengembalikan array key tetangga terdekat dan jaraknya ke vektor kueri, diurutkan dari terdekat ke terjauh.

  • Mengembalikan (empty array) jika indeks vektor tertentu tidak ada.

  • Jika tidak, mengembalikan pesan error.

Contoh

Jalankan perintah ini terlebih dahulu:

TVS.CREATEINDEX my_index_mk 2 HNSW L2
TVS.HSET my_index_mk key0 VECTOR [1,2] creation_time 1730
TVS.HSET my_index_mk key1 VECTOR [3,4] creation_time 1740
TVS.HSET my_index_mk key2 VECTOR [5,6] creation_time 1750
TVS.CREATEINDEX my_index_mx 2 HNSW L2
TVS.HSET my_index_mx key5 VECTOR [8,7] creation_time 1730
TVS.HSET my_index_mx key6 VECTOR [6,5] creation_time 1740
TVS.HSET my_index_mx key7 VECTOR [4,3] creation_time 1750

Contoh perintah:

TVS.MINDEXKNNSEARCH 2 my_index_mk my_index_mx 2 [0,0]

Contoh output:

1) "key0"
2) "5"
3) "key7"
4) "25"

TVS.MINDEXKNNSEARCHFIELD

Kategori

Deskripsi

Sintaks

TVS.MINDEXKNNSEARCHFIELD index_count index_name [index_name ...] topN vector field_count field_name [field_name ...] [filter_string] [param_key param_value]

Kompleksitas waktu

  • Algoritma HNSW: index_count * O(log(N))

  • Algoritma FLAT: index_count * O(N)

N adalah jumlah key dalam indeks vektor.

Deskripsi perintah

Menjalankan kueri tetangga terdekat untuk vektor tertentu di beberapa indeks vektor dan secara opsional mengembalikan tag.

Parameter

  • index_count: Jumlah indeks vektor.

  • index_name: Nama indeks vektor.

  • topN: Jumlah tetangga terdekat yang dikembalikan, berkisar dari 1 hingga 10.000. Perintah mengkueri tetangga terdekat topN di setiap indeks vektor, menggabungkan hasil ini, lalu mengembalikan hasil topN secara keseluruhan dengan jarak terpendek.

  • vector: Vektor input untuk kueri tetangga terdekat.

  • field_count: Jumlah tag yang dikembalikan. Untuk mengembalikan semua tag, atur field_count ke 0.

  • field_name: Nama tag yang dikembalikan. Jumlah nama yang diberikan harus sesuai dengan nilai field_count.

  • filter_string: Kondisi filter. Untuk informasi lebih lanjut, lihat TVS.KNNSEARCH.

  • param_key dan param_value: Parameter runtime untuk kueri. Untuk informasi lebih lanjut, lihat TVS.KNNSEARCH.

Output

  • Jika berhasil, perintah mengembalikan key dari tetangga terdekat, jaraknya ke vektor kueri, dan pasangan kunci-nilai tag yang sesuai. Hasil diurutkan berdasarkan jarak secara ascending.

  • Jika indeks vektor tertentu tidak ada, perintah mengembalikan (empty array).

  • Jika tidak, perintah mengembalikan pesan error.

Contoh

Jalankan perintah berikut terlebih dahulu:

TVS.CREATEINDEX my_index_mk 2 HNSW L2
TVS.HSET my_index_mk key0 VECTOR [1,2] creation_time 1730
TVS.HSET my_index_mk key1 VECTOR [3,4] creation_time 1740
TVS.HSET my_index_mk key2 VECTOR [5,6] creation_time 1750
TVS.CREATEINDEX my_index_mx 2 HNSW L2
TVS.HSET my_index_mx key5 VECTOR [8,7] creation_time 1730
TVS.HSET my_index_mx key6 VECTOR [6,5] creation_time 1740
TVS.HSET my_index_mx key7 VECTOR [4,3] creation_time 1750

Contoh perintah:

TVS.MINDEXKNNSEARCHFIELD 2 my_index_mk my_index_mx 2 [0,0] 0

Contoh output:

1) 1) "key0"
   2) "5"
   3) "my_index_mk"
   4) "VECTOR"
   5) "[1,2]"
   6) "creation_time"
   7) "1730"
2) 1) "key1"
   2) "25"
   3) "my_index_mk"
   4) "VECTOR"
   5) "[3,4]"
   6) "creation_time"
   7) "1740"

TVS.MINDEXMKNNSEARCH

Item

Deskripsi

Sintaks

TVS.MINDEXMKNNSEARCH index_count index_name [index_name ...] topN vector_count vector [vector ...] [filter_string] [param_key param_value]

Kompleksitas waktu

  • Algoritma HNSW: index_count vector_count O(log(N))

  • Algoritma FLAT: index_count * vector_count * O(N)

N mewakili jumlah key dalam indeks vektor.

Deskripsi perintah

Mencari beberapa indeks vektor untuk tetangga terdekat dari beberapa vektor.

Parameter

  • index_count: Jumlah indeks vektor.

  • index_name: Nama indeks vektor.

  • topN: Jumlah tetangga terdekat yang dikembalikan untuk setiap vektor kueri. Nilai harus berada dalam rentang [1, 10000]. Secara default, perintah mengambil hasil topN dari setiap indeks vektor, menggabungkannya, dan mengembalikan hasil topN secara keseluruhan dengan jarak terpendek.

  • vector_count: Jumlah vektor kueri.

  • vector: Vektor kueri untuk pencarian tetangga terdekat.

  • filter_string: Kondisi filter. Untuk informasi lebih lanjut, lihat TVS.KNNSEARCH.

  • param_key dan param_value: Parameter operasional untuk kueri. Untuk informasi lebih lanjut, lihat TVS.KNNSEARCH.

Nilai kembali

  • Jika berhasil, mengembalikan array array hasil dalam urutan yang sama seperti vektor kueri. Setiap array hasil berisi key dan jarak untuk setiap tetangga terdekat, diurutkan berdasarkan jarak dari terdekat ke terjauh.

  • Jika indeks vektor tertentu tidak ada, mengembalikan (empty array).

  • Dalam kasus lain, mengembalikan pesan error.

Contoh

Jalankan perintah ini terlebih dahulu:

TVS.CREATEINDEX my_index_mk 2 HNSW L2
TVS.HSET my_index_mk key0 VECTOR [1,2] creation_time 1730
TVS.HSET my_index_mk key1 VECTOR [3,4] creation_time 1740
TVS.HSET my_index_mk key2 VECTOR [5,6] creation_time 1750
TVS.CREATEINDEX my_index_mx 2 HNSW L2
TVS.HSET my_index_mx key5 VECTOR [8,7] creation_time 1730
TVS.HSET my_index_mx key6 VECTOR [6,5] creation_time 1740
TVS.HSET my_index_mx key7 VECTOR [4,3] creation_time 1750

Contoh perintah:

TVS.MINDEXMKNNSEARCH 2 my_index_mk my_index_mx 2 2 [0,0] [3,3]

Contoh output:

1) 1) "key0"
   2) "5"
   3) "key7"
   4) "25"
2) 1) "key1"
   2) "1"
   3) "key7"
   4) "1"