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 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
TairVector dirilis pada 13 Oktober 2022, bersamaan dengan instans Tair berbasis DRAM yang kompatibel dengan Redis 6.0.
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_sizedanattribute_data_size.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.
Tair 6.2.8.2 dirilis pada 4 Juli 2023. Rilis ini menambahkan dukungan untuk jarak Cosine dan garbage collection otomatis untuk indeks HNSW.
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.
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.
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.
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 |
| Buat indeks vektor dan tentukan algoritma pengindeksan, kueri, serta rumus jarak. Objek ini hanya dapat dihapus menggunakan perintah | |
| Kueri indeks vektor tertentu dan ambil metadata-nya. | ||
| Hapus indeks vektor tertentu beserta semua datanya. | ||
| Pindai indeks vektor dalam instans Tair yang memenuhi kriteria tertentu. | ||
Operasi data vektor |
| Menyisipkan catatan data (key) ke dalam indeks vektor. Jika catatan sudah ada, perbarui dan timpa catatan yang ada. | |
| Kueri semua catatan data yang terkait dengan key dalam indeks vektor tertentu. | ||
| Kueri nilai yang terkait dengan key dalam attribute_key dari indeks vektor tertentu. | ||
| Hapus catatan data tertentu (key) dari indeks vektor tertentu. | ||
| Menghapus attribute_key tertentu beserta nilainya dari catatan data (key) dalam indeks vektor. | ||
| Pindai catatan data (key) dalam indeks vektor tertentu yang memenuhi kriteria tertentu. | ||
| Dalam indeks vektor tertentu, tambahkan nilai key tertentu dengan bilangan bulat num. | ||
| Dalam indeks vektor tertentu, tambahkan nilai key tertentu dengan bilangan titik mengambang num. | ||
| Dalam indeks vektor tertentu, atur waktu kedaluwarsa absolut untuk key tertentu, akurat hingga milidetik. | ||
| Dalam indeks vektor tertentu, atur waktu kedaluwarsa relatif untuk key tertentu, akurat hingga milidetik. | ||
| Dalam indeks vektor tertentu, atur waktu kedaluwarsa absolut untuk key tertentu, akurat hingga detik. | ||
| Dalam indeks vektor tertentu, atur waktu kedaluwarsa relatif untuk key tertentu, akurat hingga detik. | ||
| Dalam indeks vektor tertentu, periksa sisa waktu hidup (TTL) dari key tertentu, akurat hingga milidetik. | ||
| Dalam indeks vektor tertentu, periksa sisa TTL dari key tertentu, akurat hingga detik. | ||
| Dalam indeks vektor tertentu, periksa waktu kedaluwarsa absolut dari key tertentu, akurat hingga milidetik. | ||
| Dalam indeks vektor tertentu, periksa waktu kedaluwarsa absolut dari key tertentu, akurat hingga detik. | ||
Kueri tetangga terdekat vektor |
| Lakukan kueri tetangga terdekat pada vektor (VECTOR) tertentu dalam indeks vektor tertentu. Kueri mengembalikan hingga topN hasil. | |
| 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. | ||
| Lakukan kueri tetangga terdekat vektor pada daftar kunci tertentu dalam indeks vektor tertentu. | ||
| Lakukan kueri tetangga terdekat pada beberapa vektor (VECTOR) dalam indeks vektor tertentu. | ||
| Lakukan kueri tetangga terdekat pada vektor (VECTOR) tertentu di beberapa indeks vektor. | ||
| Lakukan kueri tetangga terdekat pada vektor (VECTOR) tertentu di beberapa indeks vektor. Atribut tag dikembalikan bersama hasilnya. | ||
| Lakukan kueri tetangga terdekat pada beberapa vektor (VECTOR) di beberapa indeks vektor. | ||
Umum |
| Gunakan perintah Redis DEL native untuk menghapus satu atau beberapa entri data TairVector. |
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 |
|
kompleksitas waktu | O(1) |
Deskripsi perintah | Buat indeks vektor dan tentukan algoritma pengindeksan, kueri, serta rumus jarak. Objek ini hanya dapat dihapus menggunakan perintah |
Opsi |
|
Output |
|
Contoh | Contoh perintah: Contoh output: |
TVS.GETINDEX
Kategori | Deskripsi |
Sintaks |
|
Kompleksitas waktu | O(1) |
Deskripsi perintah | Kueri indeks vektor tertentu dan ambil metadata-nya. |
Opsi |
|
Nilai kembali |
|
Contoh | Jalankan perintah berikut terlebih dahulu: Contoh perintah (dengan parameter algorithm diatur ke HNSW): Contoh output: |
TVS.DELINDEX
Kategori | Deskripsi |
Sintaks |
|
Kompleksitas waktu | O(N), di mana N adalah jumlah kunci dalam indeks vektor. |
Deskripsi perintah | Hapus indeks vektor tertentu beserta semua datanya. |
Opsi |
|
Nilai kembali |
|
Contoh | Contoh perintah: Contoh output: |
TVS.SCANINDEX
Kategori | Deskripsi |
Sintaks |
|
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 |
|
Output |
|
Contoh | Contoh perintah: Contoh output: Contoh perintah (termasuk parameter pattern): Contoh output: |
TVS.HSET
Kategori | Deskripsi |
Sintaks |
|
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 |
|
Output |
|
Contoh | Contoh perintah: Contoh output: |
TVS.HGETALL
Kategori | Deskripsi |
Sintaks |
|
Kompleksitas waktu | O(1) |
Deskripsi perintah | Kueri semua catatan data yang terkait dengan key dalam indeks vektor tertentu. |
opsi |
|
Output |
|
Contoh | Contoh perintah: Contoh output: |
TVS.HMGET
Kategori | Deskripsi |
Sintaks |
|
Kompleksitas waktu | O(1) |
Deskripsi perintah | Kueri nilai yang terkait dengan key dalam attribute_key dari indeks vektor tertentu. |
opsi |
|
Mengembalikan |
|
Contoh | Contoh perintah: Contoh output: |
TVS.DEL
Kategori | Deskripsi |
Sintaks |
|
Kompleksitas waktu | O(1) |
Deskripsi perintah | Hapus catatan data tertentu (key) dari indeks vektor tertentu. |
Opsi |
|
nilai kembali |
|
Contoh | Contoh perintah: Contoh output: |
TVS.HDEL
Kategori | Deskripsi |
Sintaks |
|
Kompleksitas waktu | O(1) |
Deskripsi perintah | Menghapus attribute_key tertentu beserta nilainya dari catatan data (key) dalam indeks vektor. |
Opsi |
|
(nilai kembali) |
|
Contoh | Contoh perintah: Contoh output: |
TVS.SCAN
Kategori | Deskripsi |
Sintaks |
|
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 |
|
Output |
|
Contoh | Contoh perintah: Contoh output: |
TVS.HINCRBY
Kategori | Deskripsi |
Sintaks |
|
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 |
|
Output |
|
Contoh | Contoh perintah: Contoh output: |
TVS.HINCRBYFLOAT
Kategori | Deskripsi |
Sintaks |
|
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 |
|
Output |
|
Contoh | Contoh perintah: Contoh output: |
TVS.HPEXPIREAT
Kategori | Deskripsi |
Sintaks |
|
Kompleksitas waktu | O(1) |
Deskripsi perintah | Dalam indeks vektor tertentu, atur waktu kedaluwarsa absolut untuk key tertentu, akurat hingga milidetik. |
Opsi |
|
nilai kembali |
|
Contoh | Contoh perintah: Contoh output: |
TVS.HPEXPIRE
Kategori | Deskripsi |
Sintaks |
|
Kompleksitas waktu | O(1) |
Deskripsi perintah | Dalam indeks vektor tertentu, atur waktu kedaluwarsa relatif untuk key tertentu, akurat hingga milidetik. |
opsi |
|
(nilai kembali) |
|
Contoh | Contoh perintah: Contoh output: |
TVS.HEXPIREAT
Kategori | Deskripsi |
Sintaks |
|
Kompleksitas waktu | O(1) |
Deskripsi perintah | Dalam indeks vektor tertentu, atur waktu kedaluwarsa absolut untuk key tertentu, akurat hingga detik. |
opsi |
|
Mengembalikan |
|
Contoh | Contoh perintah: Contoh output: |
TVS.HEXPIRE
Kategori | Deskripsi |
Sintaks |
|
Kompleksitas waktu | O(1) |
Deskripsi perintah | Dalam indeks vektor tertentu, atur waktu kedaluwarsa relatif untuk key tertentu, akurat hingga detik. |
opsi |
|
Nilai kembali |
|
Contoh | Contoh perintah: Contoh output: |
TVS.HPTTL
Kategori | Deskripsi |
Sintaks |
|
Kompleksitas waktu | O(1) |
Deskripsi perintah | Dalam indeks vektor tertentu, periksa sisa waktu hidup (TTL) dari key tertentu, akurat hingga milidetik. |
Opsi |
|
Output |
|
Contoh | Contoh perintah: Contoh output: |
TVS.HTTL
Kategori | Deskripsi |
Sintaks |
|
Kompleksitas waktu | O(1) |
Deskripsi perintah | Dalam indeks vektor tertentu, periksa sisa TTL dari key tertentu, akurat hingga detik. |
Opsi |
|
Nilai kembali |
|
Contoh | Contoh perintah: Contoh output: |
TVS.HPEXPIRETIME
Kategori | Deskripsi |
Sintaks |
|
Kompleksitas waktu | O(1) |
Deskripsi perintah | Dalam indeks vektor tertentu, periksa waktu kedaluwarsa absolut dari key tertentu, akurat hingga milidetik. |
Opsi |
|
Output |
|
Contoh | Contoh perintah: Contoh output: |
TVS.HEXPIRETIME
Kategori | Deskripsi |
Sintaks |
|
Kompleksitas waktu | O(1) |
Deskripsi perintah | Dalam indeks vektor tertentu, periksa waktu kedaluwarsa absolut dari key tertentu, akurat hingga detik. |
Opsi |
|
nilai kembali |
|
Contoh | Contoh perintah: Contoh output: |
TVS.KNNSEARCH
Kategori | Deskripsi |
Sintaks |
|
Kompleksitas waktu |
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 |
|
Output |
|
Contoh | Jalankan perintah berikut terlebih dahulu: Contoh perintah 1: Contoh output 1: Contoh perintah 2: Contoh output 2: |
TVS.KNNSEARCHFIELD
Kategori | Deskripsi |
Sintaks |
|
Kompleksitas waktu |
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 |
|
Output |
|
Contoh | Jalankan perintah berikut terlebih dahulu: Contoh perintah: Contoh output: |
TVS.GETDISTANCE
Kategori | Deskripsi |
Sintaks |
|
Kompleksitas waktu |
N adalah jumlah kunci dalam indeks vektor. |
Deskripsi perintah | Lakukan kueri tetangga terdekat vektor pada daftar kunci tertentu dalam indeks vektor tertentu. |
opsi |
|
Nilai kembali |
|
Contoh | Jalankan perintah berikut terlebih dahulu: Contoh perintah: Contoh output: |
TVS.MKNNSEARCH
Kategori | Deskripsi |
Sintaks |
|
Kompleksitas waktu |
N adalah jumlah kunci dalam indeks vektor. |
Deskripsi perintah | Lakukan kueri tetangga terdekat pada beberapa vektor (VECTOR) dalam indeks vektor tertentu. |
Opsi |
|
Nilai Kembali |
|
Contoh | Jalankan perintah berikut terlebih dahulu: Contoh perintah: Contoh output: |
TVS.MINDEXKNNSEARCH
Kategori | Deskripsi |
Sintaks |
|
Kompleksitas waktu |
N adalah jumlah kunci dalam indeks vektor. |
Deskripsi perintah | Lakukan kueri tetangga terdekat pada vektor (VECTOR) tertentu di beberapa indeks vektor. |
Opsi |
|
Nilai kembali |
|
Contoh | Jalankan perintah berikut terlebih dahulu: Contoh perintah: Contoh output: |
TVS.MINDEXKNNSEARCHFIELD
Kategori | Deskripsi |
Sintaks |
|
Kompleksitas waktu |
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 |
|
Nilai kembali |
|
Contoh | Jalankan perintah berikut terlebih dahulu: Contoh perintah: Contoh output: |
TVS.MINDEXMKNNSEARCH
Kategori | Deskripsi |
Sintaks |
|
Kompleksitas waktu |
N adalah jumlah kunci dalam indeks vektor. |
Deskripsi perintah | Lakukan kueri tetangga terdekat pada beberapa vektor (VECTOR) di beberapa indeks vektor. |
Opsi |
|
Output |
|
Contoh | Jalankan perintah berikut terlebih dahulu: Contoh perintah: Contoh output: |