すべてのプロダクト
Search
ドキュメントセンター

DashVector:ドキュメントの更新

最終更新日:Mar 12, 2026

Python SDK を使用して、DashVector コレクション内の既存のドキュメントを更新します。

重要
  1. 更新対象のドキュメントの ID が存在しない場合、更新操作は無効です。

  2. 一部のフィールドのみを更新した場合、残りのフィールドはデフォルトで None に設定されます。

前提条件

開始する前に、以下をご確認ください:

API シグネチャ

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

用例

説明
  1. YOUR_API_KEYYOUR_CLUSTER_ENDPOINT を実際の認証情報に置き換えてください。

  2. quickstart という名前のコレクションを作成します。詳細については、「コレクションの作成」の「用例」セクションをご参照ください。

すべての用例で、以下のクライアント設定を共有します:

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

単一ドキュメントの更新

ドキュメントを更新する最も簡単な方法は、(id, vector) タプルを使用することです:

# タプル (id, vector) を使用して更新
ret = collection.update(
    ('2', [0.1, 0.1, 0.1, 0.1])
)

または、Doc オブジェクトを使用して、より明示的にコントロールすることもできます:

# Doc オブジェクトを使用して更新
ret = collection.update(
    Doc(
        id='1',
        vector=[0.1, 0.2, 0.3, 0.4]
    )
)

# 更新が成功したことを確認
assert ret

フィールドを持つドキュメントの更新

fields 辞書を渡して、ベクターと一緒にメタデータを更新します。フィールドは、コレクションスキーマで事前定義することも、スキーマフリーフィールドとして動的に追加することもできます:

# Doc オブジェクトを使用してベクターとフィールドを更新します
ret = collection.update(
    Doc(
        id='3',
        vector=np.random.rand(4),
        fields={
            # 事前定義済みフィールド(型はコレクションのスキーマと一致する必要があります)
            'name': 'zhangsan', 'weight': 70.0, 'age': 30,
            # スキーマフリーなフィールド(str、int、bool、または float)
            'anykey1': 'str-value', 'anykey2': 1,
            'anykey3': True, 'anykey4': 3.1415926
        }
    )
)

# 同等のタプル形式: (id, ベクター, フィールド)
ret = collection.update(
    ('4', np.random.rand(4), {'foo': 'bar'})
)

複数ドキュメントの一括更新

Doc オブジェクトまたはタプルのリストを渡して、単一の呼び出しで複数のドキュメントを更新します:

# Doc オブジェクトを使用した一括更新
ret = collection.update(
    [
        Doc(id=str(i+5), vector=np.random.rand(4)) for i in range(10)
    ]
)

# タプル (id, vector, fields) を使用した一括更新
ret = collection.update(
    [
        ('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})
    ]
)

# 一括更新が成功したことを確認
assert ret

ドキュメントの非同期更新

async_req=True を設定すると、ブロックせずに更新を実行します。返された future で .get() を呼び出して結果を取得します:

# 非同期の一括更新を送信
ret_future = collection.update(
    [
        Doc(id=str(i+18), vector=np.random.rand(4), fields={'name': 'foo' + str(i)}) for i in range(10)
    ],
    async_req=True
)

# 非同期更新が完了するまでブロック
ret = ret_future.get()

疎ベクトルを持つドキュメントの更新

ret = collection.update(
    Doc(
        id='28',
        vector=[0.1, 0.2, 0.3, 0.4],
        sparse_vector={1: 0.4, 10000: 0.6, 222222: 0.8}
    )
)

リクエストパラメーター

パラメーター

デフォルト

説明

docs

Union[Doc, List[Doc], Tuple, List[Tuple]]

-

更新する 1 つ以上のドキュメント。

partition

Optional[str]

None

ターゲットパーティション名。

async_req

bool

False

非同期実行の場合は True に設定します。

説明
  1. docs パラメーターに関する注意:

    • タプル形式: 要素は (id, vector) または (id, vector, fields) の順序に従う必要があります。タプルは Doc オブジェクトと同等です。

    • フィールド: 各フィールドはキーと値のペアであり、キーは str、値は strintbool、または float です。

      • コレクション作成時にキーが事前定義されている場合、値の型は事前定義された型と一致する必要があります。

      • キーが事前定義されていない場合、値はサポートされている任意の型にすることができます。詳細については、「スキーマフリー」をご参照ください。

レスポンス

DashVectorResponse オブジェクトを返します:

パラメーター

説明

用例

code

int

ステータスコード。詳細については、「ステータスコード」をご参照ください。

0

message

str

結果メッセージ。

success

request_id

str

一意のリクエスト ID。

19215409-ea66-4db9-8764-26ce2eb5bb99