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

DashVector:ドキュメントの挿入

最終更新日:Jan 08, 2025

このトピックでは、Python 用 SDK を使用してコレクションにドキュメントを挿入する方法について説明します。

説明

挿入するドキュメントの ID が既に存在する場合、既存のドキュメントは上書きされず、ドキュメントに対する挿入操作は無効になります。

前提条件

  • クラスターが作成されていること。詳細については、「クラスターの作成」をご参照ください。

  • API キーを取得していること。詳細については、「API キーの管理」をご参照ください。

  • 最新バージョンの SDK がインストールされていること。詳細については、「DashVector SDK のインストール」をご参照ください。

API 定義

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

説明
  1. コードを正しく実行するには、サンプルコードの YOUR_API_KEY を API キーに、YOUR_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')

ドキュメントの挿入

# Doc オブジェクトを使用してドキュメントを挿入します。
ret = collection.insert(
    Doc(
        id='1',
        vector=[0.1, 0.2, 0.3, 0.4]
    )
)
# insert メソッドが正常に呼び出されたかどうかを確認します。
assert ret

# 簡略版:タプルを使用してドキュメントを挿入します。
ret = collection.insert(
    ('2', [0.1, 0.1, 0.1, 0.1])               # (id, vector)
)

フィールドを持つドキュメントの挿入

# ドキュメントを挿入し、関連フィールドの値を指定します。
ret = collection.insert(
    Doc(
        id='3',
        vector=np.random.rand(4),
        fields={
            # コレクションの作成時に事前定義されたフィールドの値を指定します。
            'name': 'zhangsan', 'weight':70.0, 'age':30, 
            # スキーマフリーのフィールドと値を指定します。
            'anykey1': 'str-value', 'anykey2': 1,
            'anykey3': True, 'anykey4': 3.1415926
        }
    )
)

# ドキュメントを挿入し、関連フィールドの値を指定します。
ret = collection.insert(
    ('4', np.random.rand(4), {'foo': 'bar'})  # (id, vector, fields)
)

複数のドキュメントを一度に挿入する

# Doc オブジェクトを使用して、一度に 10 個のドキュメントを挿入します。
ret = collection.insert(
    [
        Doc(id=str(i+5), vector=np.random.rand(4)) for i in range(10)
    ]
)

# 簡略版:タプルを使用して 3 つのドキュメントを挿入します。
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

ドキュメントを非同期に挿入する

# 一度に 10 個のドキュメントを非同期に挿入します。
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
)
# 非同期挿入の結果を待ちます。
ret = ret_funture.get()

スパースベクトルを含むドキュメントを挿入する

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

リクエストパラメーター

パラメーター

タイプ

デフォルト値

説明

docs

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

-

挿入する 1 つ以上のドキュメント。

partition

Optional[str]

None

オプション。パーティションの名前。

async_req

bool

False

オプション。非同期モードを有効にするかどうかを指定します。

説明
  1. docs パラメーターのタイプが Tuple の場合、タプルの要素は (id, vector) または (id, vector, fields) の順序である必要があります。この場合、タプルは Doc オブジェクトと同等です。

  2. Doc オブジェクトの各フィールドは、ユーザー定義のキーと値のペアに設定できます。キーと値のペアでは、キーは str タイプである必要があり、値は str、int、bool、または float タイプにすることができます。

    1. キーがコレクションの作成時に事前定義されている場合、値は事前定義されたタイプである必要があります。

    2. キーがコレクションの作成時に事前定義されていない場合、値は str、int、bool、または float タイプにすることができます。

  3. フィールドの事前定義の詳細については、「スキーマフリー」をご参照ください。

レスポンスパラメーター

説明

DashVectorResponse オブジェクトが返されます。これには、次の表に示すように、操作結果が含まれています。

パラメーター

タイプ

説明

code

int

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

0

message

str

返されたメッセージ。

success

request_id

str

リクエストの一意の ID。

19215409-ea66-4db9-8764-26ce2eb5bb99