管理Entities
更新时间:
在Milvus中,实体(Entities)是具体的数据对象,它们具有特定的属性和特征。实体的增删查改等操作构成了对Milvus数据库的基本管理。本文为您介绍如何在Milvus中插数据、更新以及删除实体数据。
前提条件
已在本地客户端成功安装了PyMilvus库,并将其更新至当前最新版本。
如果您尚未在本地客户端安装PyMilvus库,或者需要将其更新至当前最新版本,您可以执行以下命令。
pip install --upgrade pymilvus
已创建Milvus实例,请参见详情快速创建Milvus实例。
已创建指定向量维度和度量方法的Collection。详细代码如下所示。
from pymilvus import MilvusClient client = MilvusClient( uri="http://c-xxxx.milvus.aliyuncs.com:19530", # Milvus实例的公网地址。 token="<yourUsername>:<yourPassword>", # 登录Milvus实例的用户名和密码。 db_name="default" # 待连接的数据库名称,本文示例为默认的default。 ) client.create_collection( collection_name="<yourCollectionname>", # 指定待创建的集合的名称,本文示例为milvus_collection。 dimension=5, # 指定集合中向量的维度,本文示例为5。 metric_type="IP" # 指定用于计算向量相似度的度量方法。本示例中是 "IP"(Inner Product,内积)。 )
插入数据
在插入数据之前,您需要按照格式将数据构建为一个字典列表,其中列表的每个字典代表一个实体(Entity),并且包含了集合中预定义的字段以及任何动态字段。
# Insert some data
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="milvus_collection",
data=data
)
print(res)
更新数据
# Upsert some data
data = [
{"id": 0, "vector": [-0.619954382375778, 0.4479436794798608, -0.17493894838751745, -0.4248030059917294, -0.8648452746018911], "color": "black_9898"},
{"id": 1, "vector": [0.4762662251462588, -0.6942502138717026, -0.4490002642657902, -0.628696575798281, 0.9660395877041965], "color": "red_7319"},
{"id": 2, "vector": [-0.8864122635045097, 0.9260170474445351, 0.801326976181461, 0.6383943392381306, 0.7563037341572827], "color": "white_6465"},
{"id": 3, "vector": [0.14594326235891586, -0.3775407299900644, -0.3765479013078812, 0.20612075380355122, 0.4902678929632145], "color": "orange_7580"},
{"id": 4, "vector": [0.4548498669607359, -0.887610217681605, 0.5655081329910452, 0.19220509387904117, 0.016513983433433577], "color": "red_3314"},
{"id": 5, "vector": [0.11755001847051827, -0.7295149788999611, 0.2608115847524266, -0.1719167007897875, 0.7417611743754855], "color": "black_9955"},
{"id": 6, "vector": [0.9363032158314308, 0.030699901477745373, 0.8365910312319647, 0.7823840208444011, 0.2625222076909237], "color": "yellow_2461"},
{"id": 7, "vector": [0.0754823906014721, -0.6390658668265143, 0.5610517334334937, -0.8986261118798251, 0.9372056764266794], "color": "white_5015"},
{"id": 8, "vector": [-0.3038434006935904, 0.1279149203380523, 0.503958664270957, -0.2622661156746988, 0.7407627307791929], "color": "purple_6414"},
{"id": 9, "vector": [-0.7125086947677588, -0.8050968321012257, -0.32608864121785786, 0.3255654958645424, 0.26227968923834233], "color": "brown_7231"}
]
res = client.upsert(
collection_name='milvus_collection',
data=data
)
print(res)
删除数据
Milvus支持以下两种删除Entity的方法:
按照过滤条件删除数据
# Delete entities res = client.delete( collection_name="milvus_collection", filter="id in [4,5,6]" ) print(res)
按照Entity主键ID删除数据
res = client.delete( collection_name="milvus_collection", ids=[8, 9], partition_name="partitionA" # 可选,如果需要在特定分区中删除。 ) print(res)
文档内容是否对您有帮助?