Collection.query() mencari dokumen dalam koleksi DashVector yang mirip dengan vektor tertentu atau vektor dari dokumen yang telah disimpan. Anda juga dapat mengambil dokumen hanya berdasarkan filter metadata.
Mode kueri
Collection.query() mendukung lima mode kueri tergantung pada parameter yang diberikan:
| Mode | Parameter wajib | Deskripsi |
|---|---|---|
| Vector search | vector | Temukan dokumen yang paling dekat dengan vektor padat tertentu |
| Primary key search | id | Temukan dokumen yang paling dekat dengan vektor dari dokumen yang sudah ada |
| Filtered vector search | vector atau id + filter | Gabungkan pencarian kemiripan dengan penyaringan metadata |
| Hybrid search | vector + sparse_vector | Gabungkan vektor padat dan vektor jarang untuk pencarian semantik yang memperhatikan kata kunci |
| Match query | filter only | Ambil dokumen berdasarkan filter metadata tanpa peringkat kemiripan |
Jika baikvectormaupunidtidak ditentukan,query()melakukan match query hanya menggunakan filter kondisional.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Kluster DashVector. Lihat Buat kluster
Kunci API. Lihat Kelola kunci API
SDK DashVector (versi terbaru). Lihat Instal SDK DashVector
Koleksi yang telah berisi dokumen. Lihat Buat koleksi dan Masukkan dokumen
Signature API
Collection.query(
vector: Optional[Union[List[Union[int, float]], np.ndarray]] = None,
id: Optional[str] = None,
topk: int = 10,
filter: Optional[str] = None,
include_vector: bool = False,
partition: Optional[str] = None,
output_fields: Optional[List[str]] = None,
sparse_vector: Optional[Dict[int, float]] = None,
async_req: False
) -> DashVectorResponseParameter permintaan
| Parameter | Tipe | Bawaan | Deskripsi |
|---|---|---|---|
vector | Optional[Union[List[Union[int, float]], np.ndarray]] | None | Vektor padat untuk pencarian kemiripan. |
id | Optional[str] | None | Kunci primary dari dokumen yang sudah ada. Pencarian menggunakan vektor dokumen tersebut. |
topk | int | 10 | Jumlah maksimum hasil yang dikembalikan, diurutkan berdasarkan kemiripan. |
filter | Optional[str] | None | Filter kondisional menggunakan sintaks klausa WHERE SQL. Lihat Penyaringan kondisional. |
include_vector | bool | False | Apakah data vektor disertakan dalam respons. |
partition | Optional[str] | None | Nama partisi. Membatasi cakupan pencarian ke partisi tertentu. |
output_fields | Optional[List[str]] | None | Bidang yang dikembalikan. Secara bawaan, semua bidang dikembalikan. |
sparse_vector | Optional[Dict[int, float]] | None | Vektor jarang untuk pencarian semantik yang memperhatikan kata kunci. Setiap kunci adalah indeks dimensi, dan setiap nilai adalah bobotnya. |
async_req | bool | False | Apakah mode asinkron diaktifkan. |
Respons
query() mengembalikan objek DashVectorResponse:
| Bidang | Tipe | Deskripsi | Contoh |
|---|---|---|---|
code | int | Kode status. 0 menunjukkan keberhasilan. Lihat Kode status. | 0 |
message | str | Pesan status. | success |
request_id | str | Pengidentifikasi unik permintaan. | 19215409-ea66-4db9-8764-26ce2eb5bb99 |
output | List[<code data-tag="code" class="inline-code___exakR" id="code_d6787a3c">Doc</code>] | Hasil pencarian kemiripan. | -- |
Contoh
Semua contoh di bawah ini menggunakan konfigurasi client berikut. Ganti placeholder dengan nilai aktual Anda:
| Placeholder | Deskripsi |
|---|---|
YOUR_API_KEY | Kunci API Anda dari konsol DashVector |
YOUR_CLUSTER_ENDPOINT | URL titik akhir kluster Anda |
import dashvector
import numpy as np
client = dashvector.Client(
api_key='YOUR_API_KEY',
endpoint='YOUR_CLUSTER_ENDPOINT'
)
# Dapatkan koleksi target
collection = client.get(name='quickstart')Buat koleksi quickstart dan masukkan dokumen sebelum menjalankan contoh-contoh ini. Lihat Buat koleksi dan Masukkan dokumen.Cari berdasarkan vektor
Berikan vektor padat untuk menemukan dokumen yang paling mirip.
ret = collection.query(
vector=[0.1, 0.2, 0.3, 0.4]
)
# Periksa apakah metode query berhasil dipanggil.
if ret:
print('query success')
print(len(ret))
for doc in ret:
print(doc)
print(doc.id)
print(doc.vector)
print(doc.fields)Untuk menyesuaikan set hasil, tentukan topk, output_fields, dan include_vector:
ret = collection.query(
vector=[0.1, 0.2, 0.3, 0.4],
topk=100,
output_fields=['name', 'age'], # Hanya bidang name dan age yang perlu dikembalikan.
include_vector=True
)Cari berdasarkan kunci primary
Gunakan parameter id untuk mencari menggunakan vektor dokumen yang tersimpan, tanpa memberikan nilai vektor secara langsung.
ret = collection.query(
id='1'
)
# Periksa apakah metode query berhasil dipanggil.
if ret:
print('query success')
print(len(ret))
for doc in ret:
print(doc)
print(doc.id)
print(doc.vector)
print(doc.fields)Gabungkan id dengan topk dan output_fields seperti pada pencarian berbasis vektor:
ret = collection.query(
id='1',
topk=100,
output_fields=['name', 'age'], # Hanya bidang name dan age yang perlu dikembalikan.
include_vector=True
)Cari dengan filter kondisional
Tambahkan parameter filter untuk mempersempit hasil berdasarkan metadata. Filter mengikuti sintaks klausa WHERE SQL.
# Lakukan pencarian kemiripan menggunakan vektor atau kunci primary dan filter kondisional.
ret = collection.query(
vector=[0.1, 0.2, 0.3, 0.4], # Tentukan vektor untuk pencarian. Atau, Anda dapat menentukan kunci primary untuk pencarian.
topk=100,
filter='age > 18', # Tentukan filter kondisional untuk melakukan match query pada dokumen yang nilai bidang agenya lebih besar dari 18.
output_fields=['name', 'age'], # Hanya bidang name dan age yang perlu dikembalikan.
include_vector=True
)Tip: Gabungkanfilterdenganidalih-alihvectoruntuk menyaring hasil dari pencarian berbasis kunci primary.
Pencarian hibrida dengan vektor padat dan vektor jarang
Gabungkan vektor padat dengan vektor jarang untuk melakukan pencarian semantik yang memperhatikan kata kunci. Vektor jarang merepresentasikan bobot kata kunci yang melengkapi penyematan padat.
# Lakukan pencarian kemiripan menggunakan vektor padat dan vektor jarang.
ret = collection.query(
vector=[0.1, 0.2, 0.3, 0.4], # Tentukan vektor untuk pencarian.
sparse_vector={1: 0.3, 20: 0.7}
)Lihat Pencarian semantik yang memperhatikan kata kunci untuk detail konfigurasi.
Match query hanya dengan filter
Abaikan baik vector maupun id untuk mengambil dokumen hanya berdasarkan kondisi metadata, tanpa peringkat kemiripan.
# Lakukan match query hanya menggunakan filter kondisional tanpa menentukan vektor atau kunci primary.
ret = collection.query(
topk=100,
filter='age > 18', # Tentukan filter kondisional untuk melakukan match query pada dokumen yang nilai bidang agenya lebih besar dari 18.
output_fields=['name', 'age'], # Hanya bidang name dan age yang perlu dikembalikan.
include_vector=True
)Langkah selanjutnya
Pencarian semantik yang memperhatikan kata kunci — Tingkatkan akurasi pengambilan dengan menggabungkan vektor padat dan vektor jarang.
Penyaringan kondisional — Referensi lengkap sintaks ekspresi filter.