メインコンテンツまでスキップ
バージョン: User Guides (Cloud)

エンティティの挿入

コレクション内のエンティティは、同じフィールドセットを共有するデータレコードです。各データレコードのフィールド値がエンティティを形成します。このページでは、コレクションへのエンティティ挿入方法を紹介します。

📘注意
  • 重複処理: 標準のinsert操作では、重複する主キーのチェックは行いません。既存の主キーを持つデータを挿入すると、同じキーを持つ新しいエンティティが作成され、データの重複や潜在的なアプリケーションの問題が発生する可能性があります。既存のエンティティを更新するか、重複を回避するには、代わりにupsert操作を使用してください。詳細については、エンティティのアップサートを参照してください。

概要

Zilliz Cloudクラスターでは、エンティティとは同じスキーマを共有するコレクション内のデータレコードを指し、行の各フィールドのデータがエンティティを構成します。したがって、同じコレクション内のエンティティは同じ属性(フィールド名、データ型、およびその他の制約など)を持ちます。

コレクションにエンティティを挿入する際、挿入するエンティティは、スキーマで定義されたすべてのフィールドを含んでいる場合にのみ正常に追加されます。挿入されたエンティティは、_defaultという名前のパーティションに挿入順に追加されます。特定のパーティションが存在する場合は、挿入リクエストでパーティション名を指定してエンティティをそのパーティションに挿入することもできます。

Zilliz Cloudは、コレクションのスケーラビリティを維持するために動的フィールドもサポートしています。動的フィールドが有効になっている場合、スキーマで定義されていないフィールドをコレクションに挿入できます。これらのフィールドと値は、$metaという名前の予約済みフィールドにキーと値のペアとして格納されます。動的フィールドの詳細については、動的フィールドを参照してください。

コレクションへのエンティティ挿入

データを挿入する前に、スキーマに従ってデータを辞書のリストとして整理する必要があります。各辞書はエンティティを表し、スキーマで定義されたすべてのフィールドを含める必要があります。コレクションで動的フィールドが有効になっている場合、各辞書にはスキーマで定義されていないフィールドも含めることができます。

このセクションでは、クイックセットアップ方式で作成されたコレクションにエンティティを挿入します。この方法で作成されたコレクションには、idvectorという2つのフィールドのみがあります。さらに、このコレクションでは動的フィールドが有効になっているため、サンプルコード内のエンティティにはスキーマで定義されていないcolorというフィールドが含まれています。

from pymilvus import MilvusClient

client = MilvusClient(
uri="YOUR_CLUSTER_ENDPOINT",
token="YOUR_CLUSTER_TOKEN"
)

data=[
{"id": 0, "vector": [0.3580376395471989, -0.6023495712049978, 0.18414012509913835, -0.26286205330961354, 0.9029438446296592], "color": "pink_8682"},
{"id": 1, "vector": [0.19886812562848388, 0.06023560599112088, 0.6976963061752597, 0.2614474506242501, 0.838729485096104], "color": "red_7025"},
{"id": 2, "vector": [0.43742130801983836, -0.5597502546264526, 0.6457887650909682, 0.7894058910881185, 0.20785793220625592], "color": "orange_6781"},
{"id": 3, "vector": [0.3172005263489739, 0.9719044792798428, -0.36981146090600725, -0.4860894583077995, 0.95791889146345], "color": "pink_9298"},
{"id": 4, "vector": [0.4452349528804562, -0.8757026943054742, 0.8220779437047674, 0.46406290649483184, 0.30337481143159106], "color": "red_4794"},
{"id": 5, "vector": [0.985825131989184, -0.8144651566660419, 0.6299267002202009, 0.1206906911183383, -0.1446277761879955], "color": "yellow_4222"},
{"id": 6, "vector": [0.8371977790571115, -0.015764369584852833, -0.31062937026679327, -0.562666951622192, -0.8984947637863987], "color": "red_9392"},
{"id": 7, "vector": [-0.33445148015177995, -0.2567135004164067, 0.8987539745369246, 0.9402995886420709, 0.5378064918413052], "color": "grey_8510"},
{"id": 8, "vector": [0.39524717779832685, 0.4000257286739164, -0.5890507376891594, -0.8650502298996872, -0.6140360785406336], "color": "white_9381"},
{"id": 9, "vector": [0.5718280481994695, 0.24070317428066512, -0.3737913482606834, -0.06726932177492717, -0.6980531615588608], "color": "purple_4976"}
]

res = client.insert(
collection_name="quick_setup",
data=data
)

print(res)

# 出力
# {'insert_count': 10, 'ids': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]}

パーティションへのエンティティ挿入

指定したパーティションにエンティティを挿入することもできます。以下のコードスニペットでは、コレクションにPartitionAという名前のパーティションが存在すると仮定しています。

data=[
{"id": 10, "vector": [0.3580376395471989, -0.6023495712049978, 0.18414012509913835, -0.26286205330961354, 0.9029438446296592], "color": "pink_8682"},
{"id": 11, "vector": [0.19886812562848388, 0.06023560599112088, 0.6976963061752597, 0.2614474506242501, 0.838729485096104], "color": "red_7025"},
{"id": 12, "vector": [0.43742130801983836, -0.5597502546264526, 0.6457887650909682, 0.7894058910881185, 0.20785793220625592], "color": "orange_6781"},
{"id": 13, "vector": [0.3172005263489739, 0.9719044792798428, -0.36981146090600725, -0.4860894583077995, 0.95791889146345], "color": "pink_9298"},
{"id": 14, "vector": [0.4452349528804562, -0.8757026943054742, 0.8220779437047674, 0.46406290649483184, 0.30337481143159106], "color": "red_4794"},
{"id": 15, "vector": [0.985825131989184, -0.8144651566660419, 0.6299267002202009, 0.1206906911183383, -0.1446277761879955], "color": "yellow_4222"},
{"id": 16, "vector": [0.8371977790571115, -0.015764369584852833, -0.31062937026679327, -0.562666951622192, -0.8984947637863987], "color": "red_9392"},
{"id": 17, "vector": [-0.33445148015177995, -0.2567135004164067, 0.8987539745369246, 0.9402995886420709, 0.5378064918413052], "color": "grey_8510"},
{"id": 18, "vector": [0.39524717779832685, 0.4000257286739164, -0.5890507376891594, -0.8650502298996872, -0.6140360785406336], "color": "white_9381"},
{"id": 19, "vector": [0.5718280481994695, 0.24070317428066512, -0.3737913482606834, -0.06726932177492717, -0.6980531615588608], "color": "purple_4976"}
]

res = client.insert(
collection_name="quick_setup",
partition_name="partitionA",
data=data
)

print(res)

# 出力
# {'insert_count': 10, 'ids': [10, 11, 12, 13, 14, 15, 16, 17, 18, 19]}