Membuat sebuah koleksi

Tema ini menjelaskan bagaimana cara membuat koleksi di Milvus.

Koleksi terdiri dari satu atau lebih partisi. Saat membuat koleksi baru, Milvus secara otomatis membuat partisi default bernama _default.

Contoh berikut membuat sebuah koleksi bernama buku dengan dua shard. Ini mencakup sebuah field kunci utama bernama book_id, sebuah field skalar bertipe INT64 bernama word_count, dan sebuah field vektor bertipe floating point dua dimensi bernama book_intro. Aplikasi aktual mungkin menggunakan dimensi vektor yang lebih tinggi daripada contoh ini.

Definisi Skema Koleksi

Koleksi yang akan dibuat harus mencakup sebuah field kunci utama dan field vektor. Field kunci utama mendukung tipe data INT64 dan VarChar.

Petunjuk: Definisi skema koleksi mirip dengan mendefinisikan struktur tabel di MYSQL.

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

Sebelum mendefinisikan skema koleksi, buat sebuah skema untuk setiap field dalam koleksi. Untuk menyederhanakan kompleksitas penyisipan data, Milvus memungkinkan untuk menentukan nilai default untuk setiap field skalar (kecuali untuk field kunci utama). Ini berarti jika sebuah field dibiarkan kosong selama penyisipan data, nilai default yang dikonfigurasi untuk field ini selama pembuatan skema field akan digunakan.

var (
    collectionName = "buku"
    )
schema := &entity.Schema{
  CollectionName: collectionName,
  Description:    "Pencarian buku uji coba",
  Fields: []*entity.Field{
    {
      Name:       "book_id",
      DataType:   entity.FieldTypeInt64,
      PrimaryKey: true,
      AutoID:     false,
    },
    {
      Name:       "word_count",
      DataType:   entity.FieldTypeInt64,
      PrimaryKey: false,
      AutoID:     false,
    },
    {
      Name:     "book_intro",
      DataType: entity.FieldTypeFloatVector,
      TypeParams: map[string]string{
          "dim": "2",
      },
    },
  },
  EnableDynamicField: true
}

Tipe Parameter Deskripsi Opsi
entity.Schema CollectionName Nama koleksi yang akan dibuat Tidak ada
Description Deskripsi koleksi yang akan dibuat Tidak ada
AutoID Sakelar yang digunakan untuk mengaktifkan atau menonaktifkan pemberian ID otomatis (kunci utama) True atau False
Fields Skema dari field-field dalam koleksi yang akan dibuat. Untuk informasi lebih lanjut, lihat skema Tidak ada
EnableDynamicField Apakah mengaktifkan skema dinamis. Untuk informasi lebih lanjut tentang skema dinamis, lihat Panduan Pengguna Skema Dinamis dan Manajemen Koleksi Tidak ada
entity.Field Name Nama field yang akan dibuat Tidak ada
PrimaryKey Apakah field ini adalah kunci utama. Diperlukan untuk field kunci utama Tidak ada
AutoID Apakah nilai field diinkrementasi secara otomatis. Diperlukan untuk field kunci utama Tidak ada
Description Deskripsi field Tidak ada
DataType Tipe data dari field yang akan dibuat Untuk field kunci utama: - entity.FieldTypeInt64(numpy.int64) - entity.FieldTypeVarChar(VARCHAR) Untuk field skalar: - entity.FieldTypeBool(Boolean) - entity.FieldTypeInt8(numpy.int8) - entity.FieldTypeInt16(numpy.int16) - entity.FieldTypeInt32(numpy.int32) - entity.FieldTypeInt64(numpy.int64) - entity.FieldTypeFloat(numpy.float32) - entity.FieldTypeDouble(numpy.double) - entity.FieldTypeVarChar(VARCHAR) Untuk field vektor: - entity.FieldTypeBinaryVector (Vektor biner) - entity.FieldTypeFloatVector (Vektor Floating)
TypeParams Pemetaan ke string yang mengatur parameter untuk tipe data spesifik Tidak ada
IndexParams Pemetaan ke string yang mengatur parameter indeks koleksi Tidak ada
IsDynamic Apakah field ini mengaktifkan skema dinamis Tidak ada
IsPartitionKey Apakah field ini bertindak sebagai kunci partisi Tidak ada

Membuat sebuah koleksi berdasarkan struktur yang telah ditentukan

Selanjutnya, buat sebuah koleksi menggunakan skema yang telah ditentukan.

err = milvusClient.CreateCollection(
    context.Background(), // ctx
    schema,
    2, // shardNum
)
if err != nil {
    log.Fatal("Gagal membuat koleksi: ", err.Error())
}
Parameter Deskripsi Opsi
ctx Konteks untuk mengendalikan proses panggilan API Tidak ada
shardNum Jumlah shard dalam koleksi yang akan dibuat [1,16]

Pembatasan Koleksi

Konfigurasi Sumber Daya

Fitur Batas Maksimum
Panjang nama koleksi 255 karakter
Jumlah partisi dalam koleksi 4.096
Jumlah bidang 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.
  • Jenis data dari default_value harus sama dengan jenis data yang ditentukan dalam dtype, jika tidak, kesalahan mungkin terjadi.
  • Jika auto_id digunakan, tidak diizinkan untuk mengatur semua sisa bidang menggunakan nilai default. Dengan kata lain, saat melakukan operasi insert atau update, Anda perlu menentukan nilai untuk setidaknya satu bidang, jika tidak, kesalahan mungkin terjadi.

Periksa apakah sebuah koleksi ada

collExists, err := milvusClient.HasCollection(ctx, collectionName)
if err != nil {
    log.Fatal("Gagal memeriksa apakah koleksi ada: ", err.Error())
}

Hapus sebuah koleksi

_ = milvusClient.DropCollection(ctx, collectionName)

Query semua koleksi

collections, err := milvusClient.ListCollections(ctx)