一架梯子,一头程序猿,仰望星空!
Milvus向量数据库教程 > 内容正文

Go Milvus集合管理


创建集合

本主题描述了如何在Milvus中创建集合。

集合由一个或多个分区组成。在创建新集合时,Milvus会自动创建一个名为_default的默认分区。

以下示例构建了一个名为book的二分片集合,其中包含一个名为book_id的主键字段,一个名为word_countINT64标量字段,以及一个名为book_intro的二维浮点向量字段。实际应用可能会使用比示例中更高维度的向量。

准备集合模式定义

要创建的集合必须包含一个主键字段和一个向量字段。主键字段支持INT64和VarChar数据类型。

提示:集合的模式定义类似MYSQL的表结构定义

首先,准备必要的参数,包括字段模式、集合模式和集合名称。

在定义集合模式之前,为集合中的每个字段创建一个模式。为了简化数据插入的复杂性,Milvus允许为每个标量字段(主键字段除外)指定一个默认值。这表明,如果在插入数据时将字段留空,则会使用字段模式创建期间为此字段配置的默认值。

var (
    collectionName = "book"
    )
schema := &entity.Schema{
  CollectionName: collectionName,
  Description:    "Test book search",
  Fields: []*entity.Field{
    {
      Name:       "book_id",
      DataType:   entity.FieldTypeInt64,
      PrimaryKey: true,
      AutoID:     false,
    },
    {
      Name:       "word_count",
      DataType:   entity.FieldTypeInt64,
      PrimaryKey: false,
      AutoID:     false,
    },
    {
      Name:     "book_intro",
      DataType: entity.FieldTypeFloatVector,
      TypeParams: map[string]string{
          "dim": "2",
      },
    },
  },
  EnableDynamicField: true
}
类型 参数 描述 选项
entity.Schema CollectionName 要创建的集合名称 N/A
Description 要创建的集合的描述 N/A
AutoID 用于启用或禁用自动ID(主键)分配的开关 TrueFalse
Fields 要创建的集合中各个字段的模式。有关更多信息,请参见模式 N/A
EnableDynamicField 是否启用动态模式。有关动态模式的详细信息,请参见动态模式和管理集合的用户指南 N/A
entity.Field Name 要创建的字段名称 N/A
PrimaryKey 该字段是否为主键。主键字段必填 N/A
AutoID 该字段值是否自动递增。主键字段必填 N/A
Description 字段的描述 N/A
DataType 要创建的字段的数据类型 对于主键字段:- entity.FieldTypeInt64(numpy.int64) - entity.FieldTypeVarChar(VARCHAR) 对于标量字段:- entity.FieldTypeBool(布尔值) - entity.FieldTypeInt8(numpy.int8) - entity.FieldTypeInt16(numpy.int16) - entity.FieldTypeInt32(numpy.int32) - entity.FieldTypeInt64(numpy.int64) - entity.FieldTypeFloat(numpy.float32) - entity.FieldTypeDouble(numpy.double) - entity.FieldTypeVarChar(VARCHAR) 对于向量字段:- entity.FieldTypeBinaryVector(二进制向量) - entity.FieldTypeFloatVector(浮点向量)
TypeParams 映射到为特定数据类型设置参数的字符串 N/A
IndexParams 映射到设置集合索引参数的字符串 N/A
IsDynamic 此字段是否启用动态模式 N/A
IsPartitionKey 此字段是否充当分区键 N/A

根据结构定义创建集合

然后,使用上面指定的模式创建一个集合。

err = milvusClient.CreateCollection(
    context.Background(), // ctx
    schema,
    2, // shardNum
)
if err != nil {
    log.Fatal("无法创建集合:", err.Error())
}
参数 描述 选项
ctx 控制API调用过程的上下文 N/A
shardNum 要创建的集合中的分片数 [1,16]

集合限制

资源配置

功能 最大限制
集合名称的长度 255个字符
集合中的分区数 4,096
集合中的字段数 64
集合中的分片数 16

参数 default_value

  • default_value 仅适用于非数组和非JSON的标量字段。
  • default_value 不适用于主键。
  • default_value 的数据类型必须与 dtype 中指定的数据类型相同,否则可能会出现错误。
  • 如果使用 auto_id,不允许将所有剩余字段设置为使用默认值。即,在执行插入或更新操作时,您需要为至少一个字段指定值,否则可能会出现错误。

检查集合是否存在

collExists, err := milvusClient.HasCollection(ctx, collectionName)
if err != nil {
    log.Fatal("无法检查集合是否存在:", err.Error())
}

删除集合

_ = milvusClient.DropCollection(ctx, collectionName)

查询所有集合

collections, err := milvusClient.ListCollections(ctx)


关联主题