Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Apa itu pengindeksan vektor Half-Precision?
Pengindeksan vektor setengah presisi memungkinkan Anda menyimpan dan mengindeks penyematan vektor menggunakan angka floating-point 16-bit alih-alih float 32-bit standar. Pengoptimalan ini menyebabkan pengurangan besar dalam penggunaan memori dan biaya penyimpanan, sehingga lebih layak untuk bekerja dengan himpunan data yang lebih besar dan vektor dimensi yang lebih tinggi. Selain itu, dengan mengoptimalkan kepadatan data, dapat berkontribusi pada peningkatan performa kueri dalam banyak skenario pencarian vektor.
Manfaat Utama
- Peningkatan Dukungan Dimensi: Dengan presisi setengah, Anda sekarang dapat mengindeks vektor dengan hingga 4.000 dimensi (peningkatan dari batas sebelumnya 2.000).
- Jejak Penyimpanan Berkurang: Menyimpan vektor dalam format 16-bit secara signifikan mengurangi jumlah penyimpanan yang diperlukan dibandingkan dengan vektor presisi penuh. Ini dapat menyebabkan penghematan biaya yang cukup besar, terutama untuk database vektor skala besar.
- Performa yang Dapat Dikonfigurasi vs. Presisi: Untuk menyempurnakan hasil pencarian Anda, kami menyediakan parameter pengambilan sampel berlebih selama eksekusi kueri. Ini memungkinkan Anda untuk mengontrol kompromi antara kecepatan pengambilan dan dampak potensial dari penurunan presisi.
Membuat indeks vektor Half-Precision
Saat menentukan indeks vektor untuk koleksi Anda, Anda dapat mengaktifkan pemadatan setengah presisi dengan menentukan "compression": "half" opsi dalam cosmosSearchOptions.
db.runCommand({
"createIndexes": "<vector_collection_name>",
"indexes": [
{
"key": { "<vector_field_name>": "cosmosSearch" },
"name": "<index_name>",
"cosmosSearchOptions": {
"kind": "vector-hnsw", // or vector-ivf
"similarity": "cos",
"dimensions": integer_value, // max 4000
"compression": "half"
}
}
]
});
Meningkatkan pencarian dengan Oversampling
Saat mengkueri indeks vektor yang menggunakan kompresi setengah presisi, Anda dapat menggunakan oversampling parameter dalam $search tahap agregasi. Parameter ini membantu mengurangi potensi hilangnya presisi yang diperkenalkan oleh representasi 16-bit.
Faktor oversampling memungkinkan Anda untuk mendapatkan lebih banyak potensi tetangga terdekat dari indeks presisi setengah daripada jumlah akhir hasil yang Anda inginkan (k). Kandidat ini kemudian dibandingkan menggunakan vektor presisi penuh asli untuk memastikan akurasi yang lebih tinggi dalam hasil peringkat akhir.
Misalnya, untuk mendapatkan 10k (=10) vektor yang paling mirip, sebuah praktik terbaik adalah dengan mengatur oversampling ke nilai seperti 1,5 atau 2,0. Dengan "oversampling": 1.5, sistem pertama-tama akan mendapatkan 15 kandidat dari indeks setengah presisi dan kemudian memperbaiki 10 teratas menggunakan data presisi penuh.
db.collection.aggregate([
{
"$search": {
"cosmosSearch": {
"vector": query_vector,
"path": path_to_property,
"k": num_results_to_return,
"oversampling": double_value
}
}
},
{
"$project": {
"similarityScore": { "$meta": "searchScore" },
"_id": 0
}
}
]);
Nota
Faktor oversampling harus berupa double dengan nilai minimum 1.0. Faktor ini hanya relevan untuk indeks vektor yang dibuat dengan "compression": "half".
Half-Precision vs. Kuantisasi Produk
Indeks vektor yang dikompresi menggunakan Half-Precision dan Kuantisasi Produk (PQ) di Azure DocumentDB, tetapi dua metode ini berbeda dalam cara mencapai kompresi dan pengaruh pada proses pencarian.
| Fitur | Presisi Setengah | Kuantisasi Produk (PQ) |
|---|---|---|
| Metode Kompresi | Mengurangi setiap dimensi vektor menjadi 16 bit. | Membagi ruang vektor menjadi sub-ruang dan mengukur masing-masing. |
| Dimensi Maks | Hingga 4.000 | Hingga 16.000 |
| Perubahan Presisi | Sedikit kerugian akibat kedalaman bit yang lebih rendah. | Berpotensi kehilangan yang lebih besar, dapat dikonfigurasi melalui pqCompressedDims. |
| Kecepatan Pencarian | Peningkatan kecepatan sedang karena indeks yang lebih kecil. | Peningkatan kecepatan yang signifikan karena vektor yang sangat terkompresi. |
| Waktu Build Indeks | Relatif cepat. | Dapat berlangsung lebih lama karena pelatihan sentroid (pqSampleSize). |
| Dukungan Indeks | HNSW, IVF. | DiskANN. |
| Configuration | Sederhana, aktifkan compression: "half". |
Parameter lainnya: pqCompressedDims, pqSampleSize. |
| Penggunaan Pengambilan Sampel Berlebih | Membantu dengan penurunan sedikit dalam presisi. | Penting untuk memulihkan akurasi dari kompresi yang lebih besar. |
| Kasus Penggunaan Ideal | Pengurangan memori sedang, peningkatan dimensi, kompromi presisi yang dapat diterima. | Himpunan data besar, dimensi tinggi, pencarian cepat yang diprioritaskan, presisi dikelola dengan pengambilan sampel berlebih. |