milvus-logo
LFAI
フロントページへ
  • ユーザーガイド

コレクションの管理

このガイドでは、選択したSDKを使用して、コレクションの作成と管理について説明します。

始める前に

概要

Milvusでは、ベクトル埋め込みをコレクションに格納します。コレクション内のすべてのベクトル埋め込みは、同じ次元と類似度を測定するための距離メトリックを共有します。

Milvusのコレクションは動的フィールド(スキーマで定義されていないフィールド)と主キーの自動インクリメントをサポートしています。

様々な好みに対応するため、Milvusはコレクションの作成に2つの方法を提供しています。1つはクイックセットアップを提供し、もう1つはコレクションスキーマとインデックスパラメータの詳細なカスタマイズを可能にします。

さらに、必要に応じてコレクションを表示、ロード、リリース、ドロップすることができます。

コレクションの作成

以下のいずれかの方法でコレクションを作成できます:

  • クイックセットアップ

    この方法では、名前を付けて、このコレクションに格納するベクトル埋込みの次元数を指定するだけで、コレクションを作成できます。詳細は、Quick setupを参照。

  • カスタマイズセットアップ

    In Milvusにコレクションのほとんどすべてを任せる代わりに、コレクションのスキーマと インデックスパラメータを自分で決めることができます。詳細はカスタマイズセットアップを参照してください。

クイックセットアップ

AI業界における大きな飛躍を背景に、ほとんどの開発者はシンプルかつダイナミックなコレクションを必要としています。Milvusでは、3つの引数を指定するだけで、そのようなコレクションを素早くセットアップできます:

  • 作成するコレクションの名前、

  • 挿入するベクトル埋め込み次元

  • ベクトル埋め込み間の類似度を測定するためのメトリックタイプ。

素早くセットアップするには create_collection()クラスの MilvusClientクラスのメソッドを使用して、指定された名前と次元を持つコレクションを作成します。

素早くセットアップするには createCollection()クラスの MilvusClientV2クラスのメソッドを使用して、指定された名前とディメンジョンを持つコレクションを作成します。

クイック・セットアップには createCollection()メソッドを使用します。 MilvusClientクラスのメソッドを使用して、指定された名前とディメンジョンを持つコレクションを作成します。

を使用します。 POST /v2/vectordb/collections/createAPI エンドポイントを使用して、指定された名前とディメンジョンを持つコレクションを作成します。

from pymilvus import MilvusClient, DataType

# 1. Set up a Milvus client
client = MilvusClient(
    uri="http://localhost:19530"
)

# 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 = "http://localhost:19530";

// 1. Connect to Milvus server
ConnectConfig connectConfig = ConnectConfig.builder()
    .uri(CLUSTER_ENDPOINT)
    .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
address = "http://localhost:19530"

// 1. Set up a Milvus Client
client = new MilvusClient({address});

// 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
// 
$ export MILVUS_URI="localhost:19530"

$ curl -X POST "http://${MILVUS_URI}/v2/vectordb/collections/create" \
-H "Content-Type: application/json" \
-d '{
  "collectionName": "quick_setup",
  "dimension": 5
}'

# Output
#
# {
#     "code": 0,
#     "data": {},
# }

$ curl -X POST "http://${MILVUS_URI}/v2/vectordb/collections/get_load_state" \
-H "Content-Type: application/json" \
-d '{
  "collectionName": "quick_setup"
}'

# {
#     "code": 0,
#     "data": {
#         "loadProgress": 100,
#         "loadState": "LoadStateLoaded"
#     }
# }

上記のコードで生成されたコレクションには、id (主キーとして) とvector (ベクトル・フィールドとして) の2つのフィールドのみが含まれ、auto_idenable_dynamic_field の設定はデフォルトで有効になっています。

  • auto_id

    この設定を有効にすると、主キーが自動的にインクリメントされます。データ挿入時に主キーを手動で指定する必要はない。

  • enable_dynamic_field

    この設定を有効にすると、挿入されるデータのidvector を除くすべてのフィールドがダイナミック・フィールドとして扱われる。これらの追加フィールドは、$meta という特別なフィールド内にキーと値のペアとして保存される。この機能により、データ挿入時に追加フィールドを含めることができる。

提供されたコードから自動的にインデックス付けされ、ロードされたコレクションは、すぐにデータ挿入の準備ができます。

カスタマイズされたセットアップ

Milvusにコレクションのほとんど全てを決定させる代わりに、あなた自身でコレクションのスキーマと インデックスパラメータを決定することができます。

ステップ1: スキーマの設定

スキーマはコレクションの構造を定義します。スキーマ内では、enable_dynamic_field を有効または無効にし、定義済みフィールドを追加し、各フィールドに属性を設定するオプションがあります。スキーマの概念と使用可能なデータ型の詳細については、スキーマの説明を参照してください。

スキーマを設定するには create_schema()を使用してスキーマ・オブジェクトを作成し add_field()を使用してスキーマにフィールドを追加する。

スキーマを設定するには createSchema()を使ってスキーマ・オブジェクトを作成し addField()スキーマにフィールドを追加する。

スキーマをセットアップするには createCollection().

スキーマを設定するには、API エンドポイントのリファレンス・ページに表示されているスキーマ・フォーマットに従った JSON オブジェクトを定義する必要があります。 POST /v2/vectordb/collections/createAPI エンドポイントのリファレンス・ページに表示されているスキーマ・フォーマットに従った JSON オブジェクトを定義する必要があります。

# 3. Create a collection in customized setup mode

# 3.1. Create schema
schema = MilvusClient.create_schema(
    auto_id=False,
    enable_dynamic_field=True,
)

# 3.2. Add fields to schema
schema.add_field(field_name="my_id", datatype=DataType.INT64, is_primary=True)
schema.add_field(field_name="my_vector", datatype=DataType.FLOAT_VECTOR, dim=5)
import io.milvus.v2.common.DataType;
import io.milvus.v2.service.collection.request.CreateCollectionReq;

// 3. Create a collection in customized setup mode

// 3.1 Create schema
CreateCollectionReq.CollectionSchema schema = client.createSchema();

// 3.2 Add fields to schema
schema.addField(AddFieldReq.builder()
    .fieldName("my_id")
    .dataType(DataType.Int64)
    .isPrimaryKey(true)
    .autoID(false)
    .build());

schema.addField(AddFieldReq.builder()
    .fieldName("my_vector")
    .dataType(DataType.FloatVector)
    .dimension(5)
    .build());
// 3. Create a collection in customized setup mode
// 3.1 Define fields
const fields = [
    {
        name: "my_id",
        data_type: DataType.Int64,
        is_primary_key: true,
        auto_id: false
    },
    {
        name: "my_vector",
        data_type: DataType.FloatVector,
        dim: 5
    },
]
export fields='[{ \
    "fieldName": "my_id", \
    "dataType": "Int64", \
    "isPrimary": true \
}, \
{ \
    "fieldName": "my_vector", \
    "dataType": "FloatVector", \
    "elementTypeParams": { \
        "dim": 5 \
    } \
}]'
パラメータ 説明
auto_id
これをTrueに設定すると、プライマリ・フィールドが自動的にインクリメントされる。この場合、エラーを避けるため、プライマリ・フィールドを挿入するデータに含めるべきではありません。自動生成されたIDは固定長で、変更することはできません。
enable_dynamic_field
これをTrue に設定すると、Milvus は挿入されるデータから未定義のフィールドとその値を保存する$metaというフィールドを作成します。
field_name フィールド名。
datatype フィールドのデータ型。使用可能なデータ型のリストについては、DataTypeを参照してください。
is_primary
各コレクションは、1 つのプライマリ・フィールドのみを持つ。プライマリ・フィールドは、DataType.INT64型またはDataType.VARCHAR型のいずれかである必要があります。
dim
DataType.FLOAT_VECTORDataType.BINARY_VECTORDataType.FLOAT16_VECTOR、またはDataType.BFLOAT16_VECTOR型のフィールドでは必須です。DataType.SPARSE_FLOAT_VECTORを使用する場合は、このパラメータを省略します。
パラメータ 説明
fieldName フィールド名。
dataType フィールドのデータ型。使用可能なデータ型のリストについては、DataTypeを参照してください。
isPrimaryKey
各コレクションは、1 つのプライマリ・フィールドのみを持つ。プライマリ・フィールドはDataType.Int64型またはDataType.VarChar型のいずれかでなければなりません。
autoID
これをtrueに設定すると、プライマリフィールドが自動的にインクリメントされます。この場合、プライマリ・フィールドはエラーを避けるために挿入するデータに含めるべきではありません。
dimension
DataType.FloatVectorDataType.BinaryVectorDataType.Float16VectorDataType.BFloat16Vector型のフィールドでは必須。
パラメータ 説明
name フィールド名。
data_type フィールドのデータ型。使用可能なすべてのデータ型の列挙については、DataTypeを参照してください。
is_primary_key
各コレクションは、1 つのプライマリ・フィールドのみを持つ。プライマリ・フィールドは、DataType.INT64型またはDataType.VARCHAR型のいずれかでなければなりません。
auto_id
デフォルト値はFalse です。Trueに設定すると、プライマリ・フィールドが自動的にインクリメントされます。カスタマイズしたスキーマでコレクションをセットアップする必要がある場合は、このパラメータをスキップします。
dim ベクトル埋め込みを保持するコレクションフィールドの次元数。
値は1以上の整数である必要があり、通常はベクトル埋め込みを生成するために使用するモデルによって決定される。
パラメータ 説明
fieldName ターゲット・コレクションに作成するフィールドの名前。
dataType フィールド値のデータ型。
isPrimary 現在のフィールドがプライマリ・フィールドかどうか。これをTrue に設定すると、現在のフィールドがプライマリ・フィールドになります。
elementTypeParams 追加フィールド・パラメータ。
dim FloatVector または BinaryVector フィールドのオプション・パラメータで、ベクトル次元を決定します。

ステップ2:インデックスパラメータの設定

インデックスパラメータは、Milvusがコレクション内でデータをどのように整理するかを決定します。metric_typeindex_type を調整することで、特定のフィールドのインデックス作成プロセスを調整できます。ベクトル・フィールドでは、扱うベクトルのタイプに応じて、metric_typeCOSINEL2IPHAMMINGJACCARD を柔軟に選択できます。詳細については、類似度メトリクスを参照してください。

インデックス・パラメータを設定するには prepare_index_params()を使用してインデックス・パラメータを準備し add_index()を使用してインデックスを追加します。

インデックス・パラメータを設定するには、IndexParam を使用します。

インデックス・パラメータを設定するには createIndex().

インデックス・パラメータを設定するには、以下のAPIエンドポイント・リファレンス・ページに表示されているインデックス・パラメータの書式に従ったJSONオブジェクトを定義する必要があります。 POST /v2/vectordb/collections/createAPI エンドポイント・リファレンス・ページに表示されているインデックス・パラメータ・フォーマットに従った JSON オブジェクトを定義する必要があります。

# 3.3. Prepare index parameters
index_params = client.prepare_index_params()

# 3.4. Add indexes
index_params.add_index(
    field_name="my_id",
    index_type="STL_SORT"
)

index_params.add_index(
    field_name="my_vector", 
    index_type="IVF_FLAT",
    metric_type="IP",
    params={ "nlist": 128 }
)
import io.milvus.v2.common.IndexParam;

// 3.3 Prepare index parameters
IndexParam indexParamForIdField = IndexParam.builder()
    .fieldName("my_id")
    .indexType(IndexParam.IndexType.STL_SORT)
    .build();

IndexParam indexParamForVectorField = IndexParam.builder()
    .fieldName("my_vector")
    .indexType(IndexParam.IndexType.IVF_FLAT)
    .metricType(IndexParam.MetricType.L2)
    .extraParams(Map.of("nlist", 1024))
    .build();

List<IndexParam> indexParams = new ArrayList<>();
indexParams.add(indexParamForIdField);
indexParams.add(indexParamForVectorField);
// 3.2 Prepare index parameters
const index_params = [{
    field_name: "my_id",
    index_type: "STL_SORT"
},{
    field_name: "my_vector",
    index_type: "IVF_FLAT",
    metric_type: "IP",
    params: { nlist: 1024}
}]
export indexParams='[{ \
    "fieldName": "my_id", \
    "indexName": "my_id", \
    "params": { \
        "index_type": "SLT_SORT" \
  } \
}, { \
    "fieldName": "my_vector", \
    "metricType": "COSINE", \
    "indexName": "my_vector", \
    "params": { \
        "index_type": "IVF_FLAT", \
        "nlist": 1024 \
  } \
}]'
パラメータ 説明
field_name このオブジェクトが適用されるターゲット・ファイルの名前。
index_type 特定のフィールドにデータを配置するために使用されるアルゴリズムの名前。適用可能なアルゴリズムについては、In-memory IndexおよびOn-disk Index を参照してください。
metric_type ベクトル間の類似度を測定するために使用されるアルゴリズム。指定可能な値はIPL2COSINEJACCARDHAMMING。これは、指定されたフィールドがベクトル・フィールドである場合にのみ使用できる。詳しくはMilvusでサポートされているインデックスを参照してください。
params 指定されたインデックス・タイプの微調整パラメータ。指定可能なキーと値の範囲の詳細については、メモリ内インデックスを参照してください。
パラメータ 説明
fieldName このIndexParamオブジェクトを適用する対象フィールドの名前。
indexType 特定のフィールドにデータを配置するために使用されるアルゴリズムの名前。適用可能なアルゴリズムについては、In-memory IndexおよびOn-disk Index を参照してください。
metricType インデックスに使用する距離メトリック。指定可能な値はIPL2COSINEJACCARDHAMMING
extraParams インデックスの追加パラメータ。詳細はインメモリ・インデックスと オンディスク・インデックスを参照。
パラメータ 説明
field_name インデックスを作成する対象フィールドの名前。
index_type 特定のフィールドにデータを配置するために使用されるアルゴリズム名。適用可能なアルゴリズムについては、インメモリ・インデックスと オンディスク・インデックスを参照のこと。
metric_type ベクトル間の類似度を測定するために使用されるアルゴリズム。指定可能な値はIPL2COSINEJACCARDHAMMING。これは、指定されたフィールドがベクトル・フィールドである場合にのみ使用できる。詳しくはMilvusでサポートされているインデックスを参照してください。
params 指定されたインデックス・タイプの微調整パラメータ。指定可能なキーと値の範囲の詳細については、メモリ内インデックスを参照してください。
パラメータ 説明
fieldName インデックスを作成する対象フィールドの名前。
indexName 作成するインデックスの名前。デフォルト値はターゲット・フィールド名。
metricType ベクトル間の類似度の測定に使用するアルゴリズム。指定可能な値はIPL2COSINEJACCARDHAMMING です。これは、指定されたフィールドがベクトル・フィールドである場合にのみ使用できます。詳しくはMilvusでサポートされているインデックスを参照してください。
params インデックス・タイプと関連する設定。詳細はインメモリインデックスを参照。
params.index_type 作成するインデックスのタイプ。
params.nlist クラスタ単位の数。これはIVF関連のインデックスタイプに適用されます。

上のコード・スニペットは、ベクトル・フィールドとスカラー・フィールドそれぞれのインデックス・パラメータの設定方法を示しています。ベクトル・フィールドには、メトリック型とインデックス型の両方を設定します。スカラー・フィールドの場合は、インデックス・タイプのみを設定します。ベクトル・フィールドと、フィルタリングに頻繁に使用されるスカラー・フィールドには、インデックスを作成することを推奨する。

ステップ 3: コレクションの作成

コレクションとインデックス・ファイルを別々に作成するか、作成時にインデックスを同時にロードしてコ レクションを作成するかを選択できます。

create_collection()を使用して、指定されたスキーマおよびインデックス・パラメータでコレクションを作成し、get_load_state()でコレクションのロード状態を確認します。

createCollection() を使用して、指定したスキーマおよびインデックス・パラメータを持つコレクションを作成し、getLoadState() を使用してコレクションのロード状態を確認します。

createCollection() を使用して、指定されたスキーマおよびインデックス・パラメータを持つコレクションを作成し、getLoadState() を使用してコレクションのロード状態を確認します。

  • 作成時にインデックスが同時にロードされたコレクションを作成します。

    # 3.5. Create a collection with the index loaded simultaneously
    client.create_collection(
        collection_name="customized_setup_1",
        schema=schema,
        index_params=index_params
    )
    
    time.sleep(5)
    
    res = client.get_load_state(
        collection_name="customized_setup_1"
    )
    
    print(res)
    
    # Output
    #
    # {
    #     "state": "<LoadState: Loaded>"
    # }
    
    import io.milvus.v2.service.collection.request.CreateCollectionReq;
    import io.milvus.v2.service.collection.request.GetLoadStateReq;
    
    // 3.4 Create a collection with schema and index parameters
    CreateCollectionReq customizedSetupReq1 = CreateCollectionReq.builder()
        .collectionName("customized_setup_1")
        .collectionSchema(schema)
        .indexParams(indexParams)
        .build();
    
    client.createCollection(customizedSetupReq1);
    
    // Thread.sleep(5000);
    
    // 3.5 Get load state of the collection
    GetLoadStateReq customSetupLoadStateReq1 = GetLoadStateReq.builder()
        .collectionName("customized_setup_1")
        .build();
    
    res = client.getLoadState(customSetupLoadStateReq1);
    
    System.out.println(res);
    
    // Output:
    // true
    
    // 3.3 Create a collection with fields and index parameters
    res = await client.createCollection({
        collection_name: "customized_setup_1",
        fields: fields,
        index_params: index_params,
    })
    
    console.log(res.error_code)  
    
    // Output
    // 
    // Success
    // 
    
    res = await client.getLoadState({
        collection_name: "customized_setup_1"
    })
    
    console.log(res.state)
    
    // Output
    // 
    // LoadStateLoaded
    //   
    
    $ curl -X POST "http://${MILVUS_URI}/v2/vectordb/collections/create" \
    -H "Content-Type: application/json" \
    -d '{
        "collectionName": "customized_setup_1",
        "schema": {
            "autoId": false,
            "enabledDynamicField": false,
            "fields": [
                {
                    "fieldName": "my_id",
                    "dataType": "Int64",
                    "isPrimary": true
                },
                {
                    "fieldName": "my_vector",
                    "dataType": "FloatVector",
                    "elementTypeParams": {
                        "dim": "5"
                    }
                }
            ]
        },
        "indexParams": [
            {
                "fieldName": "my_vector",
                "metricType": "COSINE",
                "indexName": "my_vector",
                "params": {
                    "index_type": "IVF_FLAT",
                    "nlist": "1024"
                }
            },
            {
                "fieldName": "my_id",
                "indexName": "my_id",
                "params": {
                    "index_type": "STL_SORT"
                }            
            }
        ]
    }'
    
    # Output
    #
    # {
    #     "code": 0,
    #     "data": {},
    # }
    
    $ curl -X POST "http://${MILVUS_URI}/v2/vectordb/collections/get_load_state" \
    -H "Content-Type: application/json" \
    -d '{
        "collectionName": "customized_setup_1"
    }'
    
    # {
    #     "code": 0,
    #     "data": {
    #         "loadProgress": 100,
    #         "loadState": "LoadStateLoaded"
    #     }
    # }
    

    上記で作成されたコレクションは自動的にロードされます。コレクションのロードとリリースの詳細は、Load & Release Collection を参照してください。

  • コレクションとインデックスファイルを別々に作成する。

    # 3.6. Create a collection and index it separately
    client.create_collection(
        collection_name="customized_setup_2",
        schema=schema,
    )
    
    res = client.get_load_state(
        collection_name="customized_setup_2"
    )
    
    print(res)
    
    # Output
    #
    # {
    #     "state": "<LoadState: NotLoad>"
    # }
    
    // 3.6 Create a collection and index it separately
    CreateCollectionReq customizedSetupReq2 = CreateCollectionReq.builder()
        .collectionName("customized_setup_2")
        .collectionSchema(schema)
        .build();
    
    client.createCollection(customizedSetupReq2);
    
    // 3.4 Create a collection and index it seperately
    res = await client.createCollection({
        collection_name: "customized_setup_2",
        fields: fields,
    })
    
    console.log(res.error_code)
    
    // Output
    // 
    // Success
    // 
    
    res = await client.getLoadState({
        collection_name: "customized_setup_2"
    })
    
    console.log(res.state)
    
    // Output
    // 
    // LoadStateNotLoad
    // 
    
    $ curl -X POST "http://${MILVUS_URI}/v2/vectordb/collections/create" \
    -H "Content-Type: application/json" \
    -d '{
        "collectionName": "customized_setup_2",
        "schema": {
            "autoId": false,
            "enabledDynamicField": false,
            "fields": [
                {
                    "fieldName": "my_id",
                    "dataType": "Int64",
                    "isPrimary": true
                },
                {
                    "fieldName": "my_vector",
                    "dataType": "FloatVector",
                    "elementTypeParams": {
                        "dim": "5"
                    }
                }
            ]
            
        }
    }'
    
    # Output
    #
    # {
    #     "code": 0,
    #     "data": {},
    # }
    
    $ curl -X POST "http://${MILVUS_URI}/v2/vectordb/collections/get_load_state" \
    -H "Content-Type: application/json" \
    -d '{
        "collectionName": "customized_setup_2"
    }'
    
    # {
    #     "code": 0,
    #     "data": {
    #         "loadState": "LoadStateNotLoaded"
    #     }
    # }
    

    上記で作成したコレクションは自動的にロードされません。以下のように、コレクションにインデックスを作成できます。別の方法でコレクションのインデックスを作成しても、コレクションは自動的にロード されません。詳細は、Load & Release Collection を参照してください。

    パラメータ 説明
    collection_name コレクションの名前。
    schema このコレクションのスキーマ。
    これをNoneに設定すると、このコレクションはデフォルト設定で作成されます。
    カスタマイズしたスキーマでコレクションを設定するには、CollectionSchemaオブジェクトを作成し、それをここで参照する必要があります。この場合、milvusはリクエストに含まれる他のスキーマ関連の設定をすべて無視します。
    index_params このコレクション内のベクトルフィールドのインデックスを構築するためのパラメータです。カスタマイズされたスキーマでコレクションを設定し、自動的にコレクションをメモリにロードするには、IndexParamsオブジェクトを作成し、ここで参照する必要があります。
    少なくとも、このコレクション内のベクトルフィールドのインデックスを追加する必要があります。インデックスパラメータを後で設定したい場合は、このパラメータを省略することもできます。

    パラメータ 説明
    collectionName コレクションの名前。
    collectionSchema
    これを空にすると、このコレクションはデフォルト設定で作成されます。カスタマイズしたスキーマでコレクションをセットアップするには、CollectionSchemaオブジェクトを作成し、ここでそれを参照する必要があります。
    indexParams このコレクション内のベクトル・フィールドにインデックスを構築するためのパラメータ。カスタマイズされたスキーマでコレクションをセットアップし、コレクションを自動的にメモリにロードするには、IndexParamオブジェクトのリストでIndexParamsオブジェクトを作成し、ここでそれを参照します。

    パラメータ 説明
    collection_name コレクションの名前。
    fields コレクション内のフィールド。
    index_params 作成するコレクションのインデックス・パラメータ。

    パラメータ 説明
    collectionName コレクションの名前。
    schema スキーマは、ターゲット・コレクション内のデータを整理する役割を果たします。有効なスキーマは複数のフィールドを持つ必要があり、プライマリ・キー、ベクトル・フィールド、および複数のスカラー・フィールドを含む必要があります。
    schema.autoID 主フィールドの自動インクリメントを許可するかどうか。これをTrueに設定すると、プライマリ・フィールドは自動的にインクリメントされます。この場合、エラーを避けるためにプライマリ・フィールドを挿入するデータに含めるべきではありません。is_primaryをTrueに設定したフィールドにこのパラメータを設定します。
    schema.enableDynamicField 予約された$metaフィールドを使用して、スキーマで定義されていないフィールドをkey-valueペアで保持することを許可するかどうか。
    fields フィールド・オブジェクトのリスト。
    fields.fieldName ターゲット・コレクションに作成するフィールドの名前。
    fields.dataType フィールド値のデータ型。
    fields.isPrimary 現在のフィールドがプライマリ・フィールドかどうか。True に設定すると、現在のフィールドがプライマリ・フィールドになります。
    fields.elementTypeParams 追加のフィールド・パラメータ。
    fields.elementTypeParams.dim FloatVector または BinaryVector フィールドのオプション・パラメータで、ベクトル次元を決定します。

    上記で作成したコレクションは自動的にロードされません。以下のように、コレクションのインデックスを作成できます。別の方法でコレクションのインデックスを作成しても、コレクションは自動的にロード されません。詳細は、Load & Release Collection を参照。

    # 3.6 Create index
    client.create_index(
        collection_name="customized_setup_2",
        index_params=index_params
    )
    
    res = client.get_load_state(
        collection_name="customized_setup_2"
    )
    
    print(res)
    
    # Output
    #
    # {
    #     "state": "<LoadState: NotLoad>"
    # }
    
    CreateIndexReq  createIndexReq = CreateIndexReq.builder()
        .collectionName("customized_setup_2")
        .indexParams(indexParams)
        .build();
    
    client.createIndex(createIndexReq);
    
    // Thread.sleep(1000);
    
    // 3.7 Get load state of the collection
    GetLoadStateReq customSetupLoadStateReq2 = GetLoadStateReq.builder()
        .collectionName("customized_setup_2")
        .build();
    
    res = client.getLoadState(customSetupLoadStateReq2);
    
    System.out.println(res);
    
    // Output:
    // false
    
    // 3.5 Create index
    res = await client.createIndex({
        collection_name: "customized_setup_2",
        field_name: "my_vector",
        index_type: "IVF_FLAT",
        metric_type: "IP",
        params: { nlist: 1024}
    })
    
    res = await client.getLoadState({
        collection_name: "customized_setup_2"
    })
    
    console.log(res.state)
    
    // Output
    // 
    // LoadStateNotLoad
    //
    
    $ curl -X POST "http://${MILVUS_URI}/v2/vectordb/indexes/create" \
    -H "Content-Type: application/json" \
    -d '{
        "collectionName": "customized_setup_2",
        "indexParams": [
            {
                "metricType": "L2",
                "fieldName": "my_vector",
                "indexName": "my_vector",
                "indexConfig": {
                    "index_type": "IVF_FLAT",
                    "nlist": "1024"
                }
            }
        ]
    }'
    
    # Output
    #
    # {
    #     "code": 0,
    #     "data": {},
    # }
    
    $ curl -X POST "http://${MILVUS_URI}/v2/vectordb/collections/get_load_state" \
    -H "Content-Type: application/json" \
    -d '{
        "collectionName": "customized_setup_2"
    }'
    
    # {
    #     "code": 0,
    #     "data": {
    #         "loadState": "LoadStateNotLoaded"
    #     }
    # }
    
    パラメータ 説明
    collection_name コレクションの名前。
    index_params IndexParamオブジェクトのリストを含むIndexParamsオブジェクト。
パラメータ 説明
collectionName コレクションの名前。
indexParams IndexParamオブジェクトのリスト。
パラメータ 説明
collection_name コレクションの名前。
field_name インデックスを作成するフィールドの名前。
index_type 特定のフィールドにデータを配置するために使用するアルゴリズム名。適用可能なアルゴリズムについては、In-memory IndexおよびOn-disk Index を参照してください。
metric_type ベクトル間の類似度を測定するために使用されるアルゴリズム。指定可能な値はIPL2COSINEJACCARDHAMMING。これは、指定されたフィールドがベクトル・フィールドである場合にのみ使用できる。詳しくはMilvusでサポートされているインデックスを参照してください。
params 指定されたインデックス・タイプの微調整パラメータ。指定可能なキーと値の範囲の詳細については、メモリ内インデックスを参照してください。
パラメータ 説明
collectionName コレクションの名前。
indexParams 作成するコレクションのインデックス・パラメータ。
indexParams.metricType インデックスの構築に使用される類似度メトリックのタイプ。既定値は COSINE。
indexParams.fieldName インデックスを作成する対象フィールドの名前。
indexParams.indexName 作成するインデックスの名前。値の既定値はターゲット・フィールド名です。
indexParams.indexConfig.index_type 作成するインデックスのタイプ。
indexParams.indexConfig.nlist クラスタ・ユニットの数。これはIVF関連のインデックス・タイプに適用されます。

コレクションの表示

既存のコレクションの詳細を確認するにはdescribe_collection() を使用します。

既存のコレクションの詳細を確認するにはdescribeCollection() を使用します。

既存のコレクションの詳細を確認するにはdescribeCollection() を使用します。

コレクションの定義を表示するには POST /v2/vectordb/collections/describeおよび POST /v2/vectordb/collections/listAPI エンドポイントを使用します。

# 5. View Collections
res = client.describe_collection(
    collection_name="customized_setup_2"
)

print(res)

# Output
#
# {
#     "collection_name": "customized_setup_2",
#     "auto_id": false,
#     "num_shards": 1,
#     "description": "",
#     "fields": [
#         {
#             "field_id": 100,
#             "name": "my_id",
#             "description": "",
#             "type": 5,
#             "params": {},
#             "element_type": 0,
#             "is_primary": true
#         },
#         {
#             "field_id": 101,
#             "name": "my_vector",
#             "description": "",
#             "type": 101,
#             "params": {
#                 "dim": 5
#             },
#             "element_type": 0
#         }
#     ],
#     "aliases": [],
#     "collection_id": 448143479230158446,
#     "consistency_level": 2,
#     "properties": {},
#     "num_partitions": 1,
#     "enable_dynamic_field": true
# }

import io.milvus.v2.service.collection.request.DescribeCollectionReq;
import io.milvus.v2.service.collection.response.DescribeCollectionResp;

// 4. View collections
DescribeCollectionReq describeCollectionReq = DescribeCollectionReq.builder()
    .collectionName("customized_setup_2")
    .build();

DescribeCollectionResp describeCollectionRes = client.describeCollection(describeCollectionReq);

System.out.println(JSONObject.toJSON(describeCollectionRes));

// Output:
// {
//     "createTime": 449005822816026627,
//     "collectionSchema": {"fieldSchemaList": [
//         {
//             "autoID": false,
//             "dataType": "Int64",
//             "name": "my_id",
//             "description": "",
//             "isPrimaryKey": true,
//             "maxLength": 65535,
//             "isPartitionKey": false
//         },
//         {
//             "autoID": false,
//             "dataType": "FloatVector",
//             "name": "my_vector",
//             "description": "",
//             "isPrimaryKey": false,
//             "dimension": 5,
//             "maxLength": 65535,
//             "isPartitionKey": false
//         }
//     ]},
//     "vectorFieldName": ["my_vector"],
//     "autoID": false,
//     "fieldNames": [
//         "my_id",
//         "my_vector"
//     ],
//     "description": "",
//     "numOfPartitions": 1,
//     "primaryFieldName": "my_id",
//     "enableDynamicField": true,
//     "collectionName": "customized_setup_2"
// }
// 5. View Collections
res = await client.describeCollection({
    collection_name: "customized_setup_2"
})

console.log(res)

// Output
// 
// {
//   virtual_channel_names: [ 'by-dev-rootcoord-dml_13_449007919953017716v0' ],
//   physical_channel_names: [ 'by-dev-rootcoord-dml_13' ],
//   aliases: [],
//   start_positions: [],
//   properties: [],
//   status: {
//     extra_info: {},
//     error_code: 'Success',
//     reason: '',
//     code: 0,
//     retriable: false,
//     detail: ''
//   },
//   schema: {
//     fields: [ [Object], [Object] ],
//     properties: [],
//     name: 'customized_setup_2',
//     description: '',
//     autoID: false,
//     enable_dynamic_field: false
//   },
//   collectionID: '449007919953017716',
//   created_timestamp: '449024569603784707',
//   created_utc_timestamp: '1712892797866',
//   shards_num: 1,
//   consistency_level: 'Bounded',
//   collection_name: 'customized_setup_2',
//   db_name: 'default',
//   num_partitions: '1'
// }
// 
curl -X POST "http://${MILVUS_URI}/v2/vectordb/collections/describe" \
-H "Content-Type: application/json" \
-d '{
    "dbName": "default",
    "collectionName": "test_collection"
}'

# {
#     "code": 0,
#     "data": {
#         "aliases": [],
#         "autoId": false,
#         "collectionID": 448707763883002014,
#         "collectionName": "test_collection",
#         "consistencyLevel": "Bounded",
#         "description": "",
#         "enableDynamicField": true,
#         "fields": [
#             {
#                 "autoId": false,
#                 "description": "",
#                 "id": 100,
#                 "name": "id",
#                 "partitionKey": false,
#                 "primaryKey": true,
#                 "type": "Int64"
#             },
#             {
#                 "autoId": false,
#                 "description": "",
#                 "id": 101,
#                 "name": "vector",
#                 "params": [
#                     {
#                         "key": "dim",
#                         "value": "5"
#                     }
#                 ],
#                 "partitionKey": false,
#                 "primaryKey": false,
#                 "type": "FloatVector"
#             }
#         ],
#         "indexes": [
#             {
#                 "fieldName": "vector",
#                 "indexName": "vector",
#                 "metricType": "COSINE"
#             }
#         ],
#         "load": "LoadStateLoaded",
#         "partitionsNum": 1,
#         "properties": [],
#         "shardsNum": 1
#     }
# }

既存のコレクションをすべてリストアップするには、以下のようにする:

# 6. List all collection names
res = client.list_collections()

print(res)

# Output
#
# [
#     "customized_setup_2",
#     "quick_setup",
#     "customized_setup_1"
# ]
import io.milvus.v2.service.collection.response.ListCollectionsResp;

// 5. List all collection names
ListCollectionsResp listCollectionsRes = client.listCollections();

System.out.println(listCollectionsRes.getCollectionNames());

// Output:
// [
//     "customized_setup_2",
//     "quick_setup",
//     "customized_setup_1"
// ]
// 5. List all collection names
ListCollectionsResp listCollectionsRes = client.listCollections();

System.out.println(listCollectionsRes.getCollectionNames());

// Output:
// [
//     "customized_setup_1",
//     "quick_setup",
//     "customized_setup_2"
// ]
$ curl -X POST "http://${MILVUS_URI}/v2/vectordb/collections/list" \
-H "Content-Type: application/json" \
-d '{
    "dbName": "default"
}'

# {
#   "code": 0,
#   "data": [
#     "quick_setup",
#     "customized_setup_1",
#     "customized_setup_2"
#   ]
# }

コレクションのロードとリリース

コレクションをロードする際、Milvusはコレクションのインデックスファイルをメモリにロードします。逆に、コレクションをリリースする際、Milvusはインデックスファイルをメモリからアンロードします。コレクションで検索を行う前に、コレクションがロードされていることを確認してください。

コレクションのロード

コレクションをロードするには load_collection()メソッドを使用し、コレクション名を指定します。また、replica_number を設定して、コレクションのロード時にクエリノード上に作成するデータセグメントのメモリ内レプリカの数を決定することもできます。

  • Milvus Standaloneの場合:replica_number の最大許容値は 1 です。
  • Milvus Cluster:最大値はMilvus構成で設定されたqueryNode.replicas を超えないようにしてください。詳細については、クエリ・ノード関連設定を参照してください。

コレクションをロードするには loadCollection()メソッドを使用し、コレクション名を指定します。

コレクションをロードするには loadCollection()メソッドを使用します。

コレクションをロードするには POST /v2/vectordb/collections/loadおよび POST /v2/vectordb/collections/get_load_stateAPI エンドポイントを使用します。

# 7. Load the collection
client.load_collection(
    collection_name="customized_setup_2",
    replica_number=1 # Number of replicas to create on query nodes. Max value is 1 for Milvus Standalone, and no greater than `queryNode.replicas` for Milvus Cluster.
)

res = client.get_load_state(
    collection_name="customized_setup_2"
)

print(res)

# Output
#
# {
#     "state": "<LoadState: Loaded>"
# }
import io.milvus.v2.service.collection.request.LoadCollectionReq;

// 6. Load the collection
LoadCollectionReq loadCollectionReq = LoadCollectionReq.builder()
    .collectionName("customized_setup_2")
    .build();

client.loadCollection(loadCollectionReq);

// Thread.sleep(5000);

// 7. Get load state of the collection
GetLoadStateReq loadStateReq = GetLoadStateReq.builder()
    .collectionName("customized_setup_2")
    .build();

res = client.getLoadState(loadStateReq);

System.out.println(res);

// Output:
// true
// 7. Load the collection
res = await client.loadCollection({
    collection_name: "customized_setup_2"
})

console.log(res.error_code)

// Output
// 
// Success
// 

await sleep(3000)

res = await client.getLoadState({
    collection_name: "customized_setup_2"
})

console.log(res.state)

// Output
// 
// LoadStateLoaded
// 
$ curl -X POST "http://${MILVUS_URI}/v2/vectordb/collections/load" \
-H "Content-Type: application/json" \
-d '{
    "collectionName": "customized_setup_2"
}'

# Output
#
# {
#     "code": 0,
#     "data": {},
# }

$ curl -X POST "http://${MILVUS_URI}/v2/vectordb/collections/get_load_state" \
-H "Content-Type: application/json" \
-d '{
  "collectionName": "customized_setup_2"
}'

# {
#     "code": 0,
#     "data": {
#         "loadProgress": 100,
#         "loadState": "LoadStateLoaded"
#     }
# }

コレクションを部分的に読み込む(パブリックプレビュー)

この機能は現在パブリックプレビュー中です。APIと機能は将来変更される可能性があります。

ロード要求を受け取ると、Milvusはすべてのベクトルフィールドインデックスとすべてのスカラーフィールドデータをメモリにロードします。検索やクエリに関与しないフィールドがある場合、それらをロードから除外してメモリ使用量を削減し、検索パフォーマンスを向上させることができます。

# 7. Load the collection
client.load_collection(
    collection_name="customized_setup_2",
    load_fields=["my_id", "my_vector"], # Load only the specified fields
    skip_load_dynamic_field=True # Skip loading the dynamic field
)

res = client.get_load_state(
    collection_name="customized_setup_2"
)

print(res)

# Output
#
# {
#     "state": "<LoadState: Loaded>"
# }

検索やクエリでフィルタリング条件や出力フィールドとして使用できるのは、load_fields にリストされたフィールドだけであることに注意してください。リストには常に主キーを含める必要があります。ロードから除外されたフィールド名はフィルタリングや出力に使用できません。

skip_load_dynamic_field=True 、ダイナミック・フィールドのロードをスキップすることができます。Milvusはダイナミックフィールドを1つのフィールドとして扱うため、ダイナミックフィールド内のすべてのキーが一緒に含まれたり除外されたりします。

コレクションの解放

コレクションを解放するには release_collection()メソッドを使用します。

コレクションを解放するには releaseCollection()メソッドを使用します。

コレクションを解放するには releaseCollection()メソッドを使用します。

コレクションを解放するには POST /v2/vectordb/collections/releaseおよび POST /v2/vectordb/collections/get_load_stateAPIエンドポイントを使用します。

# 8. Release the collection
client.release_collection(
    collection_name="customized_setup_2"
)

res = client.get_load_state(
    collection_name="customized_setup_2"
)

print(res)

# Output
#
# {
#     "state": "<LoadState: NotLoad>"
# }
import io.milvus.v2.service.collection.request.ReleaseCollectionReq;

// 8. Release the collection
ReleaseCollectionReq releaseCollectionReq = ReleaseCollectionReq.builder()
    .collectionName("customized_setup_2")
    .build();

client.releaseCollection(releaseCollectionReq);

// Thread.sleep(1000);

res = client.getLoadState(loadStateReq);

System.out.println(res);

// Output:
// false
// 8. Release the collection
res = await client.releaseCollection({
    collection_name: "customized_setup_2"
})

console.log(res.error_code)

// Output
// 
// Success
// 

res = await client.getLoadState({
    collection_name: "customized_setup_2"
})

console.log(res.state)

// Output
// 
// LoadStateNotLoad
// 
$ curl -X POST "http://${MILVUS_URI}/v2/vectordb/collections/release" \
-H "Content-Type: application/json" \
-d '{
    "collectionName": "customized_setup_2"
}'

# Output
#
# {
#     "code": 0,
#     "data": {},
# }


$ curl -X POST "http://${MILVUS_URI}/v2/vectordb/collections/get_load_state" \
-H "Content-Type: application/json" \
-d '{
  "collectionName": "customized_setup_2"
}'


# {
#     "code": 0,
#     "data": {
#         "loadState": "LoadStateNotLoad"
#     }
# }

エイリアスの設定

コレクションにエイリアスを割り当てて、特定のコンテキストでより意味のあるものにすることができます。コレクションには複数のエイリアスを割り当てることができますが、複数のコレクションでエイリアスを共有することはできません。

エイリアスの作成

エイリアスを作成するには create_alias()メソッドを使用して、コレクション名とエイリアスを指定します。

エイリアスを作成するには createAlias()メソッドを使用し、コレクション名とエイリアスを指定します。

エイリアスを作成するには createAlias()メソッドを使用し、コレクション名とエイリアスを指定します。

コレクションのエイリアスを作成するには POST /v2/vectordb/aliases/createAPI エンドポイントを使用します。

# 9.1. Create aliases
client.create_alias(
    collection_name="customized_setup_2",
    alias="bob"
)

client.create_alias(
    collection_name="customized_setup_2",
    alias="alice"
)
import io.milvus.v2.service.utility.request.CreateAliasReq;

// 9. Manage aliases

// 9.1 Create alias
CreateAliasReq createAliasReq = CreateAliasReq.builder()
    .collectionName("customized_setup_2")
    .alias("bob")
    .build();

client.createAlias(createAliasReq);

createAliasReq = CreateAliasReq.builder()
    .collectionName("customized_setup_2")
    .alias("alice")
    .build();

client.createAlias(createAliasReq);
// 9. Manage aliases
// 9.1 Create aliases
res = await client.createAlias({
    collection_name: "customized_setup_2",
    alias: "bob"
})

console.log(res.error_code)

// Output
// 
// Success
// 

res = await client.createAlias({
    collection_name: "customized_setup_2",
    alias: "alice"
})

console.log(res.error_code)

// Output
// 
// Success
// 
$ curl -X POST "http://${MILVUS_URI}/v2/vectordb/aliases/create" \
-H "Content-Type: application/json" \
-d '{
    "collectionName": "customized_setup_2",
    "aliasName": "bob"
}'

# Output
#
# {
#     "code": 0,
#     "data": {}
# }

$ curl -X POST "http://${MILVUS_URI}/v2/vectordb/aliases/create" \
-H "Content-Type: application/json" \
-d '{
    "collectionName": "customized_setup_2",
    "aliasName": "alice"
}'

# Output
#
# {
#     "code": 0,
#     "data": {}
# }
パラメータ 説明
collection_name エイリアスを作成するコレクションの名前。
alias コレクションのエイリアス。この操作の前に、エイリアスが既に存在しないことを確認してください。存在する場合は例外が発生します。
パラメータ 説明
collectionName エイリアスを作成するコレクションの名前。
alias コレクションのエイリアス。この操作の前に、エイリアスが既に存在しないことを確認してください。存在する場合は例外が発生します。
パラメータ 説明
collection_name エイリアスを作成するコレクションの名前。
alias コレクションのエイリアス。この操作の前に、エイリアスが既に存在しないことを確認してください。存在する場合は例外が発生します。
パラメータ 説明
collectionName エイリアスを作成するコレクションの名前。
aliasName コレクションのエイリアス。この操作の前に、エイリアスが既に存在しないことを確認してください。存在する場合は例外が発生します。

エイリアスのリスト

エイリアスをリストするには list_aliases()メソッドを使用します。

エイリアスをリストするには listAliases()メソッドを使用します。

エイリアスをリストするには listAliases()メソッドを使用します。

コレクションのエイリアスをリストするには POST /v2/vectordb/aliases/listAPI エンドポイントを使用します。

# 9.2. List aliases
res = client.list_aliases(
    collection_name="customized_setup_2"
)

print(res)

# Output
#
# {
#     "aliases": [
#         "bob",
#         "alice"
#     ],
#     "collection_name": "customized_setup_2",
#     "db_name": "default"
# }
import io.milvus.v2.service.utility.request.ListAliasesReq;
import io.milvus.v2.service.utility.response.ListAliasResp;

// 9.2 List alises
ListAliasesReq listAliasesReq = ListAliasesReq.builder()
    .collectionName("customized_setup_2")
    .build();

ListAliasResp listAliasRes = client.listAliases(listAliasesReq);

System.out.println(listAliasRes.getAlias());

// Output:
// [
//     "bob",
//     "alice"
// ]
// 9.2 List aliases
res = await client.listAliases({
    collection_name: "customized_setup_2"
})

console.log(res.aliases)

// Output
// 
// [ 'bob', 'alice' ]
// 
$ curl -X POST "http://${MILVUS_URI}/v2/vectordb/aliases/list" \
-H "Content-Type: application/json" \
-d '{
    "collectionName": "customized_setup_2"
}'

# {
#     "code": 0,
#     "data": [
#         "bob",
#         "alice"
#     ]
# }

エイリアスの記述

エイリアスを記述するには describe_alias()メソッドを使います。

エイリアスを記述するには describeAlias()メソッドを使う。

エイリアスを記述するには describeAlias()メソッドを使用します。

コレクションのエイリアスを記述するには POST /v2/vectordb/aliases/describeAPI エンドポイントを使用します。

# 9.3. Describe aliases
res = client.describe_alias(
    alias="bob"
)

print(res)

# Output
#
# {
#     "alias": "bob",
#     "collection_name": "customized_setup_2",
#     "db_name": "default"
# }
import io.milvus.v2.service.utility.request.DescribeAliasReq;
import io.milvus.v2.service.utility.response.DescribeAliasResp;

// 9.3 Describe alias
DescribeAliasReq describeAliasReq = DescribeAliasReq.builder()
    .alias("bob")
    .build();

DescribeAliasResp describeAliasRes = client.describeAlias(describeAliasReq);

System.out.println(JSONObject.toJSON(describeAliasRes));

// Output:
// {
//     "alias": "bob",
//     "collectionName": "customized_setup_2"
// }
// 9.3 Describe aliases
res = await client.describeAlias({
    collection_name: "customized_setup_2",
    alias: "bob"
})

console.log(res)

// Output
// 
// {
//   status: {
//     extra_info: {},
//     error_code: 'Success',
//     reason: '',
//     code: 0,
//     retriable: false,
//     detail: ''
//   },
//   db_name: 'default',
//   alias: 'bob',
//   collection: 'customized_setup_2'
// }
// 
$ curl -X POST "http://${MILVUS_URI}/v2/vectordb/aliases/describe" \
-H "Content-Type: application/json" \
-d '{
    "aliasName": "bob"
}'

# {
#     "code": 0,
#     "data": {
#         "aliasName": "bob",
#         "collectionName": "quick_setup",
#         "dbName": "default"
#     }
# }

エイリアスの再割り当て

エイリアスを他のコレクションに再割り当てするには alter_alias()メソッドを使用して、コレクション名とエイリアスを指定します。

エイリアスを他のコレクションに再割り当てするには alterAlias()メソッドを使用して、コレクション名とエイリアスを指定します。

エイリアスを他のコレクションに再割り当てするには alterAlias()メソッドを使用して、コレクション名とエイリアスを指定します。

エイリアスを他のコレクションに再割り当てするには POST /v2/vectordb/aliases/alterAPIエンドポイントを使用します。

# 9.4 Reassign aliases to other collections
client.alter_alias(
    collection_name="customized_setup_1",
    alias="alice"
)

res = client.list_aliases(
    collection_name="customized_setup_1"
)

print(res)

# Output
#
# {
#     "aliases": [
#         "alice"
#     ],
#     "collection_name": "customized_setup_1",
#     "db_name": "default"
# }

res = client.list_aliases(
    collection_name="customized_setup_2"
)

print(res)

# Output
#
# {
#     "aliases": [
#         "bob"
#     ],
#     "collection_name": "customized_setup_2",
#     "db_name": "default"
# }
import io.milvus.v2.service.utility.request.AlterAliasReq;

// 9.4 Reassign alias to other collections
AlterAliasReq alterAliasReq = AlterAliasReq.builder()
    .collectionName("customized_setup_1")
    .alias("alice")
    .build();

client.alterAlias(alterAliasReq);

listAliasesReq = ListAliasesReq.builder()
    .collectionName("customized_setup_1")
    .build();

listAliasRes = client.listAliases(listAliasesReq);

System.out.println(listAliasRes.getAlias());

// Output:
// ["alice"]

listAliasesReq = ListAliasesReq.builder()
    .collectionName("customized_setup_2")
    .build();

listAliasRes = client.listAliases(listAliasesReq);

System.out.println(listAliasRes.getAlias());

// Output:
// ["bob"]
// 9.4 Reassign aliases to other collections
res = await client.alterAlias({
    collection_name: "customized_setup_1",
    alias: "alice"
})

console.log(res.error_code)

// Output
// 
// Success
// 

res = await client.listAliases({
    collection_name: "customized_setup_1"
})

console.log(res.aliases)

// Output
// 
// [ 'alice' ]
// 

res = await client.listAliases({
    collection_name: "customized_setup_2"
})

console.log(res.aliases)

// Output
// 
// [ 'bob' ]
// 
$ curl -X POST "http://${MILVUS_URI}/v2/vectordb/aliases/alter" \
-H "Content-Type: application/json" \
-d '{
     "collectionName": "customized_setup_1",
     "aliasName": "alice"
}'

# {
#     "code": 0,
#     "data": {}
# }


$ curl -X POST "http://${MILVUS_URI}/v2/vectordb/aliases/list" \
-H "Content-Type: application/json" \
-d '{
    "collectionName": "customized_setup_1"
}'


# {
#     "code": 0,
#     "data": [
#         "alice"
#     ]
# }


$ curl -X POST "http://${MILVUS_URI}/v2/vectordb/aliases/list" \
-H "Content-Type: application/json" \
-d '{
    "collectionName": "customized_setup_2"
}'


# {
#     "code": 0,
#     "data": [
#         "bob"
#     ]
# }

エイリアスの削除

エイリアスを削除するには drop_alias()メソッドを使う。

エイリアスを削除するには dropAlias()メソッドを使う。

エイリアスを削除するには dropAlias()メソッドを使用します。

コレクションのエイリアスを削除するには POST /v2/vectordb/aliases/dropAPIエンドポイントを使用します。

# 9.5 Drop aliases
client.drop_alias(
    alias="bob"
)

client.drop_alias(
    alias="alice"
)
import io.milvus.v2.service.utility.request.DropAliasReq;

// 9.5 Drop alias
DropAliasReq dropAliasReq = DropAliasReq.builder()
    .alias("bob")
    .build();

client.dropAlias(dropAliasReq);

dropAliasReq = DropAliasReq.builder()
    .alias("alice")
    .build();

client.dropAlias(dropAliasReq);
// 9.5 Drop aliases
res = await client.dropAlias({
    alias: "bob"
})

console.log(res.error_code)

// Output
// 
// Success
// 

res = await client.dropAlias({
    alias: "alice"
})

console.log(res.error_code)

// Output
// 
// Success
// 
$ curl -X POST "http://${MILVUS_URI}/v2/vectordb/aliases/drop" \
-H "Content-Type: application/json" \
-d '{
    "aliasName": "bob"
}'

# {
#     "code": 0,
#     "data": {}
# }


$ curl -X POST "http://${MILVUS_URI}/v2/vectordb/aliases/drop" \
-H "Content-Type: application/json" \
-d '{
    "aliasName": "alice"
}'


# {
#     "code": 0,
#     "data": {}
# }

プロパティの設定

ttl.secondsmmap.enabled など、コレクションのプロパティを設定できます。詳細はset_properties() を参照してください。

このセクションのコードスニペットはPyMilvus ORMモジュールを使用してMilvusとやりとりします。新しいMilvusClient SDKを使用したコードスニペットは近日公開予定です。

TTLの設定

コレクション内のデータのTTL(Time-To-Live)を設定します。これはデータが自動的に削除されるまでの保持期間を指定します。

from pymilvus import Collection, connections

# Connect to Milvus server
connections.connect(host="localhost", port="19530") # Change to your Milvus server IP and port

# Get existing collection
collection = Collection("quick_setup")

# Set the TTL for the data in the collection
collection.set_properties(
    properties={
        "collection.ttl.seconds": 60
    }
)

MMAP の設定

これは、クエリのパフォーマンスを向上させるために、データをメモリにマッピングするかどうかを決定します。詳細は、メモリ・マッピングの構成 を参照してください。

MMAP プロパティを設定する前に、まずコレクションを解放します。そうしないと、エラーが発生します。

from pymilvus import Collection, connections

# Connect to Milvus server
connections.connect(host="localhost", port="19530") # Change to your Milvus server IP and port

# Get existing collection
collection = Collection("quick_setup")

# Before setting memory mapping property, we need to release the collection first.
collection.release()

# Set memory mapping property to True or Flase
collection.set_properties(
    properties={
        "mmap.enabled": True
    }
)

コレクションを放棄する

コレクションが不要になった場合、コレクションを削除できます。

コレクションを削除するには drop_collection()メソッドを使用します。

コレクションを削除するには dropCollection()メソッドを使用します。

コレクションを削除するには dropCollection()メソッドを使用します。

コレクションを削除するには POST /v2/vectordb/collections/dropAPIエンドポイントを使用します。

# 10. Drop the collections
client.drop_collection(
    collection_name="quick_setup"
)

client.drop_collection(
    collection_name="customized_setup_1"
)

client.drop_collection(
    collection_name="customized_setup_2"
)
import io.milvus.v2.service.collection.request.DropCollectionReq;

// 10. Drop collections

DropCollectionReq dropQuickSetupParam = DropCollectionReq.builder()
    .collectionName("quick_setup")
    .build();

client.dropCollection(dropQuickSetupParam);

DropCollectionReq dropCustomizedSetupParam = DropCollectionReq.builder()
    .collectionName("customized_setup_1")
    .build();

client.dropCollection(dropCustomizedSetupParam);

dropCustomizedSetupParam = DropCollectionReq.builder()
    .collectionName("customized_setup_2")
    .build();

client.dropCollection(dropCustomizedSetupParam);
// 10. Drop the collection
res = await client.dropCollection({
    collection_name: "customized_setup_2"
})

console.log(res.error_code)

// Output
// 
// Success
// 

res = await client.dropCollection({
    collection_name: "customized_setup_1"
})

console.log(res.error_code)

// Output
// 
// Success
// 

res = await client.dropCollection({
    collection_name: "quick_setup"
})

console.log(res.error_code)

// Output
// 
// Success
// 
$ curl -X POST "http://${MILVUS_URI}/v2/vectordb/collections/drop" \
-H "Content-Type: application/json" \
-d '{
    "collectionName": "quick_setup"
}'

# {
#     "code": 0,
#     "data": {}
# }


$ curl -X POST "http://${MILVUS_URI}/v2/vectordb/collections/drop" \
-H "Content-Type: application/json" \
-d '{
    "collectionName": "customized_setup_1"
}'


# {
#     "code": 0,
#     "data": {}
# }


$ curl -X POST "http://${MILVUS_URI}/v2/vectordb/collections/drop" \
-H "Content-Type: application/json" \
-d '{
    "collectionName": "customized_setup_2"
}'


# {
#     "code": 0,
#     "data": {}
# }

翻訳DeepL

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
フィードバック

このページは役に立ちましたか ?