Membangun Indeks Vektor
Panduan ini menjelaskan cara membangun indeks vektor di Milvus.
Indeks vektor adalah unit organisasi metadata yang digunakan untuk mempercepat pencarian kesamaan vektor. Tanpa membangun indeks pada vektor, Milvus akan melakukan pencarian secara paksa.
Secara default, Milvus tidak mengindeks segmen dengan kurang dari 1.024 baris.
Contoh berikut menggambarkan pembangunan indeks IVF_FLAT dengan 1024 cluster menggunakan jarak Euclidean (L2). Anda dapat memilih jenis indeks dan metrik yang sesuai dengan skenario Anda.
Menyiapkan Parameter Indeks
Ikuti langkah-langkah berikut untuk menyiapkan parameter indeks:
index_params = {
"metric_type":"L2",
"index_type":"IVF_FLAT",
"params":{"nlist":1024}
}
Parameter | Deskripsi | Pilihan |
---|---|---|
metric_type |
Jenis metrik yang digunakan untuk mengukur kesamaan vektor. | Untuk vektor floating-point:- L2 (Jarak Euclidean)- IP (produk dalam)- COSINE (kesamaan kosinus)Untuk vektor biner:- JACCARD (Jarak Jaccard)- HAMMING (Jarak Hamming) |
index_type |
Jenis indeks yang digunakan untuk mempercepat pencarian vektor. | Untuk vektor floating-point:- FLAT (FLAT)- IVF_FLAT (IVF_FLAT)- IVF_SQ8 (IVF_SQ8)- IVF_PQ (IVF_PQ)- GPU_IVF_FLAT* (GPU_IVF_FLAT)- GPU_IVF_PQ*> (GPU_IVF_PQ)- HNSW (HNSW)- DISKANN* (DISKANN)Untuk vektor biner:- BIN_FLAT (BIN_FLAT)- BIN_IVF_FLAT (BIN_IVF_FLAT) |
params |
Parameter konstruksi spesifik untuk indeks. | Untuk informasi lebih lanjut, lihat Pencarian di Memori dan Pada Disk. |
- DISKANN memiliki prasyarat tertentu. Untuk informasi lebih lanjut, lihat Pencarian Pada Disk.
- GPU_IVF_FLAT dan GPU_IVF_PQ hanya tersedia dalam instalasi Milvus dengan dukungan GPU diaktifkan.
Membangun Indeks
Bangun indeks dengan menentukan nama bidang vektor dan parameter indeks.
from pymilvus import Collection, utility
collection = Collection("book")
collection.create_index(
field_name="book_intro",
index_params=index_params
)
utility.index_building_progress("book")
Parameter | Deskripsi |
---|---|
field_name |
Nama bidang vektor di mana indeks dibangun. |
index_params |
Parameter dari indeks yang akan dibangun. |
Membangun Indeks Skalar
Berbeda dengan vektor, skalar hanya memiliki besaran dan tidak memiliki arah. Milvus mempertimbangkan angka dan string individu sebagai skalar. Berikut adalah daftar jenis data yang tersedia untuk bidang skalar dalam Milvus.
Mulai dari Milvus v2.1.0, untuk mempercepat penyaringan atribut dalam pencarian hibrid, Anda dapat membangun indeks pada bidang skalar. Anda dapat membaca lebih lanjut tentang indeks bidang skalar di sini.
Catatan: Tautan untuk "di sini" harus diganti dengan tautan aktual yang ditentukan dalam dokumen asli.
Membangun Indeks
Saat membangun indeks pada bidang skalar, Anda tidak perlu mengatur parameter indeks apa pun. Nilai default untuk nama indeks dari bidang skalar adalah default_idx
, diikuti oleh nama bidang yang diindeks. Anda dapat mengatur nilainya menjadi nilai lain yang sesuai jika Anda ingin.
Potongan kode berikut mengasumsikan bahwa koleksi bernama book
sudah ada dan indeks perlu dibuat pada bidang string book_name
.
from pymilvus import Collection
collection = Collection("book")
collection.create_index(
field_name="book_name",
index_name="scalar_index",
)
collection.load()
Setelah indeks dibuat, Anda dapat menyertakan ekspresi boolean untuk bidang string ini dalam pencarian kesamaan vektor, seperti yang ditunjukkan di bawah ini:
search_param = {
"data": [[0.1, 0.2]],
"anns_field": "book_intro",
"param": {"metric_type": "L2", "params": {"nprobe": 10}},
"limit": 2,
"expr": "book_name like \"Hello%\"",
}
res = collection.search(**search_param)
Menghapus Indeks
from pymilvus import Collection
collection = Collection("book") # Dapatkan koleksi yang sudah ada.
collection.drop_index()