跳到主要内容
版本:v3.0.x

插入 Entity

Collection 中的实体是指共享同一组字段的数据记录。每条数据记录中的字段值构成一个实体。本页介绍如何在 Collection 中插入实体。

说明
  • 创建 Collection 后添加的字段:如果在创建后向 Collection 添加新字段,并且在插入时没有指定值,Milvus 会自动用定义的默认值填充它们;如果没有设置默认值,则填充 NULL。有关详情,请参阅 Alter Collection Schema

  • 重复处理:标准 insert 操作不会检查主键是否重复。使用现有主键插入数据会创建具有相同键的新实体,从而导致数据重复和潜在的应用问题。要更新现有实体或避免重复,请使用 upsert 操作。有关详细信息,请参阅 Upsert 实体

Entity 概述

在 Milvus 中,实体 指的是 Collection 中共享相同 Schema 的数据记录,行中每个字段的数据构成一个实体。因此,同一 Collection 中的实体具有相同的属性(如字段名称、数据类型和其他约束)。

将实体插入 Collection 时,要插入的实体只有包含 Schema 中定义的所有字段才能成功添加。插入的实体将按插入顺序进入名为 _default 的 Partition。如果存在某个 Partition,也可以通过在插入请求中指定 Partition 名称,将实体插入该 Partition。

Milvus 还支持动态字段,以保持 Collection 的可扩展性。启用动态字段后,你可以在 Collection 中插入 Schema 中未定义的字段。这些字段和值将作为键值对存储在名为 $meta 的保留字段中。有关动态字段的更多信息,请参阅动态字段。

将 Entity 插入 Collection

在插入数据之前,需要根据 Schema 将数据组织为字典列表,每个字典代表一个 Entity,并包含 Schema 中定义的所有字段。如果 Collection 启用了动态字段,每个字典还可以包含 Schema 中未定义的字段。

本节将向以快速设置方式创建的 Collection 中插入 Entity。以这种方式创建的 Collection 只有两个字段,分别名为 idvector。此外,该 Collection 启用了动态字段,因此示例代码中的 Entity 包含一个名为 color 的字段,该字段未在 Schema 中定义。

Python
from pymilvus import MilvusClient

client = MilvusClient(
uri="http://localhost:19530",
token="root:Milvus"
)

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)

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

将 Entity 插入 Partition

你也可以将 Entity 插入指定 Partition。以下代码片段假定你的 Collection 中已有名为 PartitionA 的 Partition。

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

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