全部产品
Search
文档中心

DashVector:Menyisipkan atau memperbarui dokumen

更新时间:Mar 11, 2026

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:

Definisi API

Collection.upsert(
    docs: Union[Doc, List[Doc], Tuple, List[Tuple]],
    partition: Optional[str] = None,
    async_req: False
) -> DashVectorResponse

Contoh

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:

PlaceholderDeskripsi
YOUR_API_KEYKunci API untuk otentikasi
YOUR_CLUSTER_ENDPOINTURL 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 ret

Upsert 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

ParameterTipeDefaultDeskripsi
docsUnion[Doc, List[Doc], Tuple, List[Tuple]]-Satu atau beberapa dokumen untuk di-upsert. Wajib diisi.
partitionOptional[str]NoneNama partisi target.
async_reqboolFalseAktifkan 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, atau float.

  • 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:

ParameterTipeDeskripsiContoh
codeintKode status. 0 menunjukkan keberhasilan. Lihat Kode status.0
messagestrPesan hasil.success
request_idstrIdentifier unik permintaan.19215409-ea66-4db9-8764-26ce2eb5bb99