管理 Collection (SDK)
本指南将介绍如何通过各种语言的 SDK 创建和管理 Collection。Zilliz Cloud Web 控制台操作更简单直观,但使用 SDK 可提供更多灵活性。
前提条件
概述
在 Zilliz Cloud 中您通过 Collection 来存储 Embedding 向量。同一个 Collection 中的所有 Embedding 向量维度相同,且使用同样的相似性类型来计算向量距离和相似性。
Zilliz Cloud Collection 支持动态列(即支持插入未在 Schema 中预先定义的字段数据) 和自动生成的主键列。
为了满足不同的用户需求,Zilliz Cloud 提供两种创建 Collection 的方式——快速创建 Collection 和自定义 Collection Schema 和索引参数。
此外,您还可以通过 SDK 查看、加载、释放、删除 Collection。
创建 Collection
您可以通过以下任意一种方式创建 Collection:
-
快速创建
您只需要设置 Collection 名称和向量维度即可快速完成 Collection 创建。更多详情,请参考快速创建。
-
定制化创建
您可以自定义 Schema 和索引参数。更多详情,请参考定制化创建。
快速创建
Zilliz Cloud 提供快速创建 Collection 的方式。您只需定义以下三个参数:
-
创建的 Collection 的名称
-
向量数据的维度
-
用于计算向量距离的相似度类型
- Python
- Java
- NodeJS
from pymilvus import MilvusClient, DataType
CLUSTER_ENDPOINT = "YOUR_CLUSTER_ENDPOINT"
TOKEN = "YOUR_CLUSTER_TOKEN"
# 1. Set up a Milvus client
client = MilvusClient(
uri=CLUSTER_ENDPOINT,
token=TOKEN
)
# 2. Create a collection in quick setup mode
client.create_collection(
collection_name="quick_setup",
dimension=5
)
res = client.get_load_state(
collection_name="quick_setup"
)
print(res)
# Output
#
# {
# "state": "<LoadState: Loaded>"
# }
import io.milvus.v2.client.ConnectConfig;
import io.milvus.v2.client.MilvusClientV2;
import io.milvus.v2.service.collection.request.GetLoadStateReq;
import io.milvus.v2.service.collection.request.CreateCollectionReq;
String CLUSTER_ENDPOINT = "YOUR_CLUSTER_ENDPOINT";
String TOKEN = "YOUR_TOKEN";
// 1. Connect to Milvus server
ConnectConfig connectConfig = ConnectConfig.builder()
.uri(CLUSTER_ENDPOINT)
.token(TOKEN)
.build();
MilvusClientV2 client = new MilvusClientV2(connectConfig);
// 2. Create a collection in quick setup mode
CreateCollectionReq quickSetupReq = CreateCollectionReq.builder()
.collectionName("quick_setup")
.dimension(5)
.build();
client.createCollection(quickSetupReq);
// Thread.sleep(5000);
GetLoadStateReq quickSetupLoadStateReq = GetLoadStateReq.builder()
.collectionName("quick_setup")
.build();
Boolean res = client.getLoadState(quickSetupLoadStateReq);
System.out.println(res);
// Output:
// true
// 1. Set up a Milvus Client
client = new MilvusClient({address, token});
// 2. Create a collection in quick setup mode
let res = await client.createCollection({
collection_name: "quick_setup",
dimension: 5,
});
console.log(res.error_code)
// Output
//
// Success
//
res = await client.getLoadState({
collection_name: "quick_setup"
})
console.log(res.state)
// Output
//
// LoadStateLoaded
//
上述代码生成的 Collection 仅包含 2 个字段:id
(主键字段) 和 vector
(向量字段)。auto_id
和 enable_dynamic_field
功能已默认开启。
-
auto_id
开启后,系统会自动为插入数据分配自增主键。因此,您无需在插入数据时额外提供主键。
-
enable_dynamic_field
开启后,插入数据中除
id
和vector
以外的字段都将被视作为动态列。这些字段将以键值对的形式存储在$meta
字段中。动态列功能开启后,您可以在插入数据时包含未在 Schema 中预先定义的额外字段。
以上创建的 Collection 会自动创建索引和加载,可立即向 Collection 中插入数据。
定制化创建
除了使用快速创建以外,您还可以自定义 Collection 的 Schema 和索引参数。