全部产品
Search
文档中心

DashVector:Schema Free

更新时间:Mar 12, 2026

DashVector dirancang tanpa skema (schema-free). Saat Anda menyisipkan, memperbarui, atau melakukan upsert dokumen, cukup berikan pasangan kunci-nilai apa pun dalam parameter fields. Tidak diperlukan definisi skema di muka.

collection.insert(
    Doc(
        id='1',
        vector=np.random.rand(4),
        fields={
            'name': 'zhangsan',
            'weight': 70.0,
            'age': 30,
            'anykey1': 'anyvalue',
            'anykey2': 1,
            'anykey3': True,
            'anykey4': 3.1415926
            ... ...
        }
    )
)
Catatan

Setiap bidang tambahan mengonsumsi sumber daya memori dan ruang disk. Sertakan hanya bidang yang diperlukan untuk kebutuhan filtering atau pengambilan Anda.

Tipe data yang didukung

Bidang menerima empat tipe data Python:

TypeDescriptionConstraints
strNilai string--
floatBilangan floating-point--
intNilai integerHanya integer bertanda 32-bit: -2.147.483.648 hingga 2.147.483.647
boolNilai BooleanTrue atau False
Penting

Tipe int Python mendukung presisi arbitrer, tetapi DashVector hanya menerima integer bertanda 32-bit (-2.147.483.648 hingga 2.147.483.647). Nilai di luar rentang ini akan menyebabkan error overflow.

Filter berdasarkan bidang

Gunakan pasangan kunci-nilai bidang dalam ekspresi filter untuk mempersempit hasil pencarian:

ret = collection.query(
    vector=[0.1, 0.2, 0.3, 0.4],
    filter='(age > 18 and anykey2 = 1) or (name like "zhang%" and anykey3 = false)'
)
Catatan

Semakin banyak bidang dan semakin kompleks ekspresi filter, semakin tinggi penggunaan CPU dan latensi kueri.

Kapan harus menentukan skema bidang di awal

Meskipun DashVector secara default bersifat schema-free, menentukan skema bidang saat membuat koleksi meningkatkan performa kueri, mengurangi overhead penyimpanan, dan memungkinkan validasi input.

ret = client.create(
    name='complex',
    dimension=4,
    fields_schema={'name': str, 'weight': float, 'age': int}
)

Manfaat bidang yang telah ditentukan sebelumnya

BenefitDescription
Faster filteringConditional filtering pada bidang yang telah ditentukan menggunakan lebih sedikit CPU dan mengembalikan hasil lebih cepat dibandingkan filtering pada bidang ad-hoc.
Lower storage overheadBidang yang telah ditentukan hanya menyimpan nilai. Bidang ad-hoc menyimpan kunci dan nilai, sehingga mengonsumsi lebih banyak memori dan disk space.
Filter pre-validationDashVector memvalidasi sintaks filter terhadap tipe bidang yang telah ditentukan dan mengembalikan error jika terjadi ketidaksesuaian tipe. Tanpa skema, validasi tipe tidak tersedia.

Pendekatan yang direkomendasikan

Tentukan di awal bidang-bidang yang muncul di sebagian besar dokumen dan yang sering Anda gunakan untuk filtering. Gunakan bidang ad-hoc saat penyisipan untuk atribut yang hanya berlaku pada subset dokumen tertentu.