コレクションの作成

このトピックでは、Milvusでコレクションを作成する方法について説明します。

コレクションは1つ以上のパーティションで構成されています。新しいコレクションを作成する際、Milvusは自動的に_defaultという名前のデフォルトパーティションを作成します。

次の例では、book_idというプライマリキーのフィールド、word_countというINT64スカラーフィールド、そしてbook_introという2次元の浮動小数点ベクトルフィールドを含む、2つのシャードを持つbookというコレクションを作成します。実際のアプリケーションでは、この例よりも高い次元のベクトルを使用する場合があります。

コレクションスキーマの定義

作成するコレクションには、プライマリキーフィールドとベクトルフィールドが含まれている必要があります。プライマリキーフィールドは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(プライマリキー)の割り当てを有効または無効にするためのスイッチ True または False
Fields 作成されるコレクションのフィールドのスキーマ。詳細はスキーマを参照 N/A
EnableDynamicField ダイナミックスキーマを有効にするかどうか。ダイナミックスキーマの詳細については、Dynamic Schema and Collection Management User Guideを参照 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(Boolean) - 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("Failed to create collection: ", 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 を使用している場合、残りのすべてのフィールドをデフォルト値を使用するように設定することはできません。つまり、挿入または更新操作を行う際には、少なくとも1つのフィールドに値を指定する必要があります。それ以外の場合、エラーが発生する可能性があります。

コレクションの存在を確認する

collExists, err := milvusClient.HasCollection(ctx, collectionName)
if err != nil {
    log.Fatal("コレクションの存在を確認できませんでした:", err.Error())
}

コレクションを削除する

_ = milvusClient.DropCollection(ctx, collectionName)

すべてのコレクションをクエリする

collections, err := milvusClient.ListCollections(ctx)