Kelas Collection dalam Milvus mirip dengan tabel dalam MySQL, digunakan untuk mengatur data dan terdiri dari satu atau lebih partisi.

Membuat Collection

Sebuah koleksi terdiri dari satu atau lebih partisi. Saat membuat koleksi baru, Milvus akan membuat partisi default bernama _default. Untuk informasi lebih lanjut, silakan lihat penjelasan terminologi terkait dengan koleksi.

Contoh berikut akan membuat sebuah koleksi bernama book dengan dua partisi, termasuk sebuah field kunci utama bernama book_id, sebuah field skalar INT64 bernama word_count, dan sebuah field vektor floating-point dua dimensi bernama book_intro. Aplikasi nyata sering menggunakan vektor dengan dimensi yang lebih tinggi daripada contoh ini.

Mode Persiapan

Mode ini mirip dengan mendefinisikan struktur tabel MYSQL.

Koleksi yang akan dibuat harus mengandung kolom kunci utama dan kolom vektor. Kolom kunci utama mendukung tipe data INT64 dan VarChar.

Pertama, siapkan parameter-parameter yang diperlukan, termasuk skema kolom, skema koleksi, dan nama koleksi.

Sebelum mendefinisikan skema koleksi, buatlah skema untuk setiap kolom dalam koleksi. Untuk mengurangi kompleksitas penyisipan data, Milvus memungkinkan Anda untuk menentukan nilai default untuk setiap kolom skalar (kecuali kolom kunci utama). Ini berarti bahwa jika Anda tidak mengisi suatu kolom saat menyisipkan data, nilai default yang dikonfigurasi selama pembuatan skema kolom akan digunakan.

from pymilvus import CollectionSchema, FieldSchema, DataType
book_id = FieldSchema(
  name="book_id",
  dtype=DataType.INT64,
  is_primary=True,
)
book_name = FieldSchema(
  name="book_name",
  dtype=DataType.VARCHAR,
  max_length=200,
  default_value="Tidak diketahui"  # Nilai default adalah "Tidak diketahui"
)
word_count = FieldSchema(
  name="word_count",
  dtype=DataType.INT64,
  default_value=9999  # Nilai default adalah 9999
)
book_intro = FieldSchema(
  name="book_intro",
  dtype=DataType.FLOAT_VECTOR,
  dim=2
)
schema = CollectionSchema(
  fields=[book_id, book_name, word_count, book_intro],
  description="Pencarian buku uji",  # Deskripsinya adalah "Pencarian buku uji"
  enable_dynamic_field=True  # Aktifkan skema dinamis
)
collection_name = "buku"

Tipe Skema Parameter Deskripsi Opsi
FieldSchema name Nama kolom yang akan dibuat. Tidak Ada
dtype Tipe data dari kolom yang akan dibuat. Kolom kunci utama: - DataType.INT64 (numpy.int64) - DataType.VARCHAR (VARCHAR) Kolom skalar: - DataType.BOOL (Boolean) - DataType.INT8 (numpy.int8) - DataType.INT16 (numpy.int16) - DataType.INT32 (numpy.int32) - DataType.INT64 (numpy.int64) - DataType.FLOAT (numpy.float32) - DataType.DOUBLE (numpy.double) - DataType.VARCHAR (VARCHAR) - DataType.JSON (JSON) Kolom vektor: - BINARY_VECTOR (Vektor biner) - FLOAT_VECTOR (Vektor float)
is_primary Sakelar yang mengontrol apakah kolom adalah kolom kunci utama. Parameter ini perlu ditentukan untuk kolom kunci utama. True atau False
auto_id Sakelar untuk mengaktifkan atau menonaktifkan penugasan ID otomatis (kunci utama). Parameter ini perlu ditentukan untuk kolom kunci utama dan defaultnya adalah False. True atau False
max_length (Diperlukan untuk kolom VARCHAR) Panjang maksimum string yang dapat dimasukkan. [1, 65,535]
default_value Nilai default dari kolom. Parameter ini hanya berlaku untuk kolom skalar (non-array) dan non-JSON. Tidak mungkin untuk menentukan nilai default untuk kolom kunci utama. Untuk informasi lebih lanjut, silakan lihat parameter default_value. Tidak Ada
dim (Diperlukan untuk kolom vektor) Dimensi vektor. [1, 32,768]
description (Opsional) Deskripsi dari kolom. Tidak Ada
CollectionSchema fields Kolom-kolom yang akan dibuat untuk koleksi. Tidak Ada
description (Opsional) Deskripsi dari koleksi yang akan dibuat. Tidak Ada
enable_dynamic_field Apakah akan mengaktifkan skema dinamis. Tipe data: Boolean (true atau false). Opsional, defaultnya adalah False. Untuk informasi lebih lanjut mengenai skema dinamis, silakan lihat panduan pengguna untuk skema dinamis dan manajemen koleksi.
collection_name Nama dari koleksi yang akan dibuat. Tidak Ada

Membuat Koleksi dengan Skema

Selanjutnya, buat koleksi dengan skema yang sudah ditentukan.

from pymilvus import Collection
koleksi = Collection(
    name=nama_koleksi,
    schema=skema,
    using='default',
    shards_num=2
    )
Parameter Deskripsi Opsi
using (opsional) Tentukan alias dari server di sini, dan pilih tempat untuk membuat koleksi di server Milvus. N/A
shards_num (opsional) Jumlah shard untuk koleksi yang akan dibuat. [1,16]
num_partitions (opsional) Jumlah logis partisi untuk koleksi yang akan dibuat. [1,4096]
*kwargs: collection.ttl.seconds (opsional) TTL dari koleksi adalah waktu kedaluwarsa koleksi. Data dalam koleksi yang kedaluwarsa akan dibersihkan dan tidak akan berpartisipasi dalam pencarian atau query. Tetapkan TTL dalam detik. Nilai harus 0 atau lebih besar. 0 berarti menonaktifkan TTL.

Batasan

Konfigurasi Sumber Daya

Fitur Batas Maksimum
Panjang Nama Koleksi 255 karakter
Jumlah Partisi dalam Koleksi 4.096
Jumlah Kolom dalam Koleksi 64
Jumlah Shard dalam Koleksi 16

Parameter default_value

  • default_value hanya berlaku untuk bidang skalar non-array dan non-JSON.
  • default_value tidak berlaku untuk kunci utama.
  • Tipe data default_value harus sama dengan tipe data yang ditentukan dalam dtype. Jika tidak, kesalahan dapat terjadi.
  • Dalam kasus menggunakan auto_id, tidak diizinkan untuk menjadikan semua sisa bidang menggunakan nilai default. Dengan kata lain, saat melakukan operasi insert atau update, Anda perlu untuk menentukan nilai setidaknya untuk satu bidang. Jika tidak, kesalahan dapat terjadi.

Mengubah Nama Koleksi

Jika Anda ingin mengubah nama koleksi, Anda dapat berinteraksi dengan Milvus menggunakan API pengubahan nama koleksi. Panduan ini akan membantu Anda memahami cara menggunakan SDK pilihan Anda untuk mengubah nama koleksi yang sudah ada.

Pada potongan kode berikut, kita membuat sebuah koleksi dan memberi nama koleksi_lama, dan kemudian mengubah namanya menjadi koleksi_baru.

from pymilvus import Collection, FieldSchema, CollectionSchema, DataType, koneksi, utilitas
koneksi.sambung(alias="default")
skema = CollectionSchema(fields=[
...     FieldSchema("int64", DataType.INT64, description="int64", is_primary=True),
...     FieldSchema("float_vector", DataType.FLOAT_VECTOR, is_primary=False, dim=128),
... ])
koleksi = Collection(name="koleksi_lama", schema=skema)
utilitas.rename_collection("koleksi_lama", "koleksi_baru") # Output: True
utilitas.has_collection("koleksi_baru") # Output: False

Mengubah Koleksi

Saat ini, fitur TTL hanya tersedia di Python.

koleksi.set_properties(properties={"collection.ttl.seconds": 1800})

Contoh di atas mengubah TTL koleksi menjadi 1800 detik.

Memeriksa Jika Koleksi Ada

Verifikasi apakah koleksi ada di Milvus.

from pymilvus import utilitas
utilitas.has_collection("buku")

Memeriksa Detail Koleksi

from pymilvus import Collection
koleksi = Collection("buku")  # Dapatkan koleksi yang sudah ada.

koleksi.skema                # Mengembalikan CollectionSchema dari koleksi.
koleksi.deskripsi           # Mengembalikan deskripsi dari koleksi.
koleksi.nama                  # Mengembalikan nama dari koleksi.
koleksi.kosong            # Mengembalikan nilai boolean yang menunjukkan apakah koleksi kosong.
koleksi.jumlah_entitas          # Mengembalikan jumlah entitas dalam koleksi.
koleksi.kolom_utama         # Mengembalikan schema.FieldSchema dari bidang kunci utama.
koleksi.partisi           # Mengembalikan daftar objek [Partition].
koleksi.indeks               # Mengembalikan daftar objek [Index].
koleksi.properti            # Mengembalikan waktu kedaluwarsa data dalam koleksi.

Daftar semua koleksi

from pymilvus import utilitas
utilitas.daftar_koleksi()

Hapus sebuah koleksi

from pymilvus import utilitas
utilitas.hapus_koleksi("buku")

Buat alias koleksi

from pymilvus import utilitas
utilitas.buat_alias(
  nama_koleksi = "buku",
  alias = "publikasi"
)

Hapus alias koleksi

from pymilvus import utilitas
utilitas.hapus_alias(alias = "publikasi")

Mengubah alias koleksi

Mengubah alias yang ada untuk menunjuk ke koleksi yang berbeda. Contoh berikut didasarkan pada skenario di mana alias publikasi awalnya dibuat untuk koleksi lain.

from pymilvus import utility
utility.alter_alias(
  collection_name = "buku",
  alias = "publikasi"
)

Memuat sebuah koleksi

Bagaimana cara memuat sebuah koleksi ke dalam memori sebelum melakukan operasi pencarian atau kueri. Di Milvus, semua operasi pencarian dan kueri dilakukan di memori.

Milvus memungkinkan pengguna untuk memuat koleksi sebagai replika ganda untuk memanfaatkan sumber daya CPU dan memori tambahan dari node kueri. Fitur ini meningkatkan QPS dan throughput secara keseluruhan tanpa menggunakan perangkat keras tambahan. Sebelum memuat koleksi, pastikan Anda telah membuat indeks untuk koleksi tersebut.

from pymilvus import Collection, utility

koleksi = Collection("buku")
koleksi.load(replica_number=2)

utility.load_state("buku")

utility.loading_progress("buku")

Melepaskan sebuah koleksi

Bagaimana cara melepaskan sebuah koleksi setelah operasi pencarian atau kueri untuk mengurangi penggunaan memori.

from pymilvus import Collection
koleksi = Collection("buku") 
koleksi.release()