BIN_IVF_FLAT
Indeks BIN_IVF_FLAT adalah varian dari indeks IVF_FLAT yang khusus untuk penyematan biner. Indeks ini meningkatkan efisiensi kueri dengan mempartisi data vektor terlebih dahulu ke dalam beberapa cluster (unit nlist) dan kemudian membandingkan vektor input target ke pusat setiap cluster. BIN_IVF_FLAT secara signifikan mengurangi waktu kueri sekaligus memungkinkan pengguna untuk menyempurnakan keseimbangan antara akurasi dan kecepatan. Untuk informasi lebih lanjut, lihat IVF_FLAT.
Membangun indeks
Untuk membangun indeks BIN_IVF_FLAT 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_binary_vector_field_name", # Name of the vector field to be indexed
index_type="BIN_IVF_FLAT", # Type of the index to create
index_name="vector_index", # Name of the index to create
metric_type="HAMMING", # Metric type used to measure similarity
params={
"nlist": 64, # Number of clusters for the index
} # Index building params
)
Dalam konfigurasi ini:
index_type: Jenis indeks yang akan dibangun. Dalam contoh ini, tetapkan nilainya keBIN_IVF_FLAT.metric_type: Metode yang digunakan untuk menghitung jarak antara vektor. Nilai yang didukung untuk penyematan biner termasukHAMMING(default) danJACCARD. Untuk detailnya, lihat Jenis Metrik.params: Opsi konfigurasi tambahan untuk membangun indeks.nlist: Jumlah kluster untuk membagi set data.
Untuk mempelajari lebih lanjut parameter pembuatan yang tersedia untuk indeks
BIN_IVF_FLAT, 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="binary_vector_field", # Binary vector field
data=[query_binary_vector], # Query binary 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
BIN_IVF_FLAT, 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 |
|---|---|---|---|
|
Jumlah kluster yang akan dibuat menggunakan algoritme k-means selama pembuatan indeks. Setiap kluster, yang diwakili oleh centroid, menyimpan daftar vektor. Meningkatkan parameter ini akan mengurangi jumlah vektor di setiap klaster, menciptakan partisi yang lebih kecil dan lebih terfokus. |
Jenis: Rentang Bilangan Bulat: [1, 65536] Nilai default: |
Nilai |
Parameter pencarian khusus indeks
Tabel berikut mencantumkan parameter yang dapat dikonfigurasi di search_params.params saat melakukan pencarian di indeks.
Parameter |
Deskripsi |
Rentang Nilai |
Saran Penyetelan |
|---|---|---|---|
|
Jumlah klaster untuk mencari kandidat. Nilai yang lebih tinggi memungkinkan lebih banyak klaster untuk dicari, meningkatkan daya ingat dengan memperluas cakupan pencarian, tetapi dengan biaya peningkatan latensi kueri. |
Jenis: Bilangan bulat Rentang: [1, nlist] Nilai default: |
Meningkatkan nilai ini akan meningkatkan daya ingat tetapi dapat memperlambat pencarian. Tetapkan Pada kebanyakan kasus, kami sarankan Anda menetapkan nilai dalam kisaran ini: [1, nlist]. |