All Products
Search
Document Center

Vector Retrieval Service for Milvus:Kelola koleksi

Last Updated:Sep 24, 2025

Koleksi dalam Milvus mirip dengan tabel dalam database relasional. Koleksi merupakan unit dasar untuk mengatur dan mengelola data vektor serta metadata skalar terkait. Anda dapat menyesuaikan alur pemrosesan data dengan mengonfigurasi indeks, partisi, dan shard, sehingga memungkinkan Anda membuat solusi ujung ke ujung untuk ingest data, penyimpanan, kueri, dan analisis.

Prasyarat

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

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

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

Buat sebuah koleksi

Buat koleksi dengan cepat

Anda dapat membuat koleksi dengan cepat dengan menentukan nama dan dimensi vektornya.

from pymilvus import MilvusClient

# Buat klien Milvus.
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.
)

# Buat koleksi bernama milvus_collection.
client.create_collection(
    collection_name="milvus_collection",
    dimension=5
)

res = client.get_load_state(
    collection_name="milvus_collection"
)
# Mengembalikan status pemuatan saat ini dari koleksi.
print(res)

Kode ini membuat koleksi dengan dua bidang: `id` (kunci utama) dan `vector` (bidang vektor). Properti `auto_id` dan `enable_dynamic_field` diaktifkan secara default.

  • auto_id: Saat properti ini diaktifkan, Milvus secara otomatis memberikan kunci utama yang bertambah otomatis ke setiap catatan, sehingga Anda tidak perlu menetapkan nilai kunci utama.

  • enable_dynamic_field: Saat properti ini diaktifkan, semua bidang selain `id` dan `vector` diperlakukan sebagai bidang dinamis. Bidang tersebut disimpan sebagai pasangan kunci-nilai dalam bidang khusus bernama $meta. Properti ini memungkinkan Anda menyisipkan data untuk bidang yang belum didefinisikan dalam skema.

Pengaturan ini memungkinkan Anda menyisipkan dan mengelola data secara fleksibel tanpa mendefinisikan semua bidang terlebih dahulu.

Buat koleksi kustom

Saat membuat koleksi kustom, Anda dapat menentukan parameter skema dan indeks.

from pymilvus import MilvusClient, DataType, time

# Buat klien Milvus.
client = MilvusClient(
    uri="http://c-xxxx.milvus.aliyuncs.com:19530",  # Alamat yang dapat diakses melalui Internet dari instans Milvus.
    token="<yourUsername>:<yourPassword>",  # Nama pengguna dan kata sandi untuk masuk ke instans Milvus.
    db_name="default"  # Nama database yang akan dihubungkan. Contoh ini menggunakan database default.
)

# Buat skema.
schema = MilvusClient.create_schema(
    auto_id=False,  # Nonaktifkan pembuatan ID otomatis.
    enable_dynamic_field=True,  # Aktifkan bidang dinamis.
)

# Tambahkan bidang skema.
# Tambahkan bidang INT64 bernama test_id sebagai kunci utama.
schema.add_field(field_name="test_id", datatype=DataType.INT64, is_primary=True)
# Tambahkan bidang vektor float 768-dimensi bernama test_vector.
schema.add_field(field_name="test_vector", datatype=DataType.FLOAT_VECTOR, dim=768)

# Tentukan parameter indeks.
index_params = client.prepare_index_params()

# Tambahkan indeks.
index_params.add_index(
    field_name="test_id",  
    index_type="STL_SORT"  # Tetapkan tipe indeks.
)


index_params.add_index(
    field_name="test_vector",  
    index_type="IVF_SQ8",      # Tetapkan tipe indeks.
    metric_type="L2",          # Tetapkan tipe metrik, seperti L2.
    params={"nlist": 128}
)
# Buat koleksi dengan skema dan indeks yang ditentukan.
client.create_collection(
    collection_name="milvus_collection",  # Buat koleksi bernama milvus_collection.
    schema=schema,
    index_params=index_params
)

time.sleep(5)

res = client.get_load_state(
    collection_name="milvus_collection"
)

print(res)

Anda juga dapat membuat koleksi dan indeks secara terpisah. Berikut adalah contoh kode:

# Buat koleksi bernama milvus_collection1.
client.create_collection(
    collection_name="milvus_collection1",
    schema=schema,
)
# Kueri status pemuatan milvus_collection1.
res = client.get_load_state(
    collection_name="milvus_collection1"
)

print(res)
# Buat indeks untuk milvus_collection1.
client.create_index(
    collection_name="milvus_collection1",
    index_params=index_params
)
# Kueri status pemuatan milvus_collection1 setelah indeks dibuat.
res = client.get_load_state(
    collection_name="milvus_collection1"
)

print(res)

Lihat koleksi

  • Anda dapat melihat detail sebuah koleksi.

    res = client.describe_collection(collection_name="milvus_collection")
    
    print(res)
    
  • Anda dapat melihat semua koleksi dalam database saat ini.

    res = client.list_collections()
    
    print(res)
    

Muat dan lepaskan koleksi

Saat memuat koleksi, Milvus memuat file indeks terkait ke dalam memori. Saat melepaskan koleksi, Milvus mengeluarkan file indeks dari memori. Anda harus memuat koleksi ke dalam memori sebelum melakukan pencarian.

Muat koleksi

client.load_collection(
    collection_name="milvus_collection"
)

res = client.get_load_state(
    collection_name="milvus_collection"
)

print(res)

Merilis koleksi

client.release_collection(
    collection_name="milvus_collection"
)

res = client.get_load_state(
    collection_name="milvus_collection"
)

print(res)

Hapus koleksi

client.drop_collection(
    collection_name="milvus_collection"
)

client.drop_collection(
    collection_name="milvus_collection1"
)