QGraph (Quantized Graph) menggunakan struktur graf Hierarchical Navigable Small World (HNSW) dengan kuantisasi opsional. Konfigurasikan parameter pembuatan dan pencarian berikut untuk menyeimbangkan performa, tingkat recall, dan ukuran indeks sesuai beban kerja Anda.
Parameter pembuatan indeks
Parameter pembuatan ditetapkan saat pembuatan indeks. Perubahan pada parameter ini memerlukan pembuatan ulang indeks.
| Parameter | Tipe | Bawaan | Deskripsi |
|---|---|---|---|
proxima.hnsw.builder.max_neighbor_count | uint32 | 100 | Jumlah maksimum tetangga per node graf. Nilai yang lebih tinggi meningkatkan konektivitas graf tetapi memperpanjang waktu konstruksi dan memperbesar ukuran indeks. |
proxima.hnsw.builder.efconstruction | uint32 | 500 | Ukuran area pemindaian tetangga selama konstruksi graf. Nilai yang lebih tinggi menghasilkan graf berkualitas lebih baik tetapi memperlambat pembuatan indeks. Mulailah dengan nilai 400. |
proxima.hnsw.builder.thread_count | uint32 | 0 | Jumlah thread yang digunakan selama konstruksi. 0 menggunakan jumlah core CPU yang tersedia. |
proxima.qgraph.builder.quantizer_class | string | None | Kuantisasi yang diterapkan pada indeks. Opsi: Int4QuantizerConverter, Int8QuantizerConverter, HalfFloatConverter. Lihat Pilih kuantisasi. |
Parameter pencarian indeks
Parameter pencarian dapat disesuaikan tanpa perlu membangun ulang indeks.
| Parameter | Tipe | Bawaan | Deskripsi |
|---|---|---|---|
proxima.hnsw.searcher.ef | uint32 | 500 | Jumlah kandidat tetangga terdekat yang dipindai selama pencarian online. Nilai yang lebih tinggi meningkatkan tingkat recall tetapi mengurangi performa pencarian. Atur dalam rentang [100, 1000]. |
proxima.hnsw.searcher.max_scan_ratio | float | None | Proporsi titik yang dipindai selama pencarian online. Nilai yang lebih tinggi meningkatkan tingkat recall tetapi mengurangi performa pencarian. |
proxima.hnsw.searcher.brute_force_threshold | uint32 | None | Jumlah minimum titik yang dipindai selama pencarian online. Ketika nilai ini melebihi jumlah dokumen dalam satu shard, pencarian beralih ke brute force. |
Pilih quantizer
Kuantisasi mengurangi ukuran indeks dan meningkatkan performa pencarian dengan mengorbankan tingkat recall. Pilih opsi yang sesuai berdasarkan anggaran memori dan persyaratan akurasi Anda.
| Kelas Quantizer | Ukuran indeks | Performa pencarian | Tingkat recall |
|---|---|---|---|
Int4QuantizerConverter | Terkecil | Tertinggi | Terendah |
Int8QuantizerConverter | Sedang | Sedang | Sedang |
HalfFloatConverter | Mendekati versi tanpa kuantisasi | Mendekati versi tanpa kuantisasi | Mendekati versi tanpa kuantisasi |
Catatan: Karena keterbatasan set instruksi CPU,HalfFloatConvertermemberikan performa dan tingkat recall yang hampir identik dengan tanpa kuantisasi. GunakanInt8QuantizerConverteruntuk pengurangan ukuran yang signifikan atauInt4QuantizerConverteruntuk indeks terkecil.
Panduan penyetelan
Konfigurasi yang tepat bergantung pada throughput kueri, frekuensi penulisan, dan target recall Anda. Gunakan tabel berikut sebagai titik awal.
| Throughput kueri | Frekuensi penulisan | Target recall | Konfigurasi yang direkomendasikan |
|---|---|---|---|
| Rendah | Rendah | Rendah | Pertahankan efconstruction dan ef rendah. Mesin yang lebih kecil sudah cukup. |
| Rendah | Rendah | Tinggi | Tingkatkan efconstruction dan ef hingga tingkat recall memenuhi target Anda. |
| Rendah | Tinggi | Rendah | Pertahankan efconstruction rendah. Tingkatkan ef untuk mencapai tingkat recall yang diinginkan. |
| Rendah | Tinggi | Tinggi | Pertahankan efconstruction rendah. Tingkatkan ef secara signifikan. |
| Tinggi | Rendah | Rendah | Throughput kueri tinggi memerlukan ef yang rendah. Recall rendah memungkinkan efconstruction tetap rendah. |
| Tinggi | Apa pun | Tinggi | Skenario paling menuntut. Pertahankan efconstruction dan ef serendah mungkin sambil tetap memenuhi target recall Anda. |
Prinsip umum:
efadalah parameter utama untuk penyetelan selama pencarian. Tingkatkan nilainya untuk meningkatkan tingkat recall; turunkan untuk meningkatkan performa pencarian.max_scan_ratiodanbrute_force_thresholdmenyediakan kontrol pemindaian tambahan untuk kasus penggunaan lanjutan.