Python SDK を使用して、1 つ以上のドキュメントを DashVector コレクションに挿入します。
ドキュメント ID がコレクションにすでに存在する場合、挿入操作はそのドキュメントを上書きせずにスキップします。既存のドキュメントを更新するには、代わりに アップサート メソッドを使用します。ドキュメント ID を省略した場合、DashVector は自動的に ID を生成し、応答で返します。
前提条件
開始する前に、以下を準備してください。
DashVector クラスター。詳細については、「クラスターの作成」をご参照ください。
API キー。詳細については、「API キーの管理」をご参照ください。
最新の Python 用 DashVector SDK。詳細については、「DashVector SDK のインストール」をご参照ください。
API 定義
Collection.insert(
docs: Union[Doc, List[Doc], Tuple, List[Tuple]],
partition: Optional[str] = None,
async_req: False
) -> DashVectorResponse例
すべての例では、既存の quickstart という名前のコレクションを使用します。コードを実行する前に、YOUR_API_KEY をご利用の API キーに、YOUR_CLUSTER_ENDPOINT をご利用のクラスターのエンドポイントに置き換えてください。
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')これらの例を実行する前に、quickstart コレクションを作成してください。詳細については、「コレクションの作成」の例のセクションをご参照ください。
単一ドキュメントの挿入
# Doc オブジェクトを使用したドキュメントの挿入
ret = collection.insert(
Doc(
id='1',
vector=[0.1, 0.2, 0.3, 0.4]
)
)
assert ret
# 省略形: Doc オブジェクトの代わりにタプルを使用
ret = collection.insert(
('2', [0.1, 0.1, 0.1, 0.1]) # (id, vector)
)フィールドを持つドキュメントの挿入
fields パラメーターを介して、メタデータをキーと値のペアとしてアタッチします。コレクション作成時に定義されたフィールドは、事前定義された型と一致する必要があります。追加フィールドはスキーマフリーであり、str、int、bool、または float の値を受け入れます。詳細については、「スキーマフリー」をご参照ください。
# 事前定義フィールドとスキーマフリーフィールドを持つドキュメントの挿入
ret = collection.insert(
Doc(
id='3',
vector=np.random.rand(4),
fields={
# 事前定義フィールド (型はコレクションスキーマと一致する必要があります)
# name:str, weight:float, age:int, id:dashvector.long
'name': 'zhangsan', 'weight':70.0, 'age':30, 'id':1234567890,
# スキーマフリーフィールド (事前定義不要)
'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)
]
)
# フィールドを持つタプルを使用した一括挿入
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ドキュメントの非同期挿入
async_req=True を設定して、非ブロッキング挿入を実行します。返された Future で .get() を呼び出して結果を取得します。
# 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()疎ベクターを持つドキュメントの挿入
sparse_vector パラメーターを使用して、疎表現を密ベクターとともに保存します。
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 | 非同期モードを有効化 |
パラメーターに関する注意事項:
タプル形式: 要素は
(id, vector)または(id, vector, fields)の順序に従う必要があります。タプルは Doc オブジェクトと同等です。フィールドキーと値: 各フィールドキーは
strである必要があります。値はstr、int、bool、またはfloatを受け入れます。コレクション作成時にフィールドキーが事前定義されている場合、値は事前定義された型と一致する必要があります。
フィールドキーが事前定義されていない場合、スキーマフリーフィールドとして扱われ、サポートされている任意の型の値を受け入れます。
事前定義フィールドの詳細については、「スキーマフリー」をご参照ください。
応答
このメソッドは、以下のプロパティを持つ DashVectorResponse オブジェクトを返します。
| プロパティ | 型 | 説明 | 例 |
|---|---|---|---|
code | int | ステータスコード。0 は成功を示します。詳細については、「ステータスコード」をご参照ください。 | 0 |
message | str | 結果メッセージ | success |
request_id | str | 一意のリクエスト識別子 | 19215409-ea66-4db9-8764-26ce2eb5bb99 |