🚀 Coba Zilliz Cloud, Milvus yang sepenuhnya terkelola, secara gratis—rasakan performa 10x lebih cepat! Coba Sekarang>>

milvus-logo
LFAI
Beranda
  • Panduan Pengguna
  • Home
  • Docs
  • Panduan Pengguna

  • Bidang Skema & Data

  • Penjelasan Skema

Mengelola Skema

Topik ini memperkenalkan skema di Milvus. Skema digunakan untuk mendefinisikan properti koleksi dan field-field di dalamnya.

Skema bidang

Skema field adalah definisi logis dari sebuah field. Ini adalah hal pertama yang perlu Anda definisikan sebelum mendefinisikan skema koleksi dan mengelola koleksi.

Milvus hanya mendukung satu field kunci utama dalam sebuah koleksi.

Properti skema field

Properti Deskripsi Catatan
name Nama bidang dalam koleksi yang akan dibuat Tipe data: String.
Wajib
dtype Tipe data dari field tersebut Wajib
description Deskripsi bidang Tipe data: String.
Opsional
is_primary Apakah akan menetapkan bidang sebagai bidang kunci utama atau tidak Tipe data: Boolean (true atau false).
Wajib untuk bidang kunci utama
auto_id (Wajib untuk bidang kunci utama) Beralih untuk mengaktifkan atau menonaktifkan alokasi ID (kunci utama) otomatis. True atau False
max_length (Wajib untuk bidang VARCHAR) Panjang byte maksimum untuk string yang diizinkan untuk disisipkan. Perhatikan bahwa karakter multibyte (misalnya, karakter Unicode) dapat menempati lebih dari satu byte, jadi pastikan panjang byte string yang disisipkan tidak melebihi batas yang ditentukan. [1, 65,535]
dim Dimensi vektor Tipe data: Bilangan bulat ∈[1, 32768].
Wajib untuk bidang vektor yang padat. Hilangkan untuk bidang vektor yang jarang.
is_partition_key Apakah bidang ini merupakan bidang kunci-partisi. Tipe data: Boolean (true atau false).

Membuat skema bidang

Untuk mengurangi kerumitan dalam penyisipan data, Milvus mengizinkan Anda untuk menentukan nilai default untuk setiap field skalar selama pembuatan skema field, tidak termasuk field kunci utama. Hal ini mengindikasikan bahwa jika Anda mengosongkan sebuah field ketika memasukkan data, nilai default yang Anda tentukan untuk field tersebut akan berlaku.

Membuat skema bidang biasa:

from pymilvus import DataType, FieldSchema
id_field = FieldSchema(name="id", dtype=DataType.INT64, is_primary=True, description="primary id")
age_field = FieldSchema(name="age", dtype=DataType.INT64, description="age")
embedding_field = FieldSchema(name="embedding", dtype=DataType.FLOAT_VECTOR, dim=128, description="vector")

# The following creates a field and use it as the partition key
position_field = FieldSchema(name="position", dtype=DataType.VARCHAR, max_length=256, is_partition_key=True)

Membuat skema bidang dengan nilai bidang default:

from pymilvus import DataType, FieldSchema

fields = [
  FieldSchema(name="id", dtype=DataType.INT64, is_primary=True),
  # configure default value `25` for field `age`
  FieldSchema(name="age", dtype=DataType.INT64, default_value=25, description="age"),
  embedding_field = FieldSchema(name="embedding", dtype=DataType.FLOAT_VECTOR, dim=128, description="vector")
]

Tipe data yang didukung

DataType menentukan jenis data yang berisi bidang. Bidang yang berbeda mendukung tipe data yang berbeda.

  • Mendukung bidang kunci utama:

    • INT64: numpy.int64
    • VARCHAR: VARCHAR
  • Mendukung bidang skalar:

    • BOOL: Boolean (true atau false)
    • INT8: numpy.int8
    • INT16: numpy.int16
    • INT32: numpy.int32
    • INT64: numpy.int64
    • FLOAT: numpy.float32
    • DOUBLE: numpy.double
    • VARCHAR: VARCHAR
    • JSON: JSON
    • Larik Larik

    JSON sebagai tipe data gabungan tersedia. Bidang JSON terdiri dari pasangan kunci-nilai. Setiap kunci adalah string, dan nilai dapat berupa angka, string, nilai boolean, larik, atau daftar. Untuk detailnya, lihat JSON: tipe data baru.

  • Mendukung bidang vektor:

    • BINARY_VECTOR: Menyimpan data biner sebagai urutan 0 dan 1, yang digunakan untuk representasi fitur yang ringkas dalam pemrosesan gambar dan pengambilan informasi.
    • FLOAT_VECTOR: Menyimpan angka floating-point 32-bit, yang biasa digunakan dalam komputasi ilmiah dan pembelajaran mesin untuk merepresentasikan bilangan real.
    • FLOAT16_VECTOR: Menyimpan angka floating-point setengah presisi 16-bit, digunakan dalam pembelajaran mendalam dan komputasi GPU untuk efisiensi memori dan bandwidth.
    • BFLOAT16_VECTOR: Menyimpan angka floating-point 16-bit dengan presisi yang berkurang tetapi rentang eksponen yang sama dengan Float32, populer dalam deep learning untuk mengurangi kebutuhan memori dan komputasi tanpa memengaruhi akurasi secara signifikan.
    • SPARSE_FLOAT_VECTOR: Menyimpan daftar elemen bukan nol dan indeks yang sesuai, yang digunakan untuk merepresentasikan vektor jarang. Untuk informasi lebih lanjut, lihat Vektor Jarang.

    Milvus mendukung beberapa bidang vektor dalam sebuah koleksi. Untuk informasi lebih lanjut, lihat Pencarian Hibrid.

Skema koleksi

Skema koleksi adalah definisi logis dari sebuah koleksi. Biasanya Anda perlu mendefinisikan skema bidang sebelum mendefinisikan skema koleksi dan mengelola koleksi.

Properti skema koleksi

Properti Deskripsi Catatan
field Bidang dalam koleksi yang akan dibuat Wajib
description Deskripsi koleksi Tipe data: String.
Opsional
partition_key_field Nama bidang yang dirancang untuk bertindak sebagai kunci partisi. Tipe data: String.
Opsional
enable_dynamic_field Apakah akan mengaktifkan skema dinamis atau tidak Tipe data: Boolean (true atau false).
Opsional, nilai defaultnya adalah False.
Untuk detail mengenai skema dinamis, lihat Skema Dinam is dan panduan pengguna untuk mengelola koleksi.

Membuat skema koleksi

Tentukan skema bidang sebelum menentukan skema koleksi.
from pymilvus import DataType, FieldSchema, CollectionSchema
id_field = FieldSchema(name="id", dtype=DataType.INT64, is_primary=True, description="primary id")
age_field = FieldSchema(name="age", dtype=DataType.INT64, description="age")
embedding_field = FieldSchema(name="embedding", dtype=DataType.FLOAT_VECTOR, dim=128, description="vector")

# Enable partition key on a field if you need to implement multi-tenancy based on the partition-key field
position_field = FieldSchema(name="position", dtype=DataType.VARCHAR, max_length=256, is_partition_key=True)

# Set enable_dynamic_field to True if you need to use dynamic fields. 
schema = CollectionSchema(fields=[id_field, age_field, embedding_field], auto_id=False, enable_dynamic_field=True, description="desc of a collection")

Buat koleksi dengan skema yang ditentukan:

from pymilvus import Collection, connections
conn = connections.connect(host="127.0.0.1", port=19530)
collection_name1 = "tutorial_1"
collection1 = Collection(name=collection_name1, schema=schema, using='default', shards_num=2)
  • Anda dapat menentukan nomor pecahan dengan shards_num.
  • Anda dapat menentukan server Milvus tempat Anda ingin membuat koleksi dengan menentukan alias di using.
  • Anda dapat mengaktifkan fitur kunci partisi pada bidang dengan mengatur is_partition_key ke True pada bidang jika Anda perlu mengimplementasikan multi-tenancy berbasis kunci partisi.
  • Anda dapat mengaktifkan skema dinamis dengan mengatur enable_dynamic_field ke True pada skema koleksi jika Anda perlu mengaktifkan field dinamis.


Anda juga dapat membuat koleksi dengan Collection.construct_from_dataframe, yang secara otomatis membuat skema koleksi dari DataFrame dan membuat koleksi.

from pymilvus import Collection
import pandas as pd
df = pd.DataFrame({
    "id": [i for i in range(nb)],
    "age": [random.randint(20, 40) for i in range(nb)],
    "embedding": [[random.random() for _ in range(dim)] for _ in range(nb)],
    "position": "test_pos"
})

collection, ins_res = Collection.construct_from_dataframe(
    'my_collection',
    df,
    primary_field='id',
    auto_id=False
    )

Selanjutnya

Coba Milvus yang Dikelola secara Gratis

Zilliz Cloud bebas masalah, didukung oleh Milvus dan 10x lebih cepat.

Mulai
Umpan balik

Apakah halaman ini bermanfaat?