全部产品
Search
文档中心

DashVector:Masukkan dokumen

更新时间:Mar 12, 2026

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:

Definisi API

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

Contoh

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')
Catatan

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 ret

Masukkan 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

ParameterTipeDefaultDeskripsi
docsUnion[Doc, List[Doc], Tuple, List[Tuple]]WajibSatu atau beberapa dokumen untuk dimasukkan
partitionOptional[str]NoneNama partisi target
async_reqboolFalseAktifkan 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 menerima str, int, bool, atau float.

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

PropertiTipeDeskripsiContoh
codeintKode status. 0 menunjukkan keberhasilan. Lihat Kode status.0
messagestrPesan hasilsuccess
request_idstrPengidentifikasi unik permintaan19215409-ea66-4db9-8764-26ce2eb5bb99