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 dalamdtype
. 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()