Operasi upsert menyisipkan dokumen baru ke dalam koleksi jika ID tersebut belum ada. Jika ID sudah ada, operasi pembaruan akan dilakukan sebagai gantinya.
Jika tidak ada Doc ID yang ditentukan, DashVector akan menghasilkan satu secara otomatis dan mengembalikannya dalam respons.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Sebuah cluster
Sebuah API key
Versi terbaru dari DashVector SDK
Definisi API
Collection.upsert(
docs: Union[Doc, List[Doc], Tuple, List[Tuple]],
partition: Optional[str] = None,
async_req: False
) -> DashVectorResponseContoh
Semua contoh berikut menggunakan pengaturan client dan collection berikut:
import dashvector
from dashvector import Doc
import numpy as np
# Ganti dengan kredensial aktual Anda
client = dashvector.Client(
api_key='YOUR_API_KEY',
endpoint='YOUR_CLUSTER_ENDPOINT'
)
# Gunakan koleksi bernama 'quickstart' yang sudah ada.
# Untuk membuatnya, lihat: https://www.alibabacloud.com/help/en/vrs/latest/new-collection#hivl6
collection = client.get(name='quickstart')Ganti placeholder berikut dengan nilai Anda:
| Placeholder | Deskripsi |
|---|---|
YOUR_API_KEY | Kunci API untuk otentikasi |
YOUR_CLUSTER_ENDPOINT | URL Endpoint Kluster |
Upsert satu dokumen
# Upsert menggunakan objek Doc
ret = collection.upsert(
Doc(
id='1',
vector=[0.1, 0.2, 0.3, 0.4]
)
)
assert ret
# Upsert menggunakan tuple (singkatan)
ret = collection.upsert(
('2', [0.1, 0.1, 0.1, 0.1]) # (id, vector)
)Upsert dokumen dengan fields
# Upsert dengan field yang telah didefinisikan dan field bebas skema
ret = collection.upsert(
Doc(
id='3',
vector=np.random.rand(4),
fields={
# Field yang telah didefinisikan (tipe harus sesuai skema koleksi)
'name': 'zhangsan', 'weight': 70.0, 'age': 30,
# Field bebas skema (str, int, bool, atau float)
'anykey1': 'str-value', 'anykey2': 1,
'anykey3': True, 'anykey4': 3.1415926
}
)
)
# Upsert dengan fields menggunakan tuple
ret = collection.upsert(
('4', np.random.rand(4), {'foo': 'bar'}) # (id, vector, fields)
)Upsert beberapa dokumen
# Upsert batch 10 dokumen menggunakan objek Doc
ret = collection.upsert(
[
Doc(id=str(i+5), vector=np.random.rand(4)) for i in range(10)
]
)
# Upsert batch 3 dokumen menggunakan tuple
ret = collection.upsert(
[
('15', [0.2, 0.7, 0.8, 1.3], {'age': 20}),
('16', [0.3, 0.6, 0.9, 1.2], {'age': 30}),
('17', [0.4, 0.5, 1.0, 1.1], {'age': 40})
] # List[(id, vector, fields)]
)
assert retUpsert dokumen secara asinkron
Atur async_req=True untuk mengirim upsert sebagai panggilan non-blocking. Panggil .get() pada future yang dikembalikan untuk mengambil hasilnya.
# Upsert 10 dokumen secara asinkron
ret_funture = collection.upsert(
[
Doc(id=str(i+18), vector=np.random.rand(4), fields={'name': 'foo' + str(i)}) for i in range(10)
],
async_req=True
)
# Blokir hingga operasi selesai
ret = ret_funture.get()Upsert dokumen dengan sparse vector
Berikan dictionary sparse_vector yang memetakan indeks ke nilai:
ret = collection.upsert(
Doc(
id='28',
vector=[0.1, 0.2, 0.3, 0.4],
sparse_vector={1: 0.4, 10000: 0.6, 222222: 0.8}
)
)Parameter permintaan
| Parameter | Tipe | Default | Deskripsi |
|---|---|---|---|
docs | Union[Doc, List[Doc], Tuple, List[Tuple]] | - | Satu atau beberapa dokumen untuk di-upsert. Wajib diisi. |
partition | Optional[str] | None | Nama partisi target. |
async_req | bool | False | Aktifkan mode asinkron. |
Format tuple:
Ketika menggunakan tuple alih-alih objek Doc, elemen-elemennya harus mengikuti urutan berikut: (id, vector) atau (id, vector, fields).
Batasan field:
Setiap field dalam objek Doc merupakan pasangan kunci-nilai di mana:
Kuncinya harus berupa
str.Nilainya harus berupa
str,int,bool, ataufloat.Jika kunci telah didefinisikan saat pembuatan koleksi, tipe nilainya harus sesuai dengan tipe yang telah didefinisikan.
Kunci yang tidak didefinisikan sebelumnya bersifat schema-free dan menerima semua tipe nilai yang didukung.
Parameter respons
Metode ini mengembalikan objek DashVectorResponse:
| Parameter | Tipe | Deskripsi | Contoh |
|---|---|---|---|
code | int | Kode status. 0 menunjukkan keberhasilan. Lihat Kode status. | 0 |
message | str | Pesan hasil. | success |
request_id | str | Identifier unik permintaan. | 19215409-ea66-4db9-8764-26ce2eb5bb99 |