All Products
Search
Document Center

Vector Retrieval Service for Milvus:Kelola indeks vektor

Last Updated:Sep 24, 2025

Topik ini menjelaskan cara membuat indeks pada bidang vektor di Milvus untuk mempercepat pencarian kesamaan. Indeks vektor menggunakan skema indeks canggih dan algoritma seperti Inverted File (IVF) serta Hierarchical Navigable Small World (HNSW). Indeks ini menekan ruang vektor dan mempercepat pencarian titik data yang paling mirip dalam set data besar. Proses ini secara signifikan meningkatkan tingkat recall dan kecepatan tanggapan untuk aplikasi seperti pengenalan gambar, pengambilan suara, dan sistem rekomendasi.

Informasi latar belakang

Milvus mendukung berbagai jenis indeks untuk pengambilan kesamaan yang efisien. Ini menyediakan tiga metrik untuk menghitung jarak antar vektor: Cosine Similarity (COSINE), Euclidean Distance (L2), dan Inner Product (IP). Anda dapat membuat indeks pada bidang vektor dan skalar yang sering di-query untuk mengoptimalkan kinerja pengambilan.

Prasyarat

  • Anda telah menginstal pustaka PyMilvus di klien lokal Anda dan memperbaruinya ke versi terbaru.

    Jika Anda belum menginstal pustaka PyMilvus atau perlu memperbaruinya, jalankan perintah berikut:

    pip install --upgrade pymilvus
  • Anda telah membuat instans Milvus. Untuk informasi lebih lanjut, lihat Buat Instans Milvus.

Persiapan

Sebelum mengelola indeks, Anda perlu membuat koleksi terlebih dahulu. Ada dua pendekatan untuk membuat koleksi:

Opsi 1: Buat Koleksi dengan Indeks

Jika Anda ingin membuat dan memuat indeks saat membuat koleksi, Anda perlu:

  • Deklarasikan dimensi dari bidang vektor (dimension)

  • Berikan parameter terkait indeks (termasuk metric_type dan konfigurasi indeks)

Opsi 2: Buat Koleksi Tanpa Indeks

Potongan kode berikut menggunakan pendekatan ini, sehingga koleksi yang dibuat tidak akan berisi indeks dan tidak akan dimuat otomatis ke dalam memori:

from pymilvus import MilvusClient, DataType

client = MilvusClient(
    uri="http://c-xxxx.milvus.aliyuncs.com:19530",  # Titik akhir publik dari instans Milvus.
    token="<yourUsername>:<yourPassword>",  # Nama pengguna dan kata sandi untuk instans Milvus.
    db_name="default"  # Nama database yang akan dihubungkan. Contoh ini menggunakan database default.
)

schema = MilvusClient.create_schema(
    auto_id=False,
    enable_dynamic_field=True,
)

schema.add_field(field_name="id", datatype=DataType.INT64, is_primary=True)
schema.add_field(field_name="vec", datatype=DataType.FLOAT_VECTOR, dim=5)

client.create_collection(
    collection_name="<yourCollectionName>",
    schema=schema,
)

Buat indeks

Untuk membuat indeks, panggil fungsi create_index dan masukkan parameter index_params yang telah didefinisikan.

index_params = MilvusClient.prepare_index_params()
# Tentukan parameter indeks.
index_params.add_index(
    field_name="vec",          # Tentukan nama bidang vektor, seperti "vec".
    metric_type="L2",          # Tetapkan tipe metrik, seperti L2.
    index_type="IVF_PQ",       # Tetapkan tipe indeks, seperti IVF_PQ.
    index_name="vector_index"  # Tetapkan nama indeks sesuai kebutuhan.
)

# Buat indeks.
client.create_index(
    collection_name="<yourCollectionName>",
    index_params=index_params
)

Lihat indeks

res = client.describe_index(
    collection_name="<yourCollectionName>",
    index_name="<yourIndexName>"
)

print(res)

Hapus indeks

client.drop_index(
    collection_name="<yourCollectionName>",
    index_name="<yourIndexName>"
)