All Products
Search
Document Center

Tair (Redis® OSS-Compatible):Vector

Last Updated:Mar 20, 2026

TairVector adalah struktur data ekstensi yang dikembangkan oleh tim Tair untuk menyediakan layanan database vektor berkinerja tinggi dan real-time yang mengintegrasikan penyimpanan dan pengambilan.

Tentang TairVector

TairVector menggunakan struktur hash multi-lapis, seperti yang ditunjukkan pada gambar berikut. TairVector数据结构TairVector menyediakan dua algoritma pengindeksan: Hierarchical Navigable Small World (HNSW) dan Flat Search.

  • HNSW: membangun indeks vektor berbasis graf dan mendukung pembersihan ruang memori secara asinkron. Algoritma ini mempertahankan akurasi kueri yang tinggi sekaligus memungkinkan pembaruan indeks secara real-time.

  • Pencarian brute-force menawarkan akurasi kueri 100% dan kecepatan penyisipan yang cepat, sehingga cocok untuk set data berskala kecil.

TairVector juga mendukung beberapa metrik jarak, termasuk Jarak Euclidean, inner product, jarak Cosine, dan jarak Jaccard. Dibandingkan dengan layanan pengambilan vektor tradisional, TairVector menawarkan keunggulan berikut:

  • Menyimpan semua data di memori dan mendukung pembaruan indeks secara real-time untuk meminimalkan latensi baca dan tulis.

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

  • Berfungsi sebagai layanan siap pakai. Anda dapat langsung menggunakannya setelah menyediakannya sebagai Layanan Alibaba Cloud. Arsitekturnya sederhana dan efisien, tanpa ketergantungan komponen yang kompleks.

  • Mendukung pencarian hibrida yang menggabungkan pencarian vektor dan pencarian teks penuh.

  • Memungkinkan Anda membuat indeks terbalik untuk data skalar seperti atribut tag dan melakukan pencarian k tetangga terdekat (KNN). Selama pengambilan, TairVector terlebih dahulu menyaring set data berdasarkan atribut skalar, lalu melakukan pencarian KNN pada hasil yang telah disaring.

Catatan rilis

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

  2. Tair 6.2.2.0 dirilis pada 22 November 2022. Rilis ini menambahkan dukungan untuk metrik jarak Jaccard dan meningkatkan perintah TVS.GETINDEX untuk melaporkan penggunaan memori per indeks menggunakan parameter index_data_size dan attribute_data_size.

  3. Tair 6.2.3.0 dirilis pada 26 Desember 2022. Rilis ini menambahkan dukungan untuk modus proxy kluster, memperkenalkan tipe data vektor FLOAT16, serta menambahkan perintah TVS.MINDEXKNNSEARCH dan TVS.MINDEXMKNNSEARCH.

  4. Tair 6.2.8.2 dirilis pada 4 Juli 2023. Rilis ini menambahkan dukungan untuk jarak Cosine dan garbage collection otomatis untuk indeks HNSW.

  5. Tair 23.8.0.0 dirilis pada 3 Agustus 2023. Rilis ini menambahkan perintah seperti TVS.HEXPIREAT dan TVS.HPEXPIREAT untuk mengatur waktu hidup (TTL) pada level kunci dalam indeks. Perintah TVS.GETDISTANCE juga ditambahkan untuk melakukan kueri tetangga terdekat vektor pada kunci tertentu. Kemampuan pencarian teks penuh ditingkatkan dengan memperbarui perintah seperti TVS.CREATEINDEX dan TVS.KNNSEARCH, memungkinkan pencarian hibrida yang menggabungkan pencarian vektor dan pencarian teks penuh.

  6. Tair 24.5.1.0 dirilis pada 6 Juni 2024. Rilis ini menambahkan perintah TVS.KNNSEARCHFIELD dan TVS.MINDEXKNNSEARCHFIELD untuk mengembalikan informasi atribut tag selama kueri tetangga terdekat.

  7. Versi 24.7.0.0, dirilis pada 22 Juli 2024, menambahkan dukungan untuk indeks HNSW pada vektor jarang.

Praktik terbaik

Prasyarat

Instans menggunakan media penyimpanan optimasi memori, yang kompatibel dengan Redis 6.0 dan versi lebih baru.

Catatan

Instans berbasis DRAM yang menjalankan Redis 5.0 tidak dapat ditingkatkan ke Redis 6.0. Untuk menggunakan instans berbasis DRAM yang kompatibel dengan Redis 6.0, buat instans baru.

Peringatan

  • Anda mengelola data TairVector pada instans Tair.

  • TairVector tidak mendukung hashtag Redis untuk mengontrol distribusi kunci atau alokasi slot dalam indeks.

  • TairVector tidak mendukung fitur seperti MOVE.

  • Jika bisnis Anda memerlukan persistensi data yang tinggi, aktifkan mode semi-sinkron.

Perintah yang didukung

Tabel 1. Perintah TairVector

Jenis

Perintah

Sintaks

Deskripsi

Operasi metadata indeks

TVS.CREATEINDEX

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

Buat indeks vektor dan tentukan algoritma pengindeksan, kueri, serta rumus jarak. Objek ini hanya dapat dihapus menggunakan perintah TVS.DELINDEX.

TVS.GETINDEX

TVS.GETINDEX index_name

Kueri indeks vektor tertentu dan ambil metadata-nya.

TVS.DELINDEX

TVS.DELINDEX index_name

Hapus indeks vektor tertentu beserta semua datanya.

TVS.SCANINDEX

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

Pindai indeks vektor dalam instans Tair yang memenuhi kriteria tertentu.

Operasi data vektor

TVS.HSET

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

Menyisipkan catatan data (key) ke dalam indeks vektor. Jika catatan sudah ada, perbarui dan timpa catatan yang ada.

TVS.HGETALL

TVS.HGETALL index_name key

Kueri semua catatan data yang terkait dengan key dalam indeks vektor tertentu.

TVS.HMGET

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

Kueri nilai yang terkait dengan key dalam attribute_key dari indeks vektor tertentu.

TVS.DEL

TVS.DEL index_name key [key ...]

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

TVS.HDEL

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

Menghapus attribute_key tertentu beserta nilainya dari catatan data (key) dalam indeks vektor.

TVS.SCAN

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

Pindai catatan data (key) dalam indeks vektor tertentu yang memenuhi kriteria tertentu.

TVS.HINCRBY

TVS.HINCRBY index_name key attribute_key num

Dalam indeks vektor tertentu, tambahkan nilai key tertentu dengan bilangan bulat num.

TVS.HINCRBYFLOAT

TVS.HINCRBYFLOAT index_name key attribute_key num

Dalam indeks vektor tertentu, tambahkan nilai key tertentu dengan bilangan titik mengambang num.

TVS.HPEXPIREAT

TVS.HPEXPIREAT index_name key milliseconds-timestamp

Dalam indeks vektor tertentu, atur waktu kedaluwarsa absolut untuk key tertentu, akurat hingga milidetik.

TVS.HPEXPIRE

TVS.HPEXPIRE index_name key milliseconds-timestamp

Dalam indeks vektor tertentu, atur waktu kedaluwarsa relatif untuk key tertentu, akurat hingga milidetik.

TVS.HEXPIREAT

TVS.HEXPIREAT index_name key timestamp

Dalam indeks vektor tertentu, atur waktu kedaluwarsa absolut untuk key tertentu, akurat hingga detik.

TVS.HEXPIRE

TVS.HEXPIRE index_name key timestamp

Dalam indeks vektor tertentu, atur waktu kedaluwarsa relatif untuk key tertentu, akurat hingga detik.

TVS.HPTTL

TVS.HPTTL index_name key

Dalam indeks vektor tertentu, periksa sisa waktu hidup (TTL) dari key tertentu, akurat hingga milidetik.

TVS.HTTL

TVS.HTTL index_name key

Dalam indeks vektor tertentu, periksa sisa TTL dari key tertentu, akurat hingga detik.

TVS.HPEXPIRETIME

TVS.HPEXPIRETIME index_name key

Dalam indeks vektor tertentu, periksa waktu kedaluwarsa absolut dari key tertentu, akurat hingga milidetik.

TVS.HEXPIRETIME

TVS.HEXPIRETIME index_name key

Dalam indeks vektor tertentu, periksa waktu kedaluwarsa absolut dari key tertentu, akurat hingga detik.

Kueri tetangga terdekat vektor

TVS.KNNSEARCH

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

Lakukan kueri tetangga terdekat pada vektor (VECTOR) tertentu dalam indeks vektor tertentu. Kueri mengembalikan hingga topN hasil.

TVS.KNNSEARCHFIELD

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

Lakukan kueri tetangga terdekat pada vektor (VECTOR) tertentu dalam indeks vektor tertentu. Logika pencarian identik dengan TVS.KNNSEARCH. Selain itu, perintah ini mengembalikan atribut tag bersama hasilnya.

TVS.GETDISTANCE

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

Lakukan kueri tetangga terdekat vektor pada daftar kunci tertentu dalam indeks vektor tertentu.

TVS.MKNNSEARCH

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

Lakukan kueri tetangga terdekat pada beberapa vektor (VECTOR) dalam indeks vektor tertentu.

TVS.MINDEXKNNSEARCH

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

Lakukan kueri tetangga terdekat pada vektor (VECTOR) 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]

Lakukan kueri tetangga terdekat pada vektor (VECTOR) tertentu di beberapa indeks vektor. Atribut tag dikembalikan bersama hasilnya.

TVS.MINDEXMKNNSEARCH

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

Lakukan kueri tetangga terdekat pada beberapa vektor (VECTOR) di beberapa indeks vektor.

Umum

DEL

DEL key [key ...]

Gunakan perintah Redis DEL native untuk menghapus satu atau beberapa entri data TairVector.

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 tanda kurung siku bersifat opsional. Parameter yang tidak diapit tanda kurung harus ditentukan.

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

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

TVS.CREATEINDEX

Kategori

Deskripsi

Sintaks

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

kompleksitas waktu

O(1)

Deskripsi perintah

Buat indeks vektor dan tentukan algoritma pengindeksan, kueri, serta rumus jarak. Objek ini hanya dapat dihapus menggunakan perintah TVS.DELINDEX.

Opsi

  • index_name: nama indeks vektor.

  • dims: dimensi vektor. Vektor yang dimasukkan ke dalam indeks harus memiliki dimensi yang sama. Nilai valid: 1 hingga 32768.

  • algorithm: algoritma yang digunakan untuk membuat dan mengkueri indeks. Nilai valid:

    • FLAT: menggunakan algoritma Flat Search untuk mencari vektor tanpa membuat indeks. Algoritma ini cocok untuk set data yang berisi kurang dari 10.000 catatan.

    • HNSW: menggunakan graf HNSW untuk membuat indeks dan menggunakan algoritma HNSW untuk mencari vektor. Algoritma ini cocok untuk set data besar.

  • distance_method: metode yang digunakan untuk menghitung jarak antara dua vektor. Nilai valid:

    • L2: jarak Euclidean kuadrat.

    • IP: inner product. Hitung jarak antara dua vektor menggunakan rumus berikut: 1 - Inner product dari dua vektor.

    • COSINE: jarak cosine. Hitung jarak antara dua vektor menggunakan rumus berikut: 1 - Cosine dari sudut antara dua vektor. Metode ini mengonversi vektor tertulis menjadi vektor satuan (normalisasi L2). Oleh karena itu, hasil vektor mungkin berbeda dari nilai vektor aslinya.

    • JACCARD: jarak Jaccard. Hitung jarak Jaccard antara dua vektor menggunakan rumus berikut: 1 - Koefisien Jaccard. Jika Anda mengatur parameter ini ke JACCARD, Anda harus mengatur parameter data_type ke BINARY.

  • algo_param_key dan alog_param_value:

    • data_type: tipe data vektor (padat). Nilai valid:

      • FLOAT32 (default): bilangan titik mengambang presisi tunggal empat byte.

      • FLOAT16: bilangan titik mengambang presisi setengah 2-byte (standar IEEE 754-2008). Tipe data ini menghemat ruang penyimpanan vektor tetapi mengakibatkan kehilangan sebagian presisi. Rentang nilai untuk FLOAT16 adalah [-65519, 65519].

      • BINARY: vektor biner yang hanya berisi 0 dan 1 dan hanya mendukung rumus jarak Jaccard.

    • Parameter khusus untuk indeks HNSW:

      • ef_construct: panjang array dinamis jika Anda menggunakan algoritma HNSW untuk membuat indeks vektor. Nilai default: 100. Nilai valid: 1 hingga 1000. Nilai yang lebih besar menunjukkan akurasi pencarian tetangga terdekat aproksimasi (ANN) yang lebih tinggi. Hal ini meningkatkan overhead kinerja.

      • M: jumlah maksimum tetangga keluar pada setiap lapisan dalam struktur indeks graf. Nilai default: 16. Nilai valid: 1 hingga 100. Nilai yang lebih besar menunjukkan akurasi pencarian ANN yang lebih tinggi. Hal ini meningkatkan overhead kinerja.

      • auto_gc: menentukan apakah akan mengaktifkan pembersihan ruang memori otomatis untuk indeks. Nilai valid: false (default, menonaktifkan auto GC) dan true (mengaktifkan auto GC). Fitur ini memerlukan versi minor 6.2.8.2 atau lebih baru. Indeks HNSW menggunakan penghapusan bertanda untuk menghapus vektor. Setelah Anda mengaktifkan fitur ini, indeks secara otomatis membersihkan ruang memori, yang membantu mengurangi penggunaan memori. Namun, fitur ini memengaruhi kinerja indeks kueri tetangga terdekat. Kami menyarankan agar Anda mengaktifkan fitur ini hanya dalam skenario di mana penggunaan memori sangat penting dan penurunan kinerja kueri tetangga terdekat dapat diterima.

    • Parameter khusus untuk HybridIndex (indeks hibrida):

      • Untuk membuat indeks terbalik untuk bidang tag tertentu, tentukan nama bidang dan tipe data yang sesuai terlebih dahulu.

        Gunakan sintaks inverted_index_<field_name> int|long|float|double|string untuk membuat indeks terbalik untuk bidang field_name. Tipe data yang didukung adalah INT, LONG, FLOAT, DOUBLE, dan STRING. field_name dan kata kunci 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: Menentukan algoritma indeks teks penuh.

        • bm25: algoritma Okapi BM25, cocok untuk pencarian teks penuh.

          • Ketika Anda menggunakan perintah TVS.HSET untuk menyisipkan data nanti, atur attribute_key ke kata kunci TEXT (case-sensitive). Attribute_value akan secara otomatis diindeks untuk pencarian teks penuh.

          • Anda dapat mengirimkan teks mentah ke layanan vektor Tair untuk membangun indeks.

        • vector: algoritma vektor, cocok untuk vektor jarang.

          Anda harus mengencode teks mentah menjadi vektor jarang dan memberikannya sebagai input ke algoritma vektor. Tentukan input dalam format "[[2,0.221],[42,09688],...]". Bidang Key menentukan indeks dan harus bertipe uint32_t. Bidang Value menentukan profil frekuensi leksikal dan harus bertipe FLOAT.

      • Jika Anda mengatur parameter lexical_algorithm ke bm25, Anda dapat mengonfigurasi parameter tambahan berikut:

        • analyzer: alat analisis yang digunakan untuk segmentasi teks. Nilai valid: jieba (default) dan ik_smart.

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

        • b: dampak panjang dokumen terhadap skor relevansi dalam algoritma BM25. Nilai valid: 0 hingga 1. Nilai default: 0,75.

      • Jika Anda mengatur parameter lexical_algorithm ke vector, Anda dapat mengonfigurasi parameter tambahan berikut:

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

        • lexical_hnsw_m: ketika lexical_use_hnsw diatur ke 1, parameter ini merepresentasikan parameter M khusus indeks HNSW. Untuk detailnya, lihat Parameter khusus untuk indeks HNSW.

        • lexical_hnsw_ef_construct: ketika lexical_use_hnsw diatur ke 1, parameter ini merepresentasikan parameter ef_construct khusus indeks HNSW. Untuk detailnya, lihat Parameter khusus untuk indeks HNSW.

      • hybrid_ratio: bobot default yang diberikan untuk pencarian vektor selama kueri. Nilai valid: 0 hingga 1. Nilai default: 0,5. Nilainya harus bertipe FLOAT. Bobot yang diberikan untuk pencarian teks penuh sama dengan 1 dikurangi nilai hybrid_ratio.

Output

  • Jika operasi berhasil, OK dikembalikan.

  • Jika tidak, pesan error dikembalikan.

Contoh

Contoh perintah:

# Buat indeks vektor yang menggunakan algoritma HNSW dan rumus jarak Jaccard untuk vektor dengan dimensi 2 dan tipe data BINARY.
TVS.CREATEINDEX index_name0 2 HNSW JACCARD data_type BINARY

# Buat indeks vektor yang menggunakan algoritma HNSW dan rumus jarak Euclidean untuk vektor dengan dimensi 2 dan tipe data FLOAT32.
TVS.CREATEINDEX index_name1 2 HNSW L2 

# Buat indeks vektor yang menggunakan algoritma Flat Search dan rumus inner product untuk vektor dengan dimensi 2 dan tipe data FLOAT32.
TVS.CREATEINDEX index_name2 2 FLAT IP 

# Buat indeks vektor yang menggunakan algoritma Flat Search dan rumus jarak Jaccard untuk vektor dengan dimensi 2 dan tipe data BINARY.
TVS.CREATEINDEX index_name3 2 FLAT JACCARD data_type BINARY

# Buat indeks vektor yang menggunakan algoritma HNSW, algoritma pencarian teks penuh BM25, dan rumus inner product untuk vektor dengan dimensi 2 dan tipe data FLOAT32. Tentukan bidang productname dengan tipe STRING sebagai indeks terbalik.
TVS.CREATEINDEX index_name4 2 HNSW IP lexical_algorithm bm25 inverted_index_productname string

# Buat vektor jarang yang menggunakan algoritma HNSW dan rumus inner product untuk vektor dengan dimensi 2.
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

Kategori

Deskripsi

Sintaks

TVS.GETINDEX index_name

Kompleksitas waktu

O(1)

Deskripsi perintah

Kueri indeks vektor tertentu dan ambil metadata-nya.

Opsi

  • index_name: nama indeks vektor.

Nilai kembali

  • Jika operasi berhasil, metadata indeks vektor dikembalikan.

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

  • Jika tidak, pesan error dikembalikan.

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 (dengan parameter algorithm diatur ke HNSW):

TVS.GETINDEX my_index

Contoh output:

 1) "lexical_term_count"   // Jumlah token dalam indeks teks penuh. Tipe data: INT.
 2) "0"
 3) "lexical_record_count" // Jumlah dokumen dalam indeks teks penuh. Tipe data: INT.
 4) "0"
 5) "lexical_algorithm"    // Algoritma pengindeksan teks penuh.
 6) "bm25"
 7) "auto_gc"              // Menunjukkan apakah pembersihan ruang memori otomatis diaktifkan untuk indeks. Parameter ini hanya muncul jika Anda menggunakan algoritma HNSW.
 8) "1"
 9) "dimension"            // Dimensi vektor.
10) "2"
11) "attribute_data_size"  // Memori yang digunakan oleh informasi atribut. Satuan: byte.
12) "3720"
13) "distance_method"      // Metode yang digunakan untuk menghitung jarak antara dua vektor.
14) "L2"
15) "data_type"            // Tipe data vektor.
16) "FLOAT32"
17) "algorithm"            // Algoritma pengindeksan.
18) "HNSW"
19) "index_data_size"      // Memori yang digunakan oleh vektor. Satuan: byte.
20) "105128040"
21) "M"                    // Jumlah maksimum tetangga keluar pada setiap lapisan dalam struktur indeks graf. Parameter ini hanya muncul jika Anda menggunakan algoritma HNSW.
22) "16"
23) "data_count"           // Jumlah catatan pengguna.
24) "3"
25) "current_record_count" // Jumlah total vektor.
26) "3"
27) "ef_construct"         // Panjang array dinamis saat Anda menggunakan algoritma HNSW.
28) "100"
29) "inverted_index_productname" // Informasi indeks terbalik: nama bidang, tipe data, dan ukuran.
30) "field: productname, type: string, size: 1"
31) "delete_record_count"  // Jumlah vektor yang dijadwalkan untuk dihapus.
32) "0"

TVS.DELINDEX

Kategori

Deskripsi

Sintaks

TVS.DELINDEX index_name

Kompleksitas waktu

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

Deskripsi perintah

Hapus indeks vektor tertentu beserta semua datanya.

Opsi

  • index_name: nama indeks vektor.

Nilai kembali

  • Jika operasi berhasil, indeks vektor dihapus dan nilai 1 dikembalikan.

  • Jika indeks vektor tertentu tidak ada, nilai 0 dikembalikan.

  • Jika tidak, pesan error dikembalikan.

Contoh

Contoh perintah:

TVS.DELINDEX index_name0

Contoh output:

 (integer) 1

TVS.SCANINDEX

Kategori

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

Pindai indeks vektor dalam instans Tair yang memenuhi kriteria tertentu.

opsi

  • cursor: kursor yang digunakan dalam pemindaian ini. Posisi kursor dimulai dari 0.

  • pattern: ekspresi yang digunakan untuk pencocokan pola.

  • count: jumlah kunci yang dipindai. Nilai default: 10. Sistem mungkin tidak selalu mengembalikan jumlah kunci yang tepat sesuai parameter count dalam setiap iterasi.

Output

  • Jika operasi berhasil, array dikembalikan.

    • Elemen 1 array: kursor yang digunakan untuk pemindaian berikutnya. Jika pemindaian selesai, nilai 0 dikembalikan.

    • Elemen kedua: nama indeks vektor (index_name) untuk kueri saat ini.

  • Jika tidak, pesan error dikembalikan.

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 (termasuk parameter pattern):

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

Contoh output:

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

TVS.HSET

Kategori

Deskripsi

Sintaks

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

Kompleksitas waktu

Jika penyisipan atau pembaruan data tidak melibatkan pembuatan atau pembaruan nilai vektor, kompleksitas waktunya O(1). Jika tidak, kompleksitas waktunya O(log(N)), di mana N adalah jumlah kunci dalam indeks vektor.

Deskripsi perintah

Menyisipkan catatan data (key) ke dalam indeks vektor. Jika catatan sudah ada, perbarui dan timpa catatan yang ada.

opsi

  • index_name: nama indeks vektor.

  • key: pengidentifikasi kunci utama catatan. Anda dapat menghapus objek menggunakan perintah TVS.DEL.

  • attribute_key dan attribute_value: nilai catatan, ditentukan dalam format pasangan kunci-nilai.

    • Untuk menyisipkan vektor, atur attribute_key ke VECTOR (case-sensitive) dan attribute_value ke string vektor yang memiliki dimensi yang sama dengan indeks vektor yang ditentukan oleh parameter dims. Contoh: VECTOR [1,2]. Anda hanya dapat menulis satu vektor ke kunci. Jika Anda menulis vektor lebih dari sekali, data yang ada akan ditimpa.

    • Untuk menyisipkan data teks ke HybridIndex yang memiliki parameter yang diperlukan, atur attribute_key ke TEXT (case-sensitive) dan attribute_value ke data teks seperti "TairVector adalah layanan database vektor internal Tair" atau data vektor seperti "[[2,0.221],[42,09688],...]".

    • Untuk menyisipkan atribut lain, tentukan parameter khusus yang terkait dengan atribut tersebut. Contoh: create_time 1663637425 dan location Hangzhou.

Output

  • Jika operasi berhasil, jumlah kunci yang disisipkan dikembalikan. Jika bidang yang ada diperbarui, nilai 0 dikembalikan.

  • Jika tidak, pesan error dikembalikan.

Contoh

Contoh perintah:

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

Contoh output:

(integer) 3

TVS.HGETALL

Kategori

Deskripsi

Sintaks

TVS.HGETALL index_name key

Kompleksitas waktu

O(1)

Deskripsi perintah

Kueri semua catatan data yang terkait dengan key dalam indeks vektor tertentu.

opsi

  • index_name: nama indeks vektor.

  • key: pengidentifikasi kunci utama catatan.

Output

  • Jika operasi berhasil, semua catatan data dari key dikembalikan.

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

  • Jika tidak, pesan error dikembalikan.

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

Kategori

Deskripsi

Sintaks

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

Kompleksitas waktu

O(1)

Deskripsi perintah

Kueri nilai yang terkait dengan key dalam attribute_key dari indeks vektor tertentu.

opsi

  • index_name: nama indeks vektor.

  • key: pengidentifikasi kunci utama catatan ini.

  • attribute_key: kunci atribut yang dikelola. Anda dapat menentukan beberapa kunci. Untuk mengkueri vektor tertentu, atur attribute_key ke VECTOR (case-sensitive). Untuk mengkueri data teks mentah dalam indeks teks penuh, atur attribute_key ke TEXT (case-sensitive).

Mengembalikan

  • Jika operasi berhasil, nilai dari attribute_key dikembalikan.

  • Jika tidak, pesan error dikembalikan.

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 internal Tair"

TVS.DEL

Kategori

Deskripsi

Sintaks

TVS.DEL index_name key [key ...]

Kompleksitas waktu

O(1)

Deskripsi perintah

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

Opsi

  • index_name: nama indeks vektor.

  • key: pengidentifikasi kunci utama catatan ini. Anda dapat menentukan beberapa nilai.

nilai kembali

  • Jika operasi berhasil, key tertentu dihapus dan jumlah key yang dihapus dikembalikan.

  • Jika indeks vektor tertentu tidak ada, nilai 0 dikembalikan.

  • Jika tidak, pesan error dikembalikan.

Contoh

Contoh perintah:

TVS.DEL index_name0 keyV

Contoh output:

 (integer) 1

TVS.HDEL

Kategori

Deskripsi

Sintaks

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

Kompleksitas waktu

O(1)

Deskripsi perintah

Menghapus attribute_key tertentu beserta nilainya dari catatan data (key) dalam indeks vektor.

Opsi

  • index_name: nama indeks vektor.

  • key: pengidentifikasi kunci utama catatan. Anda dapat menentukan beberapa nilai.

  • attribute_key: kunci atribut yang dikelola. Anda dapat menentukan beberapa kunci. Untuk menghapus data vektor, atur attribute_key ke VECTOR (case-sensitive). Untuk menghapus data indeks penuh, atur attribute_key ke TEXT (case-sensitive).

(nilai kembali)

  • Jika operasi berhasil, atribut tertentu dihapus dan jumlah attribute_key yang dihapus dikembalikan.

  • Jika indeks vektor tertentu tidak ada, nilai 0 dikembalikan.

  • Jika tidak, pesan error dikembalikan.

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 kunci dalam indeks vektor.

Deskripsi perintah

Pindai catatan data (key) dalam indeks vektor tertentu yang memenuhi kriteria tertentu.

Opsi

  • index_name: nama indeks vektor.

  • cursor: kursor yang digunakan dalam pemindaian ini. Posisi kursor dimulai dari 0.

  • Parameter pattern menentukan pencocokan pola.

  • count: jumlah kunci yang dipindai. Nilai default: 10. Sistem mungkin tidak selalu mengembalikan jumlah kunci yang tepat sesuai parameter count dalam setiap iterasi.

  • filter_string: kondisi filter.

    • Operator seperti + - * / < > ! = ( ) && || didukung. Anda tidak dapat membandingkan ukuran string. Jika Anda ingin memasukkan string, Anda harus menambahkan karakter escape (\). Contoh: create_time > 1663637425 && location == \"Hangzhou\".

    • Anda harus menambahkan spasi di kedua sisi operator. Contoh: "creation_time > 1735".

    • Format flag == true yang menggunakan tipe data BOOLEAN tidak didukung. Anda dapat menggunakan format flag == \"true\", yang mengirimkan nilai boolean sebagai string.

  • vector: vektor kueri. Parameter ini harus digunakan bersama parameter max_distance.

  • max_distance: jarak maksimum yang diizinkan. Parameter ini harus digunakan bersama parameter vector. Setelah Anda menentukan kedua parameter ini, array yang dikembalikan mencakup semua vektor yang berada dalam jarak yang ditentukan oleh parameter max_distance dari vector kueri.

Output

  • Jika operasi berhasil, array dikembalikan.

    • Elemen 1 array: kursor yang digunakan untuk pemindaian berikutnya. Jika pemindaian selesai, nilai 0 dikembalikan.

    • Elemen 2 array: nama key yang dipindai.

  • Jika tidak, pesan error dikembalikan.

Contoh

Contoh perintah:

TVS.SCAN index_name0 0

Contoh output:

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

Dalam indeks vektor tertentu, tambahkan nilai key tertentu dengan bilangan bulat num.

Jika attribute_key tertentu tidak ada, secara otomatis dibuat dan diberi nilai yang ditentukan. Jika attribute_key sudah ada, catatan yang sesuai diperbarui dan nilai awal ditimpa.

Opsi

  • index_name: nama indeks vektor.

  • key: pengidentifikasi kunci utama catatan.

  • attribute_key: kunci atribut yang dikelola.

  • num: nilai bilangan bulat yang digunakan untuk menambah nilai attribute_key.

Output

  • Operasi berhasil. Nilai setelah menambahkan num dikembalikan.

  • Jika tidak, pesan error dikembalikan.

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

Dalam indeks vektor tertentu, tambahkan nilai key tertentu dengan bilangan titik mengambang num.

Jika `attribute_key` tertentu tidak ada, sistem secara otomatis membuatnya dan memberikan nilai tersebut. Jika catatan sudah ada, sistem memperbaruinya dan menimpa nilai awal.

opsi

  • index_name: nama indeks vektor.

  • key: pengidentifikasi kunci utama catatan ini.

  • attribute_key: kunci atribut yang dikelola.

  • num: bilangan titik mengambang yang digunakan untuk menambah nilai attribute_key.

Output

  • Operasi berhasil. Nilainya adalah hasil penambahan num.

  • Jika tidak, pesan error dikembalikan.

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

Dalam indeks vektor tertentu, atur waktu kedaluwarsa absolut untuk key tertentu, akurat hingga milidetik.

Opsi

  • index_name: nama indeks vektor.

  • key: pengidentifikasi kunci utama catatan.

  • milliseconds-timestamp: stempel waktu UNIX akurat hingga milidetik. Jika stempel waktu yang ditentukan lebih awal dari waktu saat ini, key langsung kedaluwarsa.

nilai kembali

  • 1: key ada dan telah berhasil diatur.

  • Jika key tidak ada, nilai 0 dikembalikan.

  • Jika tidak, pesan error dikembalikan.

Contoh

Contoh perintah:

TVS.HPEXPIREAT index_name0 key1 16914619090000

Contoh output:

(integer) 1

TVS.HPEXPIRE

Kategori

Deskripsi

Sintaks

TVS.HPEXPIRE index_name key milliseconds-timestamp

Kompleksitas waktu

O(1)

Deskripsi perintah

Dalam indeks vektor tertentu, atur waktu kedaluwarsa relatif untuk key tertentu, akurat hingga milidetik.

opsi

  • index_name: nama indeks vektor.

  • key: pengidentifikasi kunci utama catatan.

  • milliseconds-timestamp: waktu kedaluwarsa relatif. Satuan: milidetik.

(nilai kembali)

  • Jika key ada dan berhasil dikonfigurasi, nilai 1 dikembalikan.

  • Jika key tidak ada, nilai 0 dikembalikan.

  • Jika tidak, pesan error dikembalikan.

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

Dalam indeks vektor tertentu, atur waktu kedaluwarsa absolut untuk key tertentu, akurat hingga detik.

opsi

  • index_name: nama indeks vektor.

  • key: pengidentifikasi kunci utama catatan.

  • timestamp: stempel waktu UNIX akurat hingga detik. Jika stempel waktu yang ditentukan lebih awal dari waktu saat ini, key langsung kedaluwarsa.

Mengembalikan

  • Jika key ada dan berhasil dikonfigurasi, nilai 1 dikembalikan.

  • Jika key tidak ada, nilai 0 dikembalikan.

  • Jika tidak, pesan error dikembalikan.

Contoh

Contoh perintah:

TVS.HPEXPIREAT 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

Dalam indeks vektor tertentu, atur waktu kedaluwarsa relatif untuk key tertentu, akurat hingga detik.

opsi

  • index_name: nama indeks vektor.

  • key: pengidentifikasi kunci utama catatan.

  • timestamp: waktu kedaluwarsa relatif. Satuan: detik.

Nilai kembali

  • Jika key ada dan berhasil dikonfigurasi, nilai 1 dikembalikan.

  • Jika key tidak ada, nilai 0 dikembalikan.

  • Jika tidak, pesan error dikembalikan.

Contoh

Contoh perintah:

TVS.HPEXPIREAT index_name0 key2 100

Contoh output:

(integer) 1

TVS.HPTTL

Kategori

Deskripsi

Sintaks

TVS.HPTTL index_name key

Kompleksitas waktu

O(1)

Deskripsi perintah

Dalam indeks vektor tertentu, periksa sisa waktu hidup (TTL) dari key tertentu, akurat hingga milidetik.

Opsi

  • index_name: nama indeks vektor.

  • key: pengidentifikasi kunci utama catatan ini.

Output

  • Jika key ada dan memiliki TTL yang dikonfigurasi, sisa TTL dikembalikan. Satuan: milidetik.

  • Jika key ada tetapi tidak memiliki TTL yang dikonfigurasi, nilai -1 dikembalikan.

  • Jika key atau index_name tidak ada, nilai -2 dikembalikan.

  • Jika tidak, pesan error dikembalikan.

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

Dalam indeks vektor tertentu, periksa sisa TTL dari key tertentu, akurat hingga detik.

Opsi

  • index_name: nama indeks vektor.

  • key: pengidentifikasi kunci utama catatan.

Nilai kembali

  • Jika key ada dan memiliki TTL yang dikonfigurasi, sisa TTL dikembalikan. Satuan: detik.

  • Jika key ada tetapi tidak memiliki TTL yang dikonfigurasi, nilai -1 dikembalikan.

  • Jika key atau index_name tidak ada, nilai -2 dikembalikan.

  • Jika tidak, pesan error dikembalikan.

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

Dalam indeks vektor tertentu, periksa waktu kedaluwarsa absolut dari key tertentu, akurat hingga milidetik.

Opsi

  • index_name: nama indeks vektor.

  • key: pengidentifikasi kunci utama catatan.

Output

  • key ada dan memiliki waktu hidup (TTL) yang diatur ke waktu kedaluwarsa absolut, ditentukan sebagai stempel waktu Unix dalam milidetik.

  • Jika key ada tetapi tidak memiliki waktu kedaluwarsa absolut yang dikonfigurasi, nilai -1 dikembalikan.

  • Jika key atau index_name tidak ada, nilai -2 dikembalikan.

  • Jika tidak, pesan error dikembalikan.

Contoh

Contoh perintah:

TVS.HPEXPIRETIME index_name0 key2

Contoh output:

(integer) 1691473985764

TVS.HEXPIRETIME

Kategori

Deskripsi

Sintaks

TVS.HEXPIRETIME index_name key

Kompleksitas waktu

O(1)

Deskripsi perintah

Dalam indeks vektor tertentu, periksa waktu kedaluwarsa absolut dari key tertentu, akurat hingga detik.

Opsi

  • index_name: nama indeks vektor.

  • key: pengidentifikasi kunci utama catatan.

nilai kembali

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

  • Jika key ada tetapi tidak memiliki waktu kedaluwarsa absolut yang dikonfigurasi, nilai -1 dikembalikan.

  • Jika key atau index_name tidak ada, nilai -2 dikembalikan.

  • Jika tidak, pesan error dikembalikan.

Contoh

Contoh perintah:

TVS.HEXPIRETIME index_name0 key2

Contoh output:

(integer) 1691473985

TVS.KNNSEARCH

Kategori

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 kunci dalam indeks vektor.

Deskripsi perintah

Lakukan kueri tetangga terdekat pada vektor (VECTOR) tertentu dalam indeks vektor tertentu. Kueri mengembalikan hingga topN hasil.

Opsi

  • index_name: nama indeks vektor.

  • topN: jumlah vektor yang dikembalikan. Nilai valid: 1 hingga 10000.

  • vector: vektor yang digunakan untuk kueri tetangga terdekat. Jika Anda hanya ingin melakukan pencarian teks penuh menggunakan indeks hibrida, atur bidang ini ke "".

  • filter_string: kondisi filter.

    • Operator seperti +-*/<>!=()&&|| didukung. Anda tidak dapat membandingkan ukuran string. Jika Anda ingin memasukkan string, Anda harus menambahkan karakter escape (\). Contoh: "create_time > 1663637425 && location == \"Hangzhou\"".

    • Anda harus menambahkan spasi di kedua sisi operator. Contoh: "creation_time > 1735".

    • Format flag == true yang menggunakan tipe data BOOLEAN tidak didukung. Anda dapat menggunakan format flag == "true", yang mengirimkan nilai boolean sebagai string.

  • param_key dan param_value: parameter operasional untuk kueri. Nilai valid:

    • ef_search: panjang array dinamis saat mengkueri indeks. Nilai default: 100. Nilai valid: 1 hingga 1000. Nilai yang lebih besar menunjukkan akurasi pencarian yang lebih tinggi. Hal ini meningkatkan overhead kinerja. Parameter ini khusus untuk algoritma HNSW.

      sparse_ef_search: jika Anda menggunakan indeks HNSW untuk vektor jarang saat membuat indeks hibrida, gunakan parameter sparse_ef_search untuk parameter ef_search dari indeks HNSW.

    • MAX_DIST: jarak maksimum yang diizinkan. Parameter ini harus bertipe FLOAT. Jika jarak antara vektor yang ditentukan dan vektor tetangga melebihi nilai ini, kunci vektor tetangga difilter dan dikecualikan dari hasil pencarian.

    • TEXT: teks yang digunakan untuk pencarian hibrida. Anda dapat mengirimkan data teks atau vektor ke bidang ini. Jika Anda tidak menentukan bidang ini atau mengirimkan string kosong ("") ke bidang ini, hanya pencarian vektor yang dilakukan.

    • hybrid_ratio: bobot yang diberikan untuk pencarian vektor selama kueri. Secara default, bidang ini mengambil nilai yang ditentukan dalam parameter hybrid_ratio perintah TVS.CREATEINDEX. Nilai valid: 0 hingga 1. Nilainya harus bertipe FLOAT. Bobot yang diberikan untuk pencarian teks penuh dalam hasil kueri sama dengan 1 dikurangi nilai hybrid_ratio.

    • Secara default, sistem melakukan pencarian vektor k tetangga terdekat (KNN) diikuti oleh penyaringan skalar, dikenal sebagai kebijakan PostFilter.

      • vector_filter_count: jumlah maksimum catatan yang dapat difilter selama pencarian vektor. Nilai default: 10000.

        Dalam kebijakan PostFilter, jika jumlah catatan yang difilter dari hasil pencarian vektor melebihi nilai vector_filter_count tetapi operasi masih tidak dapat mengumpulkan data yang cukup untuk dikembalikan, sistem menghentikan pencarian vektor.

      • fulltext_filter_count: jumlah maksimum catatan yang dapat difilter selama pencarian teks penuh. Nilai default: 10000.

        Dalam kebijakan PostFilter, jika jumlah catatan yang difilter dari hasil pencarian teks penuh melebihi nilai fulltext_filter_count tetapi operasi masih tidak dapat mengumpulkan data yang cukup untuk dikembalikan, sistem menghentikan pencarian teks penuh.

      • Jika Anda ingin sistem melakukan penyaringan skalar berdasarkan indeks terbalik sebelum melakukan pencarian vektor KNN, gunakan kebijakan PreFilter dengan menambahkan parameter search_policy scala ke kueri.

        Parameter ivf_filter_count juga tersedia untuk menentukan jumlah maksimum catatan yang dapat difilter berdasarkan indeks terbalik. Nilai default adalah 10000. Dalam kebijakan PreFilter, jika jumlah catatan yang diproses selama tahap penyaringan skalar awal ini melebihi nilai ivf_filter_count, sistem secara otomatis menurunkan ke kebijakan PostFilter.

      Catatan

      Dalam kebanyakan kasus, pengaturan default parameter ini memastikan latensi yang dapat diterima sekaligus mempertahankan akurasi. Anda dapat menyesuaikannya per permintaan agar lebih sesuai dengan kasus penggunaan Anda. Namun, peningkatan nilainya dapat meningkatkan latensi kueri.

Output

  • Jika operasi berhasil, kunci vektor tetangga dikembalikan dalam urutan jarak yang meningkat terhadap vektor yang ditentukan.

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

  • Jika tidak, pesan error dikembalikan.

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 perintah 1:

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

Contoh output 1:

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

Contoh perintah 2:

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

Contoh output 2:

1) "key2"
2) "12.410000801086426"

TVS.KNNSEARCHFIELD

Kategori

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 kunci dalam indeks vektor.

Deskripsi perintah

Lakukan kueri tetangga terdekat pada vektor (VECTOR) tertentu dalam indeks vektor tertentu. Logika pencarian identik dengan TVS.KNNSEARCH. Selain itu, perintah ini mengembalikan atribut tag bersama hasilnya.

Opsi

  • index_name: nama indeks vektor.

  • topN: jumlah vektor yang dikembalikan. Nilai valid: 1 hingga 10000.

  • vector: vektor yang digunakan untuk kueri tetangga terdekat. Jika Anda hanya ingin melakukan pencarian teks penuh menggunakan indeks hibrida, atur bidang ini ke "".

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

  • field_name: nama tag. Jumlah tag harus sesuai dengan nilai field_count.

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

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

Output

  • Jika operasi berhasil, mengembalikan kunci tetangga terdekat dan jaraknya dari vektor target dalam urutan jarak yang meningkat, bersama dengan pasangan kunci-nilai atribut tag yang sesuai.

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

  • Jika tidak, 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.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

Kategori

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 kunci dalam indeks vektor.

Deskripsi perintah

Lakukan kueri tetangga terdekat vektor pada daftar kunci tertentu dalam indeks vektor tertentu.

opsi

  • index_name: nama indeks vektor.

  • vector: vektor yang digunakan untuk kueri tetangga terdekat.

  • key_count: jumlah kunci kandidat.

  • key: nama kunci. Jumlah kunci harus sesuai dengan nilai key_count.

  • TOPN: jumlah kunci yang dikembalikan. Nilai default: key_count. Nilai valid: 1 hingga key_count.

  • FILTER: kondisi filter.

    • Operator seperti +-*/<>!=()&&|| didukung. Anda tidak dapat membandingkan ukuran string. Jika Anda ingin memasukkan string, Anda harus menambahkan karakter escape (\). Contoh: create_time > 1663637425 && location == "Hangzhou".

    • Anda harus menambahkan spasi di kedua sisi operator. Contoh: "creation_time > 1735".

    • Format flag == true yang menggunakan tipe data BOOLEAN tidak didukung. Anda dapat menggunakan format flag == "true", yang mengirimkan nilai boolean sebagai string.

  • MAX_DIST: jarak maksimum yang diizinkan. Jika jarak antara vektor yang ditentukan dan vektor tetangga melebihi nilai ini, kunci vektor tetangga difilter dan dikecualikan dari hasil pencarian.

Nilai kembali

  • Jika operasi berhasil, jarak vektor tetangga ke setiap vektor yang ditentukan dikembalikan sesuai urutan kuncinya. Jika Anda menentukan parameter TOPN, kunci vektor tetangga dikembalikan dalam urutan jarak yang meningkat terhadap setiap vektor yang ditentukan.

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

  • Jika tidak, 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

Kategori

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 kunci dalam indeks vektor.

Deskripsi perintah

Lakukan kueri tetangga terdekat pada beberapa vektor (VECTOR) dalam indeks vektor tertentu.

Opsi

  • index_name: nama indeks vektor.

  • topN: jumlah vektor tetangga yang dikembalikan untuk setiap vektor. Nilai valid: 1 hingga 10000.

  • vector_count: jumlah vektor yang dikueri.

  • vector: vektor yang digunakan untuk kueri tetangga terdekat. Jika Anda hanya ingin melakukan pencarian teks penuh menggunakan indeks hibrida, atur bidang ini ke "".

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

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

Nilai Kembali

  • Jika operasi berhasil, beberapa array hasil kueri dikembalikan sesuai urutan kueri vektor. Setiap array berisi kunci vektor tetangga dalam urutan jarak yang meningkat terhadap setiap vektor yang ditentukan.

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

  • Jika tidak, pesan error dikembalikan.

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

Kategori

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 kunci dalam indeks vektor.

Deskripsi perintah

Lakukan kueri tetangga terdekat pada vektor (VECTOR) tertentu di beberapa indeks vektor.

Opsi

  • index_count: jumlah indeks vektor.

  • index_name: nama indeks vektor.

  • topN: jumlah vektor tetangga yang dikembalikan. Secara default, sistem mengkueri vektor tetangga topN dari vektor yang ditentukan di setiap indeks vektor, menggabungkan vektor yang diperoleh, dan mengembalikan vektor tetangga topN yang paling dekat dengan vektor yang ditentukan. Nilai valid: 1 hingga 10000.

  • vector: vektor yang digunakan untuk kueri tetangga terdekat.

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

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

Nilai kembali

  • Jika operasi berhasil, kunci vektor tetangga dan jaraknya ke vektor target dikembalikan dalam urutan jarak yang meningkat.

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

  • Jika tidak, pesan error dikembalikan.

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.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 kunci dalam indeks vektor.

Deskripsi perintah

Lakukan kueri tetangga terdekat pada vektor (VECTOR) tertentu di beberapa indeks vektor. Atribut tag dikembalikan bersama hasilnya.

opsi

  • index_count: jumlah indeks vektor.

  • index_name: nama indeks vektor.

  • topN: jumlah hasil yang dikembalikan. Secara default, sistem mengkueri hasil topN dari setiap indeks vektor, menggabungkan semua hasil kueri, dan mengembalikan hasil topN yang paling dekat. Nilai valid: 1 hingga 10000.

  • vector: vektor yang digunakan untuk kueri tetangga terdekat.

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

  • field_name: nama tag. Jumlah tag harus sesuai dengan nilai field_count.

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

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

Nilai kembali

  • Jika operasi berhasil, kunci vektor tetangga dikembalikan dalam urutan jarak yang meningkat terhadap vektor yang ditentukan. Atribut tag vektor juga dikembalikan dalam bentuk pasangan kunci-nilai.

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

  • Jika tidak, pesan error dikembalikan.

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

Kategori

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 adalah jumlah kunci dalam indeks vektor.

Deskripsi perintah

Lakukan kueri tetangga terdekat pada beberapa vektor (VECTOR) di beberapa indeks vektor.

Opsi

  • index_count: jumlah indeks vektor.

  • index_name: nama indeks vektor.

  • topN: jumlah hasil yang dikembalikan untuk setiap kueri vektor. Secara default, sistem mengkueri hasil topN dari setiap indeks vektor, menggabungkan semua hasil kueri, dan mengembalikan hasil topN yang paling dekat. Nilai valid: 1 hingga 10000.

  • vector_count: jumlah vektor yang dikueri.

  • vector: vektor yang digunakan untuk kueri tetangga terdekat.

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

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

Output

  • Jika operasi berhasil, array hasil dikembalikan untuk setiap kueri sesuai urutan pengiriman kueri. Setiap array berisi kunci setiap tetangga terdekat dan jaraknya ke vektor target, diurutkan dalam urutan jarak yang meningkat.

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

  • Jika tidak, pesan error dikembalikan.

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.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"