全部产品
Search
文档中心

Tair (Redis® OSS-Compatible):Vektor

更新时间:Nov 10, 2025

TairVector adalah struktur data tambahan yang dikembangkan oleh Tair untuk menyediakan penyimpanan dan pengambilan vektor real-time berperforma tinggi.

Ikhtisar

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: Membuat indeks vektor berbasis grafik dan mendukung penanganan ruang memori secara asinkron untuk menjaga akurasi kueri tetap tinggi sambil tetap dapat menangani pembaruan dan perubahan struktur indeks secara real-time.

  • Flat Search: Mengimplementasikan pencocokan tepat dan penyisipan data cepat. Algoritma ini cocok untuk dataset kecil.

Selain itu, TairVector mendukung beberapa rumus jarak, seperti Euclidean, produk dalam, Jarak Cosine, dan Jarak Jaccard. Dibandingkan dengan layanan pengambilan vektor tradisional, TairVector memiliki keunggulan sebagai berikut:

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

  • Menggunakan struktur data yang dioptimalkan di memori untuk memanfaatkan kapasitas penyimpanan dengan lebih baik.

  • Berfungsi sebagai struktur data siap pakai dalam arsitektur yang sederhana dan efisien tanpa modul atau dependensi 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 menyediakan fitur pencarian k tetangga terdekat (KNN). Selama pengambilan, TairVector pertama-tama memfilter dataset berdasarkan atribut skalar dan kemudian menerapkan algoritma KNN untuk pencarian vektor pada hasil yang difilter.

Catatan rilis

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

  2. Dengan dirilisnya Tair 6.2.2.0 pada 22 November 2022, dua penambahan penting pada TairVector adalah dukungan untuk rumus jarak Jaccard dan peningkatan pada perintah TVS.GETINDEX. Perintah ini dapat memberikan statistik penggunaan memori untuk setiap indeks dengan menggunakan parameter index_data_size dan attribute_data_size.

  3. Dengan dirilisnya Tair 6.2.3.0 pada 26 Desember 2022, penambahan penting pada TairVector termasuk dukungan untuk instans kluster dalam mode proxy, pengenalan tipe data FLOAT16, dan inklusi perintah TVS.MINDEXKNNSEARCH dan TVS.MINDEXMKNNSEARCH.

  4. Dengan dirilisnya Tair 6.2.8.2 pada 4 Juli 2023, dua penambahan penting pada TairVector adalah dukungan untuk rumus jarak Cosine dan penanganan ruang memori otomatis dari indeks HNSW.

  5. Dengan dirilisnya Tair 23.8.0.0 pada 3 Agustus 2023, TairVector memperkenalkan perintah seperti TVS.HEXPIREAT dan TVS.HPEXPIREAT yang memungkinkan Anda menetapkan waktu hidup (TTL) untuk kunci dalam indeks, serta memperkenalkan perintah TVS.GETDISTANCE untuk mendukung kueri tetangga terdekat vektor pada kunci tertentu. TairVector juga meningkatkan kemampuannya terkait pencarian teks penuh dengan memperbarui perintah seperti TVS.CREATEINDEX dan TVS.KNNSEARCH. Peningkatan ini memungkinkan Anda menggabungkan pencarian vektor dan pencarian teks penuh untuk melakukan pencarian hibrida.

  6. Dengan dirilisnya Tair 24.5.1.0 pada 6 Juni 2024, perintah TVS.KNNSEARCHFIELD dan TVS.MINDEXKNNSEARCHFIELD ditambahkan untuk mengizinkan informasi atribut tag dikembalikan selama kueri tetangga terdekat.

  7. Tair 24.7.0.0 dirilis pada 22 Juli 2024 dengan tambahan dukungan untuk indeks HNSW pada vektor jarang.

Praktik Terbaik

Persyaratan

Instans tersebut adalah instans Tair berbasis DRAM yang kompatibel dengan Redis 6.0 atau yang lebih baru. Untuk informasi lebih lanjut, lihat Instans berbasis DRAM.

Catatan

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

Peringatan

  • Data TairVector yang ingin Anda kelola disimpan pada instans Tair.

  • Tagar di Redis tidak dapat digunakan untuk mengontrol distribusi kunci dan alokasi slot untuk indeks TairVector.

  • TairVector tidak mendukung fitur seperti MOVE.

  • Jika bisnis Anda memerlukan persistensi data yang tinggi, kami sarankan untuk mengaktifkan mode replikasi semi-sinkron.

Daftar Perintah

Tabel 1. Perintah TairVector

Tipe

Perintah

Sintaks

Deskripsi

Operasi indeks vektor

TVS.CREATEINDEX

TVS.CREATEINDEX nama_indeks dimensi algoritma metode_jarak [kunci_param_algo nilai_param_algo] ...

Membuat indeks vektor berdasarkan rumus jarak dan algoritma yang ditentukan. Algoritma digunakan untuk membuat indeks dan menjalankan kueri. Indeks hanya dapat dihapus dengan menjalankan perintah TVS.DELINDEX.

TVS.GETINDEX

TVS.GETINDEX index_name

Mengecek indeks vektor yang ditentukan dan mengambil metadata dari indeks tersebut.

TVS.DELINDEX

TVS.DELINDEX index_name

Menghapus indeks vektor yang ditentukan dan semua data dari indeks tersebut.

TVS.SCANINDEX

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

Memindai indeks vektor yang memenuhi kriteria tertentu di dalam instans Tair.

Operasi data vektor

TVS.HSET

TVS.HSET nama_indeks kunci kunci_atribut nilai_atribut [kunci_atribut nilai_atribut] ...

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

TVS.HGETALL

TVS.HGETALL index_name key

Mengambil semua catatan data dari key yang ditentukan dalam indeks vektor yang ditentukan.

TVS.HMGET

TVS.HMGET nama_indeks kunci kunci_atribut [kunci_atribut ...]

Mengambil nilai dari kunci atribut di dalam kunci yang ditentukan dari indeks vektor yang ditentukan.

TVS.DEL

TVS.DEL index_name key [key ...]

Menghapus vektor yang ditentukan dari indeks vektor yang ditentukan dengan menggunakan parameter key.

TVS.HDEL

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

Menghapus attribute_key yang ditentukan dan 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]

Menscan keys yang memenuhi kriteria tertentu di dalam indeks vektor yang ditentukan.

TVS.HINCRBY

TVS.HINCRBY index_name key attribute_key num

Menambahkan nilai dari kunci atribut yang ditentukan untuk key yang ditentukan di dalam indeks vektor yang ditentukan dengan nilai integer tertentu (num).

TVS.HINCRBYFLOAT

TVS.HINCRBYFLOAT index_name key attribute_key num

Menambahkan nilai dari kunci atribut yang ditentukan untuk key yang ditentukan di dalam indeks vektor yang ditentukan dengan suatu bilangan titik mengambang (num) tertentu.

TVS.HPEXPIREAT

TVS.HPEXPIREAT nama_indeks kunci stempel-waktu-milidetik

Menentukan waktu kedaluwarsa absolut yang akurat hingga milidetik untuk key yang ditentukan dalam indeks vektor yang ditentukan.

TVS.HPEXPIRE

TVS.HPEXPIRE index_name key milliseconds-timestamp

Menentukan waktu kedaluwarsa relatif yang akurat hingga milidetik untuk key tertentu di dalam indeks vektor yang ditentukan.

TVS.HEXPIREAT

TVS.HEXPIREAT index_name key timestamp

Menentukan waktu kedaluwarsa absolut yang akurat hingga detik untuk key tertentu di dalam indeks vektor yang ditentukan.

TVS.HEXPIRE

TVS.HEXPIRE nama_indeks kunci timestamp

Menentukan waktu kedaluwarsa relatif yang akurat hingga detik untuk key tertentu di dalam indeks vektor yang ditentukan.

TVS.HPTTL

TVS.HPTTL nama_indeks kunci

Meminta TTL dari key yang ditentukan di dalam indeks vektor yang ditentukan, akurat hingga milidetik.

TVS.HTTL

TVS.HTTL nama_indeks kunci

Memeriksa TTL dari key yang ditentukan di dalam indeks vektor yang ditentukan, akurat hingga detik.

TVS.HPEXPIRETIME

TVS.HPEXPIRETIME nama_indeks kunci

Meminta waktu kedaluwarsa absolut dari key yang ditentukan dalam indeks vektor yang ditentukan, akurat hingga milidetik.

TVS.HEXPIRETIME

TVS.HEXPIRETIME index_name key

Memeriksa waktu kedaluwarsa absolut dari key yang ditentukan dalam indeks vektor yang ditentukan, akurat hingga detik.

Kueri tetangga terdekat vektor

TVS.KNNSEARCH

TVS.KNNSEARCH nama_indeks topN vektor [filter_string] [param_key param_value]

Mengkueri vektor tetangga terdekat dari vektor yang ditentukan dalam indeks vektor yang ditentukan. Hingga topN vektor dapat dikembalikan.

TVS.KNNSEARCHFIELD

TVS.KNNSEARCHFIELD nama_indeks topN vektor jumlah_field nama_field [nama_field ...] [filter_string] [param_key param_value]

Mengkueri vektor tetangga terdekat dari vektor yang ditentukan dalam indeks vektor yang ditentukan. Logika pencarian perintah ini sama dengan TVS.KNNSEARCH, dengan kemampuan tambahan untuk mengembalikan atribut tag bersama dengan hasil pencarian.

TVS.GETDISTANCE

TVS.GETDISTANCE nama_indeks vektor jumlah_kunci kunci [kunci, ...] [TOPN topN] [FILTER filter_string] [MAX_DIST max_distance]

Melakukan kueri tetangga terdekat vektor untuk kunci yang ditentukan dalam indeks vektor yang ditentukan.

TVS.MKNNSEARCH

TVS.MKNNSEARCH nama_indeks topN jumlah_vektor vektor [vektor ...] [filter_string] [param_key param_value]

Mengkueri vektor tetangga terdekat dari vektor yang ditentukan dalam indeks vektor yang ditentukan.

TVS.MINDEXKNNSEARCH

TVS.MINDEXKNNSEARCH jumlah_indeks nama_indeks [nama_indeks ...] topN vektor [filter_string] [param_key param_value]

Mengkueri vektor tetangga terdekat dari vektor yang ditentukan di beberapa indeks vektor.

TVS.MINDEXKNNSEARCHFIELD

TVS.MINDEXKNNSEARCHFIELD jumlah_indeks nama_indeks [nama_indeks ...] topN vektor jumlah_field nama_field [nama_field ...] [filter_string] [param_key param_value]

Mengkueri vektor tetangga terdekat dari vektor yang ditentukan di beberapa indeks vektor. Atribut tag dapat dikembalikan bersama dengan hasil pencarian.

TVS.MINDEXMKNNSEARCH

TVS.MINDEXMKNNSEARCH jumlah_indeks nama_indeks [nama_indeks ...] topN jumlah_vektor vektor [vektor ...] [filter_string] [param_key param_value]

Mengkueri vektor tetangga terdekat dari vektor yang ditentukan di beberapa indeks vektor.

Umum

DEL

DEL key [key ...]

Anda dapat menggunakan perintah DEL Redis asli untuk menghapus satu atau lebih item data TairVector.

Catatan

Daftar berikut menggambarkan konvensi sintaksis perintah yang digunakan dalam topik ini:

  • Kata kunci huruf besar: Menunjukkan kata kunci perintah.

  • Teks miring: Menunjukkan variabel.

  • [opsi]: Menunjukkan bahwa parameter yang diapit adalah opsional. Parameter yang tidak diapit oleh tanda kurung harus ditentukan.

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

  • ...: Menunjukkan bahwa parameter sebelum simbol ini dapat ditentukan berulang kali.

TVS.CREATEINDEX

Item

Description

Syntax

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

Kompleksitas waktu

O(1)

Deskripsi perintah

Membuat indeks vektor berdasarkan rumus jarak dan algoritma yang ditentukan. Algoritma digunakan untuk membuat indeks dan melakukan kueri. Indeks hanya dapat dihapus dengan menjalankan perintah TVS.DELINDEX.

Parameter

  • index_name: nama dari indeks vektor.

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

  • algorithm: algoritma yang digunakan untuk membuat indeks dan melakukan kueri. 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 antara dua vektor.

    • IP: produk dalam dari dua vektor. Anda dapat menghitung jarak antara dua vektor menggunakan rumus berikut: 1 - Produk dalam dari dua vektor.

    • COSINE: jarak kosinus antara dua vektor. Anda dapat menghitung jarak antara dua vektor menggunakan rumus berikut: 1 - Kosinus sudut antara dua vektor. Metode ini melibatkan konversi vektor tertulis menjadi vektor satuan, yang dikenal sebagai normalisasi L2. Oleh karena itu, hasil vektor mungkin tidak sama dengan nilai vektor aslinya.

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

  • algo_param_key dan alog_param_value:

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

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

      • FLOAT16: bilangan titik mengambang presisi setengah dua byte yang sesuai dengan standar IEEE 754-2008. Tipe data ini mengurangi penggunaan penyimpanan vektor, tetapi mengorbankan presisi data. Nilai valid: -65519 hingga 65519.

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

    • Parameter spesifik 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 (ANN) yang lebih tinggi. Ini menghasilkan overhead performa yang lebih tinggi.

      • M: jumlah maksimum tetangga keluar pada setiap lapisan dalam struktur indeks grafik. Nilai default: 16. Nilai valid: 1 hingga 100. Nilai yang lebih besar menunjukkan akurasi pencarian ANN yang lebih tinggi. Ini menghasilkan overhead performa yang lebih tinggi.

      • auto_gc: menentukan apakah akan mengaktifkan penjemputan ruang memori otomatis untuk indeks. Nilai valid: false (default, yang menunjukkan bahwa fitur dinonaktifkan) dan true (yang menunjukkan bahwa fitur diaktifkan). Parameter ini tersedia hanya untuk instans Tair yang versi minornya 6.2.8.2 atau lebih baru. Indeks HNSW menggunakan metode penghapusan bertanda untuk menghapus vektor. Setelah Anda mengaktifkan fitur ini, indeks secara otomatis mereklaim ruang memori, yang membantu mengurangi penggunaan memori. Namun, fitur ini dapat mempengaruhi performa indeks kueri tetangga terdekat. Oleh karena itu, kami sarankan Anda mengaktifkan fitur ini hanya dalam skenario di mana penggunaan memori menjadi perhatian, dan penurunan performa kueri tetangga terdekat dapat ditoleransi.

    • Parameter spesifik HybridIndex (indeks hibrida):

      • Jika Anda ingin membuat indeks terbalik untuk bidang tag tertentu, Anda harus menentukan nama bidang dan tipe data yang sesuai terlebih dahulu.

        Sintaks inverted_index_<field_name> int|long|float|double|string digunakan untuk membuat indeks terbalik untuk bidang yang ditentukan oleh field_name. Tipe data yang didukung adalah INT, LONG, FLOAT, DOUBLE, dan STRING. Nama bidang dan tipe data yang sesuai harus dalam huruf kecil.

        Sebagai contoh, jika Anda ingin membuat indeks terbalik pada bidang bernama productname dengan tipe STRING, sintaksnya adalah inverted_index_productname string.

      • lexical_algorithm: algoritma pencarian teks lengkap. Nilai valid:

        • bm25: algoritma Okapi BM25. Anda dapat memasukkan teks asli dan menggunakan layanan vektor Tair untuk membuat indeks.

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

          Anda harus mengkodekan teks asli menjadi vektor jarang dan menyediakannya sebagai input untuk algoritma vektor. Tentukan input dalam format "[[2,0.221],[42,09688],...]". Bidang Key menentukan indeks dan harus bertipe uint32_t, dan bidang Value menentukan profil frekuensi leksikal dan harus bertipe FLOAT.

      • Jika Anda menetapkan parameter lexical_algorithm ke bm25, Anda dapat mengonfigurasi parameter berikut lebih lanjut:

        • analyzer: alat analisis yang ingin Anda gunakan 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 menetapkan parameter lexical_algorithm ke vector, Anda dapat mengonfigurasi parameter berikut lebih lanjut:

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

        • lexical_hnsw_m: Ketika parameter lexical_use_hnsw disetel ke 1, parameter ini mewakili parameter M spesifik untuk indeks HNSW. Untuk informasi tentang tujuan dan deskripsi parameter M, lihat Parameter spesifik untuk indeks HNSW.

        • lexical_hnsw_ef_construct: Ketika parameter lexical_use_hnsw disetel ke 1, parameter ini mewakili parameter ef_construct spesifik untuk indeks HNSW. Untuk informasi tentang tujuan dan deskripsi parameter ef_construct, lihat Parameter spesifik 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 lengkap dalam hasil kueri sama dengan 1 - hybrid_ratio.

Output

  • Jika operasi berhasil, OK dikembalikan.

  • Jika tidak, pesan kesalahan dikembalikan.

Contoh

Perintah sampel:

# 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 produk dalam 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 lengkap BM25, dan rumus produk dalam 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 produk dalam 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

Output sampel:

OK

TVS.GETINDEX

Item

Description

Sintaksis

TVS.GETINDEX index_name

Kompleksitas waktu

O(1)

Deskripsi perintah

Mengecek indeks vektor yang ditentukan dan mengambil metadata dari indeks tersebut.

Parameter

  • index_name: nama indeks vektor.

Keluaran

  • Jika operasi berhasil, metadata indeks vektor dikembalikan.

  • Jika indeks vektor yang ditentukan tidak ada, (array kosong) dikembalikan.

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

Perintah contoh (dengan parameter algoritma diatur ke HNSW):

TVS.GETINDEX my_index

Keluaran contoh:

 1) "lexical_term_count"   // Jumlah token dalam indeks teks penuh. Nilainya bertipe INT.
 2) "0"
 3) "lexical_record_count" // Jumlah dokumen dalam indeks teks penuh. Nilainya bertipe 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 dikembalikan jika Anda menggunakan algoritma HNSW.
 8) "1"
 9) "dimension"            // Dimensi vektor.
10) "2"
11) "attribute_data_size"  // Jumlah 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"      // Jumlah memori yang digunakan oleh vektor. Satuan: byte.
20) "105128040"
21) "M"                    // Jumlah maksimum tetangga keluar pada setiap lapisan dalam struktur indeks grafik. Parameter ini dikembalikan jika Anda menggunakan algoritma HNSW.
22) "16"
23) "data_count"           // Jumlah catatan atau titik data yang terkait dengan pengguna.
24) "3"
25) "current_record_count" // Total jumlah vektor.
26) "3"
27) "ef_construct"         // Panjang array dinamis saat menggunakan algoritma HNSW.
28) "100"
29) "inverted_index_productname" // Informasi indeks terbalik, termasuk nama bidang, tipe data, dan kuantitas.
30) "field: productname, type: string, size: 1"
31) "delete_record_count"  // Jumlah vektor yang akan dihapus.
32) "0"

TVS.DELINDEX

Item

Description

Sintaks

TVS.DELINDEX index_name

Kompleksitas waktu

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

Deskripsi perintah

Menghapus indeks vektor yang ditentukan dan semua data dari indeks tersebut.

Opsi

  • index_name: nama dari indeks vektor.

Output

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

  • Jika indeks vektor yang ditentukan tidak ada, nilai 0 akan dikembalikan.

  • Selain itu, pesan kesalahan akan dikembalikan.

Contoh

Perintah contoh:

TVS.DELINDEX index_name0

Output contoh:

 (integer) 1

TVS.SCANINDEX

Item

Description

Sintaksis

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

Kompleksitas waktu

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

Deskripsi perintah

Memindai indeks vektor yang memenuhi kriteria tertentu dalam instans Tair.

Opsi

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

  • pattern: pola yang digunakan dalam pemindaian ini.

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

Output

  • Jika operasi berhasil, array dikembalikan:

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

    • Elemen 2 dari array: nama indeks vektor yang dipindai, yaitu nilai parameter index_name.

  • Jika tidak, pesan kesalahan dikembalikan.

Contoh

Perintah contoh:

TVS.SCANINDEX 0

Output contoh:

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

Output contoh (termasuk parameter pattern):

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

Output contoh:

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

TVS.HSET

Item

Description

Syntax

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

Kompleksitas waktu

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

Deskripsi perintah

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

Opsi

  • index_name: nama dari indeks vektor.

  • key: pengenal kunci utama dari vektor. Anda dapat menjalankan perintah TVS.DEL untuk menghapus kunci.

  • attribute_key dan attribute_value: Nilai dari catatan dalam format key-value.

    • Untuk menyisipkan vektor, atur attribute_key menjadi VECTOR dan attribute_value menjadi 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 sebuah kunci. Jika Anda menulis vektor lebih dari sekali, data yang ada akan ditimpa.

    • Untuk menyisipkan data teks ke dalam indeks hibrid yang memiliki parameter yang diperlukan, atur attribute_key menjadi TEXT dan attribute_value menjadi data teks seperti "TairVector adalah layanan database vektor internal dari Tair" atau data vektor seperti "[[2,0.221],[42,09688],...]".

    • Untuk menyisipkan atribut lainnya, tentukan parameter kustom terkait dengan atribut tersebut. Contoh: create_time 1663637425 dan location Hangzhou.

Keluaran

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

  • Sebaliknya, pesan kesalahan dikembalikan.

Contoh

Perintah contoh:

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

Keluaran contoh:

(integer) 3

TVS.HGETALL

Item

Description

Sintaksis

TVS.HGETALL index_name key

Kompleksitas waktu

O(1)

Deskripsi perintah

Mengambil semua catatan data dari key yang ditentukan di dalam indeks vektor yang ditentukan.

Parameter

  • index_name: nama dari indeks vektor.

  • key: pengenal kunci utama dari vektor.

Keluaran

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

  • Jika indeks vektor atau key yang ditentukan tidak ada, (array kosong) dikembalikan.

  • Selain itu, pesan kesalahan akan dikembalikan.

Contoh

Perintah contoh:

TVS.HGETALL index_name0 key0

Keluaran contoh:

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

TVS.HMGET

Item

Description

Sintaksis

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

Kompleksitas waktu

O(1)

Deskripsi perintah

Mengambil nilai dari kunci atribut di dalam key yang ditentukan pada indeks vektor yang ditentukan.

opsi

  • index_name: nama dari indeks vektor.

  • key: pengenal kunci utama dari vektor.

  • attribute_key: kunci atribut yang ingin Anda kelola. Anda dapat menentukan beberapa kunci. Untuk mengkueri vektor tertentu, atur attribute_key ke VECTOR. Untuk mengkueri data teks mentah dalam indeks teks penuh, atur attribute_key ke TEXT.

Keluaran

  • Jika operasi berhasil, nilai dari kunci atribut dikembalikan.

  • Jika tidak, pesan kesalahan akan dikembalikan.

Contoh

Perintah contoh:

TVS.HMGET index_name0 key0 create_time location VECTOR TEXT

Keluaran contoh:

1) "1800"
2) "[7,8]"
3) "TairVector adalah layanan database vektor internal dari Tair"

TVS.DEL

Item

Description

Sintaks

TVS.DEL index_name key [key ...]

Kompleksitas waktu

O(1)

Deskripsi perintah

Menghapus vektor yang ditentukan dari indeks vektor yang ditentukan menggunakan parameter key.

Parameter

  • index_name: nama dari indeks vektor.

  • key: pengenal kunci utama dari vektor. Anda dapat menentukan beberapa kunci.

Keluaran

  • Jika operasi berhasil, keys yang ditentukan dihapus dan jumlah keys yang dihapus dikembalikan.

  • Jika indeks vektor yang ditentukan tidak ada, nilai 0 dikembalikan.

  • Selain itu, pesan kesalahan akan dikembalikan.

Contoh

Perintah contoh:

TVS.DEL index_name0 keyV

Keluaran contoh:

 (integer) 1

TVS.HDEL

Item

Description

Sintaksis

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

Kompleksitas waktu

O(1)

Deskripsi perintah

Menghapus attribute_key yang ditentukan dan nilainya dari catatan data (key) dalam indeks vektor.

Parameter

  • index_name: nama dari indeks vektor.

  • key: pengenal kunci utama dari vektor. Anda dapat menentukan beberapa kunci.

  • attribute_key: kunci atribut yang ingin Anda kelola. Anda dapat menentukan beberapa kunci atribut. Untuk menghapus data vektor, atur attribute_key ke VECTOR. Untuk menghapus seluruh data indeks, atur attribute_key ke TEXT.

Output

  • Jika operasi berhasil, data yang ditentukan dihapus dan jumlah attribute_key yang dihapus dikembalikan.

  • Jika indeks vektor yang ditentukan tidak ada, nilai 0 dikembalikan.

  • Selain itu, pesan kesalahan dikembalikan.

Contoh

Perintah contoh:

TVS.HDEL index_name0 keyc VECTOR

Output contoh:

 (integer) 1

TVS.SCAN

Item

Description

Sintaksis

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

Deskripsi perintah

Menscan keys yang memenuhi kriteria tertentu dalam indeks vektor yang ditentukan.

Parameter

  • index_name: nama dari indeks vektor.

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

  • pattern: pola yang digunakan dalam scan ini.

  • count: jumlah kunci yang ingin Anda scan. Nilai default: 10. Sistem mungkin tidak selalu mengembalikan jumlah kunci yang tepat sesuai dengan 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 melewatkan nilai boolean sebagai string.

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

  • max_distance: jarak maksimum yang diizinkan. Parameter ini harus digunakan bersama dengan 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 vektor query vector.

Output

  • Jika operasi berhasil, sebuah array akan dikembalikan:

    • Elemen 1 dari array: cursor yang digunakan untuk scan berikutnya. Jika scan selesai, nilai 0 akan dikembalikan.

    • Elemen 2 dari array: nama dari keys yang telah discan.

  • Sebaliknya, pesan kesalahan akan dikembalikan.

Contoh

Perintah contoh:

TVS.SCAN index_name0 0

Output contoh:

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

TVS.HINCRBY

Item

Description

Sintaksis

TVS.HINCRBY index_name key attribute_key num

Kompleksitas waktu

O(1)

Deskripsi perintah

Menambahkan nilai dari kunci atribut yang ditentukan untuk key yang ditentukan di dalam indeks vektor yang ditentukan dengan nilai integer tertentu (num).

Jika kunci atribut yang ditentukan tidak ada, kunci atribut tersebut akan dibuat secara otomatis dan diberikan nilai num yang disediakan. Jika kunci atribut sudah ada, TairVector memperbarui nilai kunci atribut dengan menambahkan nilai num yang ditentukan ke nilai yang sudah ada.

Parameter

  • index_name: nama dari indeks vektor.

  • key: pengenal kunci utama dari vektor.

  • attribute_key: kunci atribut yang ingin Anda kelola.

  • num: nilai integer yang ingin Anda tambahkan ke nilai kunci atribut.

Keluaran

  • Jika operasi berhasil, nilai kunci atribut bertambah sebesar nilai num.

  • Jika tidak, pesan kesalahan akan dikembalikan.

Contoh

Perintah contoh:

TVS.HINCRBY index_name0 key0 tv01 20 

Keluaran contoh:

(integer) 20

TVS.HINCRBYFLOAT

Item

Description

Sintaksis

TVS.HINCRBYFLOAT index_name key attribute_key num

Kompleksitas waktu

O(1)

Deskripsi perintah

Menambahkan nilai dari kunci atribut yang ditentukan untuk key yang ditentukan di dalam indeks vektor yang ditentukan dengan bilangan titik mengambang (num) tertentu.

Jika kunci atribut yang ditentukan tidak ada, kunci atribut tersebut akan dibuat secara otomatis dan diberi nilai num yang disediakan. Jika kunci atribut sudah ada, TairVector memperbarui nilai kunci atribut dengan menambahkan nilai num yang ditentukan ke nilai yang sudah ada.

Opsi

  • index_name: nama dari indeks vektor.

  • key: pengenal kunci utama dari vektor.

  • attribute_key: kunci atribut yang ingin Anda kelola.

  • num: bilangan titik mengambang yang ingin Anda gunakan untuk menambah nilai kunci atribut.

Keluaran

  • Jika operasi berhasil, nilai kunci atribut bertambah sebesar nilai num.

  • Jika tidak, pesan kesalahan akan dikembalikan.

Contoh

Perintah contoh:

TVS.HINCRBYFLOAT index_name0 key0 tv02 9.34

Keluaran contoh:

"9.34"

TVS.HPEXPIREAT

Item

Description

Sintaksis

TVS.HPEXPIREAT index_name key milliseconds-timestamp

Kompleksitas waktu

O(1)

Deskripsi perintah

Menentukan waktu kedaluwarsa absolut yang akurat hingga milidetik untuk key tertentu di dalam indeks vektor yang ditentukan.

Parameter

  • index_name: nama dari indeks vektor.

  • key: pengenal kunci utama dari vektor.

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

Keluaran

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

  • Jika key yang ditentukan tidak ada, nilai 0 akan dikembalikan.

  • Selain itu, pesan kesalahan akan dikembalikan.

Contoh

Perintah contoh:

TVS.HPEXPIREAT index_name0 key1 16914619090000

Keluaran contoh:

(integer) 1

TVS.HPEXPIRE

Item

Description

Sintaksis

TVS.HPEXPIRE index_name key milliseconds-timestamp

Kompleksitas waktu

O(1)

Deskripsi perintah

Menentukan waktu kedaluwarsa relatif yang akurat hingga milidetik untuk key tertentu di dalam indeks vektor yang ditentukan.

Opsi

  • index_name: nama dari indeks vektor.

  • key: pengenal kunci utama dari vektor.

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

Keluaran

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

  • Jika key yang ditentukan tidak ada, nilai 0 akan dikembalikan.

  • Selain itu, pesan kesalahan akan dikembalikan.

Contoh

Perintah contoh:

TVS.HPEXPIRE index_name0 key1 1000

Keluaran contoh:

(integer) 1

TVS.HEXPIREAT

Item

Description

Sintaksis

TVS.HEXPIREAT index_name key timestamp

Kompleksitas waktu

O(1)

Deskripsi perintah

Menentukan waktu kedaluwarsa absolut yang akurat hingga detik untuk key yang ditentukan dalam indeks vektor yang ditentukan.

opsi

  • index_name: nama dari indeks vektor.

  • key: pengenal kunci utama dari vektor.

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

Keluaran

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

  • Jika key yang ditentukan tidak ada, nilai 0 akan dikembalikan.

  • Selain itu, pesan kesalahan akan dikembalikan.

Contoh

Perintah contoh:

TVS.HPEXPIREAT index_name0 key2 1691466981

Keluaran contoh:

(integer) 1

TVS.HEXPIRE

Item

Description

Sintaksis

TVS.HEXPIRE index_name key timestamp

Kompleksitas waktu

O(1)

Deskripsi perintah

Menentukan waktu kedaluwarsa relatif yang akurat hingga detik untuk key yang ditentukan di dalam indeks vektor yang ditentukan.

Opsi

  • index_name: nama dari indeks vektor.

  • key: pengenal kunci utama dari vektor.

  • timestamp: waktu kedaluwarsa relatif. Satuan: detik.

Keluaran

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

  • Jika key yang ditentukan tidak ada, nilai 0 akan dikembalikan.

  • Selain itu, pesan kesalahan akan dikembalikan.

Contoh

Perintah contoh:

TVS.HPEXPIREAT index_name0 key2 100

Keluaran contoh:

(integer) 1

TVS.HPTTL

Item

Description

Sintaksis

TVS.HPTTL index_name key

Kompleksitas waktu

O(1)

Deskripsi perintah

Memeriksa TTL dari key yang ditentukan dalam indeks vektor yang ditentukan, akurat hingga milidetik.

Parameter

  • index_name: nama dari indeks vektor.

  • key: pengenal kunci utama dari vektor.

Keluaran

  • Jika key yang ditentukan ada dan memiliki konfigurasi TTL, TTL akan dikembalikan. Satuan: milidetik.

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

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

  • Selain itu, pesan kesalahan akan dikembalikan.

Contoh

Perintah contoh:

TVS.HPTTL index_name0 key2

Keluaran contoh:

(integer) 65417

TVS.HTTL

Item

Description

Sintaksis

TVS.HTTL index_name key

Kompleksitas waktu

O(1)

Deskripsi perintah

Memeriksa TTL dari key yang ditentukan di dalam indeks vektor yang ditentukan, akurat hingga detik.

Parameter

  • index_name: nama dari indeks vektor.

  • key: pengenal kunci utama dari vektor.

Keluaran

  • Jika key yang ditentukan ada dan memiliki konfigurasi TTL, TTL akan dikembalikan. Satuan: detik.

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

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

  • Selain itu, pesan kesalahan akan dikembalikan.

Contoh

Perintah contoh:

TVS.HTTL index_name0 key2

Keluaran contoh:

(integer) 58

TVS.HPEXPIRETIME

Item

Description

Sintaksis

TVS.HPEXPIRETIME index_name key

Kompleksitas waktu

O(1)

Deskripsi perintah

Memeriksa waktu kedaluwarsa absolut dari key yang ditentukan di dalam indeks vektor yang ditentukan, akurat hingga milidetik.

Parameter

  • index_name: nama dari indeks vektor.

  • key: pengenal kunci utama dari vektor.

Keluaran

  • Jika key yang ditentukan ada dan memiliki waktu kedaluwarsa absolut yang dikonfigurasi, waktu kedaluwarsa absolut (stempel waktu UNIX) akan dikembalikan. Satuan: milidetik.

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

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

  • Selain itu, pesan kesalahan akan dikembalikan.

Contoh

Perintah contoh:

TVS.HPEXPIRETIME index_name0 key2

Keluaran contoh:

(integer) 1691473985764

TVS.HEXPIRETIME

Item

Description

Sintaksis

TVS.HEXPIRETIME index_name key

Kompleksitas waktu

O(1)

Deskripsi perintah

Memeriksa waktu kedaluwarsa absolut dari key yang ditentukan dalam indeks vektor yang ditentukan, akurat hingga detik.

Parameter

  • index_name: nama dari indeks vektor.

  • key: pengenal kunci utama dari vektor.

Keluaran

  • Jika key yang ditentukan ada dan memiliki waktu kedaluwarsa absolut yang dikonfigurasi, waktu kedaluwarsa absolut (Stempel waktu UNIX) akan dikembalikan. Satuan: detik.

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

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

  • Selain itu, pesan kesalahan akan dikembalikan.

Contoh

Perintah contoh:

TVS.HEXPIRETIME index_name0 key2

Keluaran contoh:

(integer) 1691473985

TVS.KNNSEARCH

Item

Description

Sintaksis

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

Kompleksitas waktu

  • HNSW algoritma: O(log(N)).

  • FLAT algoritma: O(N).

N menunjukkan jumlah kunci dalam indeks vektor.

Deskripsi perintah

Mengkueri vektor tetangga terdekat dari vektor yang ditentukan dalam indeks vektor yang ditentukan. Hingga topN vektor dapat dikembalikan.

Opsi

  • index_name: nama indeks vektor.

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

  • vector: vektor yang tetangganya ingin Anda kueri. Jika Anda hanya ingin melakukan pencarian teks penuh menggunakan metode pengindeksan hibrid, Anda dapat mengatur bidang vektor menjadi string kosong ("").

  • 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 melewatkan nilai boolean sebagai string.

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

    • ef_search: panjang array dinamis. Nilai default: 100. Nilai valid: 1 hingga 1000. Nilai yang lebih besar menunjukkan akurasi pencarian yang lebih tinggi. Ini menghasilkan overhead performa yang lebih tinggi. Parameter ini hanya tersedia jika Anda menggunakan algoritma HNSW.

      sparse_ef_search: Jika Anda menggunakan indeks HNSW untuk vektor jarang saat membuat indeks hibrid, gunakan parameter ef_search sebagai parameter sparse_ef_search untuk indeks HNSW.

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

    • TEXT: teks tempat Anda ingin melakukan pencarian hibrid. Anda dapat meneruskan teks atau data vektor ke bidang ini. Jika Anda tidak menentukan bidang ini atau jika Anda meneruskan string kosong ("") ke bidang ini, hanya pencarian vektor yang dilakukan.

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

    • Secara default, sistem melakukan pencarian vektor k tetangga terdekat (KNN) diikuti oleh penyaringan skalar, yang 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 cukup data 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 cukup data untuk dikembalikan, sistem menghentikan pencarian teks penuh.

      • Jika Anda ingin sistem melakukan penyaringan skalar berdasarkan indeks terbalik sebelum melakukan pencarian vektor KNN, Anda dapat menggunakan 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 defaultnya adalah 10000. Dalam kebijakan PreFilter, jika jumlah catatan yang diproses selama tahap penyaringan skalar awal ini melebihi nilai ivf_filter_count, sistem secara otomatis menurun ke kebijakan PostFilter.

      Catatan

      Dalam kebanyakan kasus, pengaturan default dari parameter sebelumnya dapat memastikan bahwa sistem beroperasi dengan latensi yang dapat diterima sambil mempertahankan akurasi. Anda dapat menyesuaikan parameter ini berdasarkan permintaan untuk lebih sesuai dengan kebutuhan spesifik dari kasus penggunaan Anda. Namun, meningkatkan nilai parameter sebelumnya dapat menyebabkan latensi kueri yang lebih tinggi.

Keluaran

  • Jika operasi berhasil, keys dari vektor tetangga dikembalikan dalam urutan menaik berdasarkan jarak mereka ke vektor yang ditentukan.

  • Jika indeks vektor yang ditentukan tidak ada, (array kosong) dikembalikan.

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

Perintah contoh 1:

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

Keluaran contoh 1:

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

Perintah contoh 2:

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

Keluaran contoh 2:

1) "key2"
2) "12.410000801086426"

TVS.KNNSEARCHFIELD

Item

Description

Sintaksis

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

Kompleksitas waktu

  • HNSW algoritma: O(log(N)).

  • FLAT algoritma: O(N).

N menunjukkan jumlah kunci dalam indeks vektor.

Deskripsi perintah

Mengeksekusi pencarian vektor tetangga terdekat dari vektor yang ditentukan di dalam indeks vektor yang ditentukan. Logika pencarian perintah ini sama dengan TVS.KNNSEARCH, dengan kemampuan tambahan untuk mengembalikan atribut tag bersamaan dengan hasil pencarian.

Parameter

  • index_name: nama indeks vektor.

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

  • vector: vektor yang tetangga terdekatnya ingin Anda tanyakan. Jika Anda hanya ingin melakukan pencarian teks penuh menggunakan metode pengindeksan hibrid, Anda dapat mengatur bidang vektor ke string kosong ("").

  • field_count: jumlah atribut tag yang akan dikembalikan. Jika Anda ingin mengembalikan semua tag, atur parameter field_count menjadi 0.

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

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

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

Output

  • Jika operasi berhasil, keys dari vektor tetangga dikembalikan dalam urutan menaik berdasarkan jarak mereka ke vektor yang ditentukan. Atribut tag dari vektor juga dikembalikan dalam bentuk pasangan kunci-nilai.

  • Jika indeks vektor yang ditentukan tidak ada, (array kosong) dikembalikan.

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

Perintah contoh:

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

Output contoh:

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

Description

Sintaks

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

Kompleksitas waktu

  • HNSW algoritma: O(log(N)).

  • FLAT algoritma: O(N).

N menunjukkan jumlah kunci dalam indeks vektor.

Deskripsi perintah

Menjalankan kueri tetangga terdekat untuk kunci yang ditentukan dalam indeks vektor yang ditentukan.

Opsi

  • index_name: nama indeks vektor.

  • vector: vektor yang tetangga terdekatnya ingin Anda kueri.

  • key_count: jumlah kunci yang ingin Anda kueri.

  • key: nama-nama kunci. Jumlah kunci harus sama dengan nilai dari key_count.

  • TOPN: jumlah kunci yang akan dikembalikan. Secara default, parameter ini diatur ke nilai dari key_count. Nilai valid: [1,nilai 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 melewatkan nilai boolean sebagai string.

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

Output

  • 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 menaik berdasarkan jaraknya ke setiap vektor yang ditentukan.

  • Jika indeks vektor yang ditentukan tidak ada, (array kosong) dikembalikan.

  • Selain itu, pesan kesalahan 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

Perintah contoh:

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

Output contoh:

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

TVS.MKNNSEARCH

Item

Description

Sintaksis

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

Kompleksitas waktu

  • HNSW algoritma: vector_count × O(log(N)).

  • FLAT algoritma: vector_count × O(N).

N menunjukkan jumlah kunci dalam indeks vektor.

Deskripsi perintah

Mengembalikan vektor tetangga terdekat dari vektor yang ditentukan dalam indeks vektor yang ditentukan.

Parameter

  • index_name: nama indeks vektor.

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

  • vector_count: jumlah vektor yang ditentukan.

  • vector: vektor yang tetangga terdekatnya ingin Anda cari. Jika Anda hanya ingin melakukan pencarian teks penuh menggunakan metode pengindeksan hibrid, Anda dapat mengatur bidang vektor ke string kosong ("").

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

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

Keluaran

  • Jika operasi berhasil, hasilnya dikembalikan dalam array. Setiap array berisi keys vektor tetangga dalam urutan menaik berdasarkan jarak mereka ke setiap vektor yang ditentukan.

  • Jika indeks vektor yang ditentukan tidak ada, (array kosong) dikembalikan.

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

Perintah contoh:

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

Keluaran contoh:

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

TVS.MINDEXKNNSEARCH

Item

Description

Sintaksis

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

Kompleksitas waktu

  • HNSW algoritma: index_count × O(log(N)).

  • FLAT algoritma: index_count × O(N).

N menunjukkan jumlah kunci dalam indeks vektor.

Deskripsi perintah

Mengkueri vektor tetangga terdekat dari vektor yang ditentukan di beberapa indeks vektor.

Opsi

  • index_count: jumlah indeks vektor.

  • index_name: nama-nama indeks vektor.

  • topN: Jumlah hasil yang akan dikembalikan. Nilai valid: 1 hingga 10.000. Secara default, perintah mengkueri topN hasil dari setiap indeks vektor, menggabungkan hasilnya, dan mengembalikan topN hasil terdekat.

  • vector: vektor yang tetangga terdekatnya ingin Anda kueri.

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

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

Output

  • Jika operasi berhasil, keys dari vektor tetangga dikembalikan dalam urutan menaik berdasarkan jaraknya ke vektor yang ditentukan.

  • Jika indeks vektor yang ditentukan tidak ada, (array kosong) dikembalikan.

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

Perintah contoh:

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

Output contoh:

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

TVS.MINDEXKNNSEARCHFIELD

Item

Description

Syntax

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

Kompleksitas waktu

  • HNSW algoritma: index_count × O(log(N)).

  • FLAT algoritma: index_count × O(N).

N menunjukkan jumlah kunci dalam indeks vektor.

Deskripsi perintah

Mengeksekusi kueri untuk mencari vektor tetangga terdekat dari vektor yang ditentukan di beberapa indeks vektor. Atribut tag dapat dikembalikan bersama dengan hasil pencarian.

Opsi

  • index_count: jumlah indeks vektor.

  • index_name: nama-nama indeks vektor.

  • topN: Jumlah hasil yang akan dikembalikan. Nilai valid: 1 hingga 10000. Secara default, sistem mengambil topN hasil dari setiap indeks vektor, menggabungkannya, dan mengembalikan topN hasil terdekat.

  • vector: vektor yang tetangga terdekatnya ingin Anda kueri.

  • field_count: jumlah atribut tag yang akan dikembalikan. Jika Anda ingin mengembalikan semua tag, atur parameter field_count menjadi 0.

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

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

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

Keluaran

  • Jika operasi berhasil, keys dari vektor tetangga dikembalikan dalam urutan menaik berdasarkan jaraknya ke vektor yang ditentukan. Atribut tag dari vektor juga dikembalikan dalam bentuk pasangan kunci-nilai.

  • Jika indeks vektor yang ditentukan tidak ada, (array kosong) dikembalikan.

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

Perintah contoh:

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

Keluaran contoh:

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

Description

Sintaksis

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

Kompleksitas waktu

  • HNSW algoritma: index_count × vector_count × O(log(N)).

  • FLAT algoritma: index_count × vector_count × O(N).

N menunjukkan jumlah kunci dalam indeks vektor.

Deskripsi perintah

Mengkueri vektor tetangga terdekat dari vektor yang ditentukan di beberapa indeks vektor.

Parameter

  • index_count: jumlah indeks vektor.

  • index_name: nama-nama indeks vektor.

  • topN: Jumlah vektor tetangga yang akan dikembalikan untuk setiap vektor. Nilai valid: 1 hingga 10.000. Secara default, sistem mengkueri topN hasil dari setiap indeks vektor, menggabungkan hasilnya, dan mengembalikan topN hasil terdekat.

  • vector_count: jumlah vektor yang ditentukan.

  • vector: vektor-vektor yang tetangga terdekatnya ingin Anda kueri.

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

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

Output

  • Jika operasi berhasil, hasilnya dikembalikan dalam array. Setiap array berisi keys dari vektor tetangga dalam urutan menaik berdasarkan jarak mereka ke setiap vektor yang ditentukan.

  • Jika indeks vektor yang ditentukan tidak ada, (array kosong) dikembalikan.

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

Perintah contoh:

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

Output contoh:

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