コレクションの作成
このトピックでは、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)