全部产品
Search
文档中心

DashVector:Pengambilan terfilter dengan DashVector

更新时间:Mar 12, 2026

Pencarian kemiripan vektor saja jarang memadai untuk kebutuhan dunia nyata. Aplikasi umumnya perlu mempersempit hasil berdasarkan metadata—misalnya, hanya mengembalikan produk dalam rentang harga tertentu atau dokumen dari kategori spesifik. Fitur filtering kondisional DashVector memungkinkan Anda menyambungkan bidang metadata ke vektor dan meneruskan ekspresi filter saat melakukan kueri, sehingga hanya vektor yang memenuhi kondisi Anda yang dimasukkan dalam hasil kemiripan.

Mulai cepat

Contoh berikut melakukan kueri pada koleksi untuk mencari laki-laki berusia di atas 18 tahun yang memiliki bobot lebih dari 65 kg:

docs = collection.query(
    [0.1, 0.1, 0.1, 0.1],
    topk=10,
    filter='age > 18 and weight > 65.0 and male = true'
)

Parameter filter menerima ekspresi boolean yang dibangun dari operator perbandingan, string, dan logika. Untuk sintaks lengkapnya, lihat Sintaks Ekspresi Filter.

Prasyarat

Sebelum memulai, pastikan Anda telah memiliki:

  • Kunci API DashVector dan titik akhir kluster

  • Koleksi bernama quickstart. Untuk petunjuk penyiapan, lihat bagian "Contoh" di Buat Koleksi

Sisipkan dokumen dengan bidang metadata

Sisipkan dokumen ke dalam koleksi quickstart. Setiap dokumen mencakup ID, vektor berdimensi 4, dan sekumpulan bidang metadata:

import dashvector
import numpy as np

client = dashvector.Client(
    api_key='<your-api-key>',
    endpoint='<your-cluster-endpoint>'
)
collection = client.get(name='quickstart')

ret = collection.insert([
    ('1', np.random.rand(4), {'name': 'alice', 'age': 10, 'male': True, 'weight': 35.0}),
    ('2', np.random.rand(4), {'name': 'bob', 'age': 20, 'male': False, 'weight': 45.0}),
    ('3', np.random.rand(4), {'name': 'carol', 'age': 30, 'male': True, 'weight': 75.0}),
    ('4', np.random.rand(4), {'name': 'dave', 'age': 5, 'male': False, 'weight': 18.0}),
    ('5', np.random.rand(4), {'name': 'eve', 'age': 40, 'male': True, 'weight': 70.0})
])
assert ret

Ganti placeholder berikut dengan nilai aktual Anda:

PlaceholderDeskripsi
<your-api-key>Kunci API DashVector Anda
<your-cluster-endpoint>URL titik akhir kluster Anda
Catatan

Koleksi quickstart dibuat dengan tiga bidang yang telah ditentukan: name (str), weight (float), dan age (int). Karena DashVector bersifat schema-free, Anda dapat menambahkan bidang yang tidak didefinisikan saat pembuatan koleksi—seperti bidang male di atas—saat menyisipkan dokumen.

Lakukan kueri dengan ekspresi filter

Teruskan string filter ke collection.query() untuk membatasi hasil. Contoh berikut mencari laki-laki berusia di atas 18 tahun yang memiliki bobot lebih dari 65 kg:

import dashvector

client = dashvector.Client(
    api_key='<your-api-key>',
    endpoint='<your-cluster-endpoint>'
)
collection = client.get(name='quickstart')

# Filter: laki-laki di atas 18 tahun dengan bobot lebih dari 65 kg
docs = collection.query(
    [0.1, 0.1, 0.1, 0.1],
    topk=10,
    filter='age > 18 and weight > 65.0 and male = true'
)
print(docs)

Sintaks ekspresi filter

Ekspresi filter terdiri dari satu atau beberapa kondisi yang digabungkan dengan operator logika. Setiap kondisi mengikuti pola:

<field> <operator> <value>

Operator perbandingan

OperatorDeskripsiTipe yang didukungContohCocok ketika
<Kurang dariint, floatage < 10age kurang dari 10
<=Kurang dari atau sama denganint, floatweight <= 60.0weight paling banyak 60,0
=Sama denganint, float, bool, strname = 'alice'name sama dengan alice
!=Tidak sama denganint, float, bool, strmale != truemale tidak bernilai true
>=Lebih dari atau sama denganint, floatage >= 10age minimal 10
>Lebih dariint, floatweight > 60.0weight melebihi 60,0

Operator string

Gunakan operator like untuk pencocokan awalan pada bidang bertipe str.

OperatorDeskripsiContohCocok ketika
likePencocokan awalanname like 'al%'name diawali dengan al

Operator logika

Gabungkan beberapa kondisi dengan and atau or.

OperatorDeskripsiContohCocok ketika
andKedua kondisi harus bernilai trueage > 18 and male = trueage melebihi 18 dan male bernilai true
orSetidaknya satu kondisi bernilai trueage < 10 or age > 60age kurang dari 10 atau lebih dari 60

Gunakan tanda kurung () untuk mengatur urutan evaluasi. Contohnya:

age > 18 and (weight > 65.0 or male = true)

Ekspresi ini pertama-tama mengevaluasi (weight > 65.0 or male = true), lalu menggabungkan hasilnya dengan age > 18.

Tipe bidang yang didukung

Bidang DashVector mendukung tipe data Python berikut:

TipeDeskripsiRentang
strString--
intIntegerBertanda 32-bit: -2.147.483.648 hingga 2.147.483.647
floatBilangan titik mengambang--
boolBooleanTrue atau False
Penting

Integer Python memiliki ukuran tak terbatas, tetapi DashVector hanya mendukung integer bertanda 32-bit. Pastikan nilai integer berada dalam rentang -2.147.483.648 hingga 2.147.483.647 untuk menghindari overflow.