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 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
TairVector dirilis pada 13 Oktober 2022 bersama dengan instans Tair berbasis DRAM yang kompatibel dengan Redis 6.0.
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_sizedanattribute_data_size.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.
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.
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.
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.
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.
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 |
| 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 | |
| Mengecek indeks vektor yang ditentukan dan mengambil metadata dari indeks tersebut. | ||
| Menghapus indeks vektor yang ditentukan dan semua data dari indeks tersebut. | ||
| Memindai indeks vektor yang memenuhi kriteria tertentu di dalam instans Tair. | ||
Operasi data vektor |
| Menyisipkan catatan data (key) ke dalam indeks vektor. Jika catatan sudah ada, catatan yang ada akan ditimpa. | |
| Mengambil semua catatan data dari key yang ditentukan dalam indeks vektor yang ditentukan. | ||
| Mengambil nilai dari kunci atribut di dalam kunci yang ditentukan dari indeks vektor yang ditentukan. | ||
| Menghapus vektor yang ditentukan dari indeks vektor yang ditentukan dengan menggunakan parameter key. | ||
| Menghapus attribute_key yang ditentukan dan nilainya dari catatan data (key) dalam indeks vektor. | ||
| Menscan keys yang memenuhi kriteria tertentu di dalam indeks vektor yang ditentukan. | ||
| Menambahkan nilai dari kunci atribut yang ditentukan untuk key yang ditentukan di dalam indeks vektor yang ditentukan dengan nilai integer tertentu (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. | ||
| Menentukan waktu kedaluwarsa absolut yang akurat hingga milidetik untuk key yang ditentukan dalam indeks vektor yang ditentukan. | ||
| Menentukan waktu kedaluwarsa relatif yang akurat hingga milidetik untuk key tertentu di dalam indeks vektor yang ditentukan. | ||
| Menentukan waktu kedaluwarsa absolut yang akurat hingga detik untuk key tertentu di dalam indeks vektor yang ditentukan. | ||
| Menentukan waktu kedaluwarsa relatif yang akurat hingga detik untuk key tertentu di dalam indeks vektor yang ditentukan. | ||
| Meminta TTL dari key yang ditentukan di dalam indeks vektor yang ditentukan, akurat hingga milidetik. | ||
| Memeriksa TTL dari key yang ditentukan di dalam indeks vektor yang ditentukan, akurat hingga detik. | ||
| Meminta waktu kedaluwarsa absolut dari key yang ditentukan dalam indeks vektor yang ditentukan, akurat hingga milidetik. | ||
| Memeriksa waktu kedaluwarsa absolut dari key yang ditentukan dalam indeks vektor yang ditentukan, akurat hingga detik. | ||
Kueri tetangga terdekat vektor |
| Mengkueri vektor tetangga terdekat dari vektor yang ditentukan dalam indeks vektor yang ditentukan. Hingga topN vektor dapat dikembalikan. | |
| 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. | ||
| Melakukan kueri tetangga terdekat vektor untuk kunci yang ditentukan dalam indeks vektor yang ditentukan. | ||
| Mengkueri vektor tetangga terdekat dari vektor yang ditentukan dalam indeks vektor yang ditentukan. | ||
| Mengkueri vektor tetangga terdekat dari vektor yang ditentukan di beberapa indeks vektor. | ||
| Mengkueri vektor tetangga terdekat dari vektor yang ditentukan di beberapa indeks vektor. Atribut tag dapat dikembalikan bersama dengan hasil pencarian. | ||
| Mengkueri vektor tetangga terdekat dari vektor yang ditentukan di beberapa indeks vektor. | ||
Umum |
| Anda dapat menggunakan perintah DEL Redis asli untuk menghapus satu atau lebih item data TairVector. |
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 |
|
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 |
Parameter |
|
Output |
|
Contoh | Perintah sampel: Output sampel: |
TVS.GETINDEX
Item | Description |
Sintaksis |
|
Kompleksitas waktu | O(1) |
Deskripsi perintah | Mengecek indeks vektor yang ditentukan dan mengambil metadata dari indeks tersebut. |
Parameter |
|
Keluaran |
|
Contoh | Jalankan perintah berikut terlebih dahulu: Perintah contoh (dengan parameter algoritma diatur ke HNSW): Keluaran contoh: |
TVS.DELINDEX
Item | Description |
Sintaks |
|
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 |
|
Output |
|
Contoh | Perintah contoh: Output contoh: |
TVS.SCANINDEX
Item | Description |
Sintaksis |
|
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 |
|
Output |
|
Contoh | Perintah contoh: Output contoh: Output contoh (termasuk parameter pattern): Output contoh: |
TVS.HSET
Item | Description |
Syntax |
|
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 |
|
Keluaran |
|
Contoh | Perintah contoh: Keluaran contoh: |
TVS.HGETALL
Item | Description |
Sintaksis |
|
Kompleksitas waktu | O(1) |
Deskripsi perintah | Mengambil semua catatan data dari key yang ditentukan di dalam indeks vektor yang ditentukan. |
Parameter |
|
Keluaran |
|
Contoh | Perintah contoh: Keluaran contoh: |
TVS.HMGET
Item | Description |
Sintaksis |
|
Kompleksitas waktu | O(1) |
Deskripsi perintah | Mengambil nilai dari kunci atribut di dalam key yang ditentukan pada indeks vektor yang ditentukan. |
opsi |
|
Keluaran |
|
Contoh | Perintah contoh: Keluaran contoh: |
TVS.DEL
Item | Description |
Sintaks |
|
Kompleksitas waktu | O(1) |
Deskripsi perintah | Menghapus vektor yang ditentukan dari indeks vektor yang ditentukan menggunakan parameter key. |
Parameter |
|
Keluaran |
|
Contoh | Perintah contoh: Keluaran contoh: |
TVS.HDEL
Item | Description |
Sintaksis |
|
Kompleksitas waktu | O(1) |
Deskripsi perintah | Menghapus attribute_key yang ditentukan dan nilainya dari catatan data (key) dalam indeks vektor. |
Parameter |
|
Output |
|
Contoh | Perintah contoh: Output contoh: |
TVS.SCAN
Item | Description |
Sintaksis |
|
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 |
|
Output |
|
Contoh | Perintah contoh: Output contoh: |
TVS.HINCRBY
Item | Description |
Sintaksis |
|
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 |
|
Keluaran |
|
Contoh | Perintah contoh: Keluaran contoh: |
TVS.HINCRBYFLOAT
Item | Description |
Sintaksis |
|
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 |
|
Keluaran |
|
Contoh | Perintah contoh: Keluaran contoh: |
TVS.HPEXPIREAT
Item | Description |
Sintaksis |
|
Kompleksitas waktu | O(1) |
Deskripsi perintah | Menentukan waktu kedaluwarsa absolut yang akurat hingga milidetik untuk key tertentu di dalam indeks vektor yang ditentukan. |
Parameter |
|
Keluaran |
|
Contoh | Perintah contoh: Keluaran contoh: |
TVS.HPEXPIRE
Item | Description |
Sintaksis |
|
Kompleksitas waktu | O(1) |
Deskripsi perintah | Menentukan waktu kedaluwarsa relatif yang akurat hingga milidetik untuk key tertentu di dalam indeks vektor yang ditentukan. |
Opsi |
|
Keluaran |
|
Contoh | Perintah contoh: Keluaran contoh: |
TVS.HEXPIREAT
Item | Description |
Sintaksis |
|
Kompleksitas waktu | O(1) |
Deskripsi perintah | Menentukan waktu kedaluwarsa absolut yang akurat hingga detik untuk key yang ditentukan dalam indeks vektor yang ditentukan. |
opsi |
|
Keluaran |
|
Contoh | Perintah contoh: Keluaran contoh: |
TVS.HEXPIRE
Item | Description |
Sintaksis |
|
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 |
|
Keluaran |
|
Contoh | Perintah contoh: Keluaran contoh: |
TVS.HPTTL
Item | Description |
Sintaksis |
|
Kompleksitas waktu | O(1) |
Deskripsi perintah | Memeriksa TTL dari key yang ditentukan dalam indeks vektor yang ditentukan, akurat hingga milidetik. |
Parameter |
|
Keluaran |
|
Contoh | Perintah contoh: Keluaran contoh: |
TVS.HTTL
Item | Description |
Sintaksis |
|
Kompleksitas waktu | O(1) |
Deskripsi perintah | Memeriksa TTL dari key yang ditentukan di dalam indeks vektor yang ditentukan, akurat hingga detik. |
Parameter |
|
Keluaran |
|
Contoh | Perintah contoh: Keluaran contoh: |
TVS.HPEXPIRETIME
Item | Description |
Sintaksis |
|
Kompleksitas waktu | O(1) |
Deskripsi perintah | Memeriksa waktu kedaluwarsa absolut dari key yang ditentukan di dalam indeks vektor yang ditentukan, akurat hingga milidetik. |
Parameter |
|
Keluaran |
|
Contoh | Perintah contoh: Keluaran contoh: |
TVS.HEXPIRETIME
Item | Description |
Sintaksis |
|
Kompleksitas waktu | O(1) |
Deskripsi perintah | Memeriksa waktu kedaluwarsa absolut dari key yang ditentukan dalam indeks vektor yang ditentukan, akurat hingga detik. |
Parameter |
|
Keluaran |
|
Contoh | Perintah contoh: Keluaran contoh: |
TVS.KNNSEARCH
Item | Description |
Sintaksis |
|
Kompleksitas waktu |
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 |
|
Keluaran |
|
Contoh | Jalankan perintah berikut terlebih dahulu: Perintah contoh 1: Keluaran contoh 1: Perintah contoh 2: Keluaran contoh 2: |
TVS.KNNSEARCHFIELD
Item | Description |
Sintaksis |
|
Kompleksitas waktu |
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 |
|
Output |
|
Contoh | Jalankan perintah berikut terlebih dahulu: Perintah contoh: Output contoh: |
TVS.GETDISTANCE
Item | Description |
Sintaks |
|
Kompleksitas waktu |
N menunjukkan jumlah kunci dalam indeks vektor. |
Deskripsi perintah | Menjalankan kueri tetangga terdekat untuk kunci yang ditentukan dalam indeks vektor yang ditentukan. |
Opsi |
|
Output |
|
Contoh | Jalankan perintah berikut terlebih dahulu: Perintah contoh: Output contoh: |
TVS.MKNNSEARCH
Item | Description |
Sintaksis |
|
Kompleksitas waktu |
N menunjukkan jumlah kunci dalam indeks vektor. |
Deskripsi perintah | Mengembalikan vektor tetangga terdekat dari vektor yang ditentukan dalam indeks vektor yang ditentukan. |
Parameter |
|
Keluaran |
|
Contoh | Jalankan perintah berikut terlebih dahulu: Perintah contoh: Keluaran contoh: |
TVS.MINDEXKNNSEARCH
Item | Description |
Sintaksis |
|
Kompleksitas waktu |
N menunjukkan jumlah kunci dalam indeks vektor. |
Deskripsi perintah | Mengkueri vektor tetangga terdekat dari vektor yang ditentukan di beberapa indeks vektor. |
Opsi |
|
Output |
|
Contoh | Jalankan perintah berikut terlebih dahulu: Perintah contoh: Output contoh: |
TVS.MINDEXKNNSEARCHFIELD
Item | Description |
Syntax |
|
Kompleksitas waktu |
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 |
|
Keluaran |
|
Contoh | Jalankan perintah berikut terlebih dahulu: Perintah contoh: Keluaran contoh: |
TVS.MINDEXMKNNSEARCH
Item | Description |
Sintaksis |
|
Kompleksitas waktu |
N menunjukkan jumlah kunci dalam indeks vektor. |
Deskripsi perintah | Mengkueri vektor tetangga terdekat dari vektor yang ditentukan di beberapa indeks vektor. |
Parameter |
|
Output |
|
Contoh | Jalankan perintah berikut terlebih dahulu: Perintah contoh: Output contoh: |