Masukkan satu atau beberapa dokumen ke dalam koleksi DashVector menggunakan Python SDK.
Jika ID dokumen sudah ada di dalam koleksi, operasi insert akan melewatkan dokumen tersebut tanpa menimpanya. Untuk memperbarui dokumen yang sudah ada, gunakan metode upsert sebagai gantinya. Jika Anda tidak menyertakan ID dokumen, DashVector akan secara otomatis menghasilkan ID dan mengembalikannya dalam respons.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Kluster DashVector. Untuk detailnya, lihat Buat kluster.
Kunci API. Untuk detailnya, lihat Kelola kunci API.
DashVector SDK terbaru untuk Python. Untuk detailnya, lihat Instal DashVector SDK.
Definisi API
Collection.insert(
docs: Union[Doc, List[Doc], Tuple, List[Tuple]],
partition: Optional[str] = None,
async_req: False
) -> DashVectorResponseContoh
Semua contoh menggunakan koleksi bernama quickstart yang sudah ada. Ganti YOUR_API_KEY dengan kunci API Anda dan YOUR_CLUSTER_ENDPOINT dengan titik akhir kluster Anda sebelum menjalankan kode.
import dashvector
from dashvector import Doc
import numpy as np
client = dashvector.Client(
api_key='YOUR_API_KEY',
endpoint='YOUR_CLUSTER_ENDPOINT'
)
collection = client.get(name='quickstart')Buat koleksi quickstart sebelum menjalankan contoh-contoh ini. Untuk detailnya, lihat bagian contoh dalam Buat koleksi.
Masukkan satu dokumen
# Masukkan dokumen menggunakan objek Doc
ret = collection.insert(
Doc(
id='1',
vector=[0.1, 0.2, 0.3, 0.4]
)
)
assert ret
# Singkatan: gunakan tuple alih-alih objek Doc
ret = collection.insert(
('2', [0.1, 0.1, 0.1, 0.1]) # (id, vector)
)Masukkan dokumen dengan bidang
Lampirkan metadata sebagai pasangan kunci-nilai melalui parameter fields. Bidang yang ditentukan saat pembuatan koleksi harus sesuai dengan tipe yang telah ditetapkan sebelumnya. Bidang tambahan bersifat schema-free dan menerima nilai str, int, bool, atau float. Untuk informasi lebih lanjut, lihat Schema-free.
# Masukkan dokumen dengan bidang yang telah ditentukan dan bidang schema-free
ret = collection.insert(
Doc(
id='3',
vector=np.random.rand(4),
fields={
# Bidang yang telah ditentukan (tipe harus sesuai skema koleksi)
# name:str, weight:float, age:int, id:dashvector.long
'name': 'zhangsan', 'weight':70.0, 'age':30, 'id':1234567890,
# Bidang schema-free (tidak perlu pendefinisian awal)
'anykey1': 'str-value', 'anykey2': 1,
'anykey3': True, 'anykey4': 3.1415926
}
)
)
# Singkatan: gunakan tuple dengan fields
ret = collection.insert(
('4', np.random.rand(4), {'foo': 'bar'}) # (id, vector, fields)
)Masukkan beberapa dokumen
# Masukkan batch 10 dokumen menggunakan objek Doc
ret = collection.insert(
[
Doc(id=str(i+5), vector=np.random.rand(4)) for i in range(10)
]
)
# Masukkan batch menggunakan tuple dengan fields
ret = collection.insert(
[
('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 retMasukkan dokumen secara asinkron
Atur async_req=True untuk melakukan penyisipan non-blocking. Panggil .get() pada future yang dikembalikan untuk mengambil hasilnya.
# Masukkan 10 dokumen secara asinkron
ret_funture = collection.insert(
[
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 penyisipan asinkron selesai
ret = ret_funture.get()Masukkan dokumen dengan vektor jarang
Gunakan parameter sparse_vector untuk menyimpan representasi sparse bersamaan dengan vektor padat.
ret = collection.insert(
Doc(
id='28',
vector=[0.1, 0.2, 0.3, 0.4],
sparse_vector={1:0.4, 10000:0.6, 222222:0.8}
)
)Parameter
Parameter permintaan
| Parameter | Tipe | Default | Deskripsi |
|---|---|---|---|
docs | Union[Doc, List[Doc], Tuple, List[Tuple]] | Wajib | Satu atau beberapa dokumen untuk dimasukkan |
partition | Optional[str] | None | Nama partisi target |
async_req | bool | False | Aktifkan mode asinkron |
Catatan parameter:
Format tuple: Elemen harus mengikuti urutan
(id, vector)atau(id, vector, fields). Tuple setara dengan objek Doc.Kunci dan nilai bidang: Setiap kunci bidang harus berupa
str. Nilainya menerimastr,int,bool, ataufloat.Jika kunci bidang telah ditentukan saat pembuatan koleksi, nilainya harus sesuai dengan tipe yang telah ditentukan.
Jika kunci bidang tidak ditentukan sebelumnya, bidang tersebut dianggap sebagai bidang schema-free dan menerima semua tipe nilai yang didukung.
Untuk informasi lebih lanjut tentang bidang yang telah ditentukan, lihat Schema-free.
Respons
Metode ini mengembalikan objek DashVectorResponse dengan properti berikut:
| Properti | Tipe | Deskripsi | Contoh |
|---|---|---|---|
code | int | Kode status. 0 menunjukkan keberhasilan. Lihat Kode status. | 0 |
message | str | Pesan hasil | success |
request_id | str | Pengidentifikasi unik permintaan | 19215409-ea66-4db9-8764-26ce2eb5bb99 |