Dokumen ini menjelaskan cara mengonfigurasi pengaturan umum dan Advanced configuration untuk indeks vektor saat membuat tabel guna memenuhi kebutuhan performa, biaya, dan real-time dari skenario bisnis Anda.
Parameter
Pada langkah ke-4 pembuatan tabel, Anda dapat mengonfigurasi pengaturan detail untuk bidang vektor di bagian Index Schema.
Dimensi vektor
-
Tujuan: Menentukan jumlah fitur dalam sebuah vektor. Nilai ini harus persis sesuai dengan dimensi output model embedding Anda.
-
Rekomendasi:
-
Pastikan konsistensi: Jika dimensi yang dikonfigurasi tidak sesuai dengan dimensi data vektor yang ditulis, pembuatan indeks akan gagal.
-
Dampak performa: Dimensi yang lebih tinggi memungkinkan vektor merepresentasikan lebih banyak informasi, tetapi juga meningkatkan penggunaan memori dan beban komputasi. Menggandakan dimensi kira-kira menggandakan penggunaan memori.
-
Jenis jarak
-
Tujuan: Menentukan metode perhitungan kemiripan antar vektor. Pemilihan jenis jarak yang tepat sangat penting untuk kualitas pengambilan (retrieval) dan bergantung pada karakteristik data serta skenario bisnis Anda.
-
Panduan pemilihan:
Distance type
Deskripsi skor
Cosine distance
Skor berkisar antara
[-1, 1], di mana skor yang lebih tinggi menunjukkan kemiripan yang lebih besar. Skor1berarti vektor identik, sedangkan-1berarti vektor tersebut mengarah ke arah yang berlawanan.Inner product distance
Skor yang lebih tinggi menunjukkan kemiripan yang lebih besar.
Squared Euclidean distance
Skor yang lebih rendah menunjukkan kemiripan yang lebih besar. Skor
0berarti vektor identik.
Algoritma indeks vektor
-
Tujuan: Memilih algoritma dasar untuk membangun indeks vektor. Algoritma yang berbeda menawarkan berbagai pertukaran antara kecepatan pembuatan indeks, penggunaan memori, performa kueri, dan recall.
-
Panduan pemilihan:
Algorithm
Deskripsi
Distance type
Skala data
Recall
Latensi
Penggunaan memori
Kasus penggunaan utama
FLAT
(sebelumnya Linear)
-
Skala vektor: Cocok untuk puluhan ribu vektor.
-
Skenario: Skenario yang memerlukan akurasi data sempurna (recall 100%).
Inner Product, Squared Euclidean, Cosine
Sangat kecil (< 10k)
Puluhan ribu
100% (Exact)
Sangat tinggi
Sangat rendah
Benchmarking; re-ranking eksak pada dataset yang sangat kecil.
HNSW
-
Skala vektor: Cocok untuk puluhan juta vektor.
-
Skenario: Opsi berkinerja-tinggi untuk kasus penggunaan dengan persyaratan ketat terhadap akurasi dan latensi rendah.
Inner Product, Squared Euclidean, Cosine
Menengah (10M+)
Puluhan juta
Sangat tinggi
Rendah
Sangat tinggi
Pengambilan online berkinerja-tinggi berbasis memori.
HNSW_RaBitQ
-
Skala vektor: Cocok untuk dataset skala miliaran.
-
Skenario: Ideal untuk dataset masif dengan batasan memori ketat di mana pertukaran akurasi dapat diterima.
Squared Euclidean
Besar (100M+)
Ratusan juta
Tinggi
Sangat rendah
Sangat rendah
Pengambilan ringan yang dioptimalkan dengan kuantisasi biner.
CagraHNSW
-
Skala vektor: Cocok untuk ratusan juta vektor.
-
Skenario: Mesin performa berbasis GPU untuk pengindeksan graf, sering digunakan dengan beberapa GPU untuk dataset berukuran ratusan juta.
Inner Product, Squared Euclidean
Besar (100M+)
Ratusan juta
Sangat tinggi
Sangat rendah (GPU)
Sangat tinggi
Pencarian dipercepat GPU untuk skenario throughput tinggi.
HNSW_SQ
(sebelumnya QGraph)
-
Skala vektor: Cocok untuk dataset skala miliaran.
-
Skenario: Untuk kasus penggunaan yang memerlukan performa kueri tinggi dan latensi rendah, di mana persyaratan akurasi kurang ketat.
Inner Product, Squared Euclidean, Cosine
Sangat besar (1B+)
Skala miliaran
Tinggi
Rendah
Tinggi
IVF_SQ8
-
Skala vektor: Cocok untuk ratusan juta vektor.
-
Skenario: Pendekatan tradisional seimbang ketika persyaratan akurasi dan latensi bersifat moderat.
Inner Product, Squared Euclidean, Cosine
Besar (~500M)
Skala 500 juta
Sedang hingga tinggi
Sedang
Rendah
Solusi klasik hemat biaya untuk dataset besar yang menggunakan kompresi vektor untuk mengurangi penggunaan memori. Ideal untuk menyeimbangkan biaya dan skala, terutama dengan tiering data cold/hot.
DiskANN
-
Skala vektor: Dirancang untuk skala maksimum, menangani dataset berisi satu miliar vektor atau lebih.
-
Skenario: Menggunakan disk lokal, sehingga cocok untuk skenario di mana latensi yang lebih tinggi dapat diterima dan penggunaan memori harus diminimalkan.
Inner Product, Squared Euclidean, Cosine
Masif (1B+)
Lebih dari satu miliar
Tinggi
Sedang hingga tinggi
Sangat rendah
Pencarian berbasis disk untuk dataset skala ultra-besar.
-
Real-time indexing
-
Tujuan: Saat diaktifkan, data yang ditulis secara inkremental diindeks dan menjadi dapat dicari dalam hitungan detik.
-
Cara kerja: Sistem pertama-tama membangun indeks sementara di memori untuk penulisan data real-time. Setelah indeks sementara ini mencapai ukuran tertentu, sistem menggabungkan datanya ke dalam indeks lengkap di disk.
-
Rekomendasi:
-
Aktifkan (
true): Direkomendasikan untuk layanan online yang memerlukan data agar dapat langsung dicari setelah ditulis. Opsi ini mengonsumsi sedikit tambahan resource memori dan CPU. -
Nonaktifkan (
false): Cocok untuk analitik offline atau data yang tidak sering diperbarui setelah impor penuh.
-
Advanced configuration
Linear build threshold
-
Tujuan: Ketika jumlah vektor dalam sebuah shard berada di bawah ambang batas ini, sistem melakukan pencarian brute-force menggunakan algoritma
FLAT, mengabaikan algoritma indeks vektor yang Anda pilih. -
Rekomendasi:
-
Default:
5000. Untuk dataset sebesar ini, pencarian brute-force sering kali berkinerja sama baik atau lebih baik daripada indeks kompleks karena overhead pembuatan indeks yang lebih rendah. -
Kapan menyesuaikan: Biasanya Anda tidak perlu mengubah nilai ini. Namun, jika Anda memiliki konkurensi kueri yang sangat tinggi dan volume data Anda mendekati ambang batas, Anda dapat menurunkan nilai ini untuk memaksa penggunaan indeks berkinerja tinggi seperti
HNSW. Hal ini dapat meningkatkan overhead pembuatan indeks.
-
Ignore invalid vector data
-
Tujuan: Mengontrol cara sistem menangani vektor tidak valid (misalnya, ketidaksesuaian dimensi atau nilai null) yang ditemui selama pembuatan indeks penuh atau inkremental.
-
Rekomendasi:
Opsi
Perilaku
Kasus penggunaan yang direkomendasikan
trueSistem melewatkan baris apa pun yang berisi vektor tidak valid, mencatat peringatan, dan melanjutkan tugas pembuatan indeks.
Pengembangan dan pengujian. Memungkinkan Anda melakukan debug dengan cepat karena mencegah beberapa catatan buruk menyebabkan seluruh tugas build gagal.
falseJika sistem menemukan vektor tidak valid apa pun, tugas pembuatan indeks langsung gagal dan mengembalikan error.
Lingkungan produksi. Menegakkan kualitas data dan mencegah kehilangan data diam-diam. Kami merekomendasikan menggunakan pengaturan ini dengan pipeline pembersihan data upstream yang andal.
Real-time indexing parameters
-
Tujuan: Saat real-time indexing diaktifkan, parameter ini menyempurnakan pemrosesan aliran data real-time.
-
Contoh parameter:
{"proxima.oswg.streamer.segment_size":2048} -
Penjelasan parameter:
proxima.oswg.streamer.segment_sizemengontrol jumlah catatan real-time yang terakumulasi di memori sebelum disimpan ke segmen kecil di memori. -
Rekomendasi penyetelan:
-
Skenario QPS tulis tinggi: Tingkatkan nilai ini (misalnya, menjadi
4096) untuk mengurangi jumlah segmen di memori dan menurunkan overhead manajemen indeks. Hal ini sedikit meningkatkan latensi tulis-ke-pencarian. -
Skenario QPS tulis rendah: Pertahankan nilai default
2048atau turunkan agar data yang baru ditulis lebih cepat dapat dicari.
-
Real-time retrieval parameters
-
Tujuan: Menyesuaikan secara dinamis perilaku pencarian algoritma indeks saat kueri untuk menyeimbangkan recall dan latensi. Kunci dan nilai untuk parameter ini bervariasi tergantung pada algoritma indeks vektor yang dipilih.
-
Deskripsi umum: Parameter ini biasanya mengontrol cakupan pencarian. Misalnya, dengan algoritma
HNSW, parameterefmengontrol jumlah node tetangga yang dilalui selama pencarian. Nilaiefyang lebih besar meningkatkan recall tetapi juga meningkatkan latensi kueri. -
Contoh konfigurasi (HNSW):
-
{"searcher_name":"HNSW", "ef":200} -
Nilai
efbiasanya berkisar antarak(jumlah hasil teratas yang akan dikembalikan) hingga4096; nilai awal yang baik adalah100, yang dapat Anda sesuaikan berdasarkan kebutuhan bisnis terhadap recall dan latensi.
-
Vector separator
-
Tujuan: Menentukan pemisah yang digunakan antara nilai dimensi dalam data vektor berformat string.
-
Contoh: Untuk data vektor
1.05,0.15,0.14, pemisahnya adalah koma (,), yang merupakan default sistem. Biasanya Anda tidak perlu mengubah pengaturan ini.
Kontrol Volume dan Perencanaan Sumber Daya
Volume tulis data vektor secara langsung memengaruhi konsumsi memori pemrosesan data dan performa kueri. Kendalikan kecepatan tulis dan alokasikan resource yang cukup untuk mencegah peningkatan latensi kueri akibat memori pemrosesan data yang tidak mencukupi.
Kontrol volume tulis
-
Batasi ukuran batch: Hindari menulis terlalu banyak dokumen dalam satu batch. Bagi data ke dalam batch yang lebih kecil berdasarkan dimensi vektor dan tipe instans Anda untuk mencegah lonjakan mendadak dalam penggunaan memori pemrosesan data.
-
Kontrol frekuensi tulis: Untuk skenario tulis frekuensi tinggi, pertimbangkan untuk mengurangi konkurensi tulis atau memperpanjang interval antar batch. Hal ini memberikan waktu yang cukup untuk pembuatan indeks dan penggabungan segmen.
-
Monitor memori pemrosesan data: Jika penggunaan memori pemrosesan data tetap tinggi setelah penulisan meskipun memori instans secara keseluruhan mencukupi, hal ini menunjukkan overhead memori tinggi dari pembuatan indeks atau penggabungan segmen. Dalam kasus ini, kurangi laju tulis dan tunggu operasi penggabungan selesai sebelum melanjutkan.
Penilaian dan penskalaan resource
Jika Anda mengalami kekurangan memori pemrosesan data atau peningkatan signifikan dalam latensi kueri, evaluasi apakah tipe instans Anda saat ini memenuhi kebutuhan bisnis.
-
Gunakan Specification Calculator dan masukkan parameter bisnis Anda, seperti dimensi vektor, volume data, dan QPS, untuk mendapatkan rekomendasi tipe instans.
-
Jika kalkulator menunjukkan bahwa tipe instans Anda saat ini tidak mencukupi, lakukan peningkatan memori dan resource komputasi node data dengan mengubah konfigurasi instans.