GPU_IVF_PQ
Indeks GPU_IVF_PQ dibangun berdasarkan konsep IVF_PQ dengan menggabungkan pengelompokan file terbalik dengan Product Quantization (PQ), yang memecah vektor berdimensi tinggi menjadi subruang yang lebih kecil dan mengkuantifikasinya untuk pencarian kemiripan yang efisien. Didesain khusus untuk lingkungan GPU, GPU_IVF_PQ memanfaatkan pemrosesan paralel untuk mempercepat komputasi dan menangani data vektor berskala besar secara efektif. Untuk informasi lebih lanjut tentang konsep dasar, lihat IVF_PQ.
Membangun indeks
Untuk membangun indeks GPU_IVF_PQ pada bidang vektor di Milvus, gunakan metode add_index(), tentukan index_type, metric_type, dan parameter tambahan untuk indeks.
from pymilvus import MilvusClient
# Prepare index building params
index_params = MilvusClient.prepare_index_params()
index_params.add_index(
field_name="your_vector_field_name", # Name of the vector field to be indexed
index_type="GPU_IVF_PQ", # Type of the index to create
index_name="vector_index", # Name of the index to create
metric_type="L2", # Metric type used to measure similarity
params={
"m": 4, # Number of sub-vectors to split eahc vector into
} # Index building params
)
Dalam konfigurasi ini:
index_type: Jenis indeks yang akan dibangun. Dalam contoh ini, tetapkan nilainya keGPU_IVF_PQ.metric_type: Metode yang digunakan untuk menghitung jarak antara vektor. Nilai yang didukung termasukCOSINE,L2, danIP. Untuk detailnya, lihat Jenis Metrik.params: Opsi konfigurasi tambahan untuk membangun indeks.m: Jumlah sub-vektor yang akan dibagi menjadi vektor.
Untuk mempelajari lebih lanjut parameter pembuatan yang tersedia untuk indeks
GPU_IVF_PQ, lihat Parameter pembuatan indeks.
Setelah parameter indeks dikonfigurasi, Anda dapat membuat indeks dengan menggunakan metode create_index() secara langsung atau mengoper parameter indeks dalam metode create_collection. Untuk detailnya, lihat Membuat Koleksi.
Mencari di indeks
Setelah indeks dibuat dan entitas dimasukkan, Anda dapat melakukan pencarian kemiripan pada indeks.
search_params = {
"params": {
"nprobe": 10, # Number of clusters to search
}
}
res = MilvusClient.search(
collection_name="your_collection_name", # Collection name
anns_field="vector_field", # Vector field name
data=[[0.1, 0.2, 0.3, 0.4, 0.5]], # Query vector
limit=3, # TopK results to return
search_params=search_params
)
Dalam konfigurasi ini:
params: Opsi konfigurasi tambahan untuk pencarian pada indeks.nprobe: Jumlah kluster yang akan dicari.
Untuk mempelajari lebih lanjut parameter pencarian yang tersedia untuk indeks
GPU_IVF_PQ, lihat Parameter pencarian khusus indeks.
Parameter indeks
Bagian ini memberikan gambaran umum tentang parameter yang digunakan untuk membangun indeks dan melakukan pencarian pada indeks.
Parameter pembangunan indeks
Tabel berikut mencantumkan parameter yang dapat dikonfigurasi di params saat membangun indeks.
Parameter |
Deskripsi |
Rentang Nilai |
Saran Penyetelan |
|
|---|---|---|---|---|
IVF |
|
Jumlah klaster yang akan dibuat menggunakan algoritme k-means selama pembuatan indeks. |
Jenis: Rentang bilangan bulat: [1, 65536] Nilai default: |
Nilai |
PQ |
|
Jumlah sub-vektor (digunakan untuk kuantisasi) untuk membagi setiap vektor dimensi tinggi selama proses kuantisasi. |
Jenis: Bilangan bulat Rentang: [1, 65536] Nilai default: Tidak ada |
Nilai Dalam kebanyakan kasus, kami sarankan Anda menetapkan nilai dalam kisaran ini: [D/8, D]. |
|
Jumlah bit yang digunakan untuk merepresentasikan indeks centroid setiap sub-vektor dalam bentuk terkompresi. Ini secara langsung menentukan ukuran setiap codebook. Setiap codebook akan berisi centroid 2nbit. Sebagai contoh, jika |
Jenis: Rentang Bilangan Bulat: [1, 24] Nilai default: |
Nilai |
|
|
Memutuskan apakah akan menyimpan dataset asli dalam memori GPU. Nilai yang mungkin:
|
Jenis: Rentang String: [ Nilai default: |
Mengaturnya ke |
Parameter pencarian khusus indeks
Tabel berikut mencantumkan parameter yang dapat dikonfigurasi di search_params.params saat melakukan pencarian pada indeks.
Parameter |
Deskripsi |
Rentang Nilai |
Saran Penyetelan |
|
|---|---|---|---|---|
IVF |
|
Jumlah cluster untuk mencari kandidat. |
Tipe Bilangan bulat Rentang: [1, nlist] Nilai default: |
Nilai yang lebih tinggi memungkinkan lebih banyak klaster untuk dicari, meningkatkan daya ingat dengan memperluas cakupan pencarian, namun dengan biaya peningkatan latensi kueri. Tetapkan Pada kebanyakan kasus, kami menyarankan Anda menetapkan nilai dalam kisaran ini: [1, nlist]. |