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

コレクションの説明

Milvusでは、データを管理するために複数のコレクションを作成し、データをエンティティとしてコレクションに挿入することができます。コレクションとエンティティはリレーショナルデータベースのテーブルとレコードに似ています。このページでは、コレクションと関連する概念について説明します。

コレクション

コレクションは、固定列と可変行を持つ2次元テーブルです。各列はフィールドを表し、各行はエンティティを表します。

次の図は、8 つの列と 6 つのエンティティを持つコレクションを示しています。

Collection explained コレクションの説明

スキーマとフィールド

オブジェクトを説明するときは、通常、サイズ、重量、位置などの属性に言及します。これらの属性は、コレクションのフィールドとして使用できます。各フィールドには、データ型やベクトル・フィールドの次元数など、さまざまな制約プロパティがあります。フィールドを作成し、それらの順序を定義することで、コレクションスキーマを形成できます。適用可能なデータ型については、スキーマの説明を参照してください。

挿入するエンティティには、すべてのスキーマ定義フィールドを含める必要があります。一部のフィールドをオプションにするには、以下を検討します。

  • フィールドを NULL 可能にするか、デフォルト値を設定します

    フィールドを NULL 可能にする方法またはデフォルト値を設定する方法の詳細は、Nullable & Default を参照してください。

  • ダイナミック・フィールドの有効化

    ダイナミック・フィールドを有効にして使用する方法の詳細については、ダイナミック・フィールドを参照してください。

主キーと AutoId

リレーショナルデータベースのプライマリフィールドと同様に、コレクションには、エンティティを他と区別するためのプライマリフィールドがあります。プライマリ・フィールドの各値は、グローバルに一意であり、1 つの特定のエンティティに対応します。

上の図に示すように、idというフィールドがプライマリ・フィールドとして機能し、最初の ID0は、「コロナウイルスの死亡率は重要ではありません」というタイトルのエンティティに対応します。プライマリ・フィールドが 0 のエンティティは他に存在しません。

プライマリ・フィールドは、整数または文字列のみを受け入れます。エンティティの挿入時には、プライマリ・フィールドの値をデフォルトで含める必要があります。しかし、コレクション作成時にAutoIdを有効にしている場合、Milvusはデータ挿入時にそれらの値を生成します。このような場合は、挿入するエンティティからプライマリフィールド値を除外します。

詳細については、プライマリフィールドとAutoIDを参照してください。

インデックス

特定のフィールドにインデックスを作成すると、検索効率が向上します。サービスが依存するすべてのフィールドにインデックスを作成することをお勧めします。中でもベクターフィールドのインデックスは必須です。

エンティティ

エンティティは、コレクション内の同じフィールドセットを共有するデータレコードです。同じ行のすべてのフィールドの値がエンティティを構成します。

エンティティは、コレクションに必要な数だけ挿入できます。ただし、エンティティの数が増えると、必要となるメモリ・サイズも増加し、検索パ フォーマンスに影響します。

詳細については、スキーマの説明を参照してください。

ロードとリリース

コレクションのロードは、コレクションで類似検索とクエリを実行するための前提条件です。コレクションをロードすると、Milvusはすべてのインデックスファイルと各フィールドの生データをメモリにロードし、検索やクエリに高速に対応できるようにします。

検索とクエリはメモリを大量に消費します。コストを節約するには、現在使用していないコレクションを解放することをお勧めします。

詳細については、ロードと解放を参照してください。

検索とクエリ

インデックスを作成し、コレクションをロードすると、1つまたは複数のクエリ・ベクタを投入して 類似性検索を開始できます。例えば、検索リクエストに含まれるクエリのベクトル表現を受信すると、Milvusは指定されたメトリックタイプを使用してクエリベクトルとターゲットコレクション内の類似性を測定し、クエリと意味的に類似したものを返します。

検索やクエリにメタデータフィルタリングを含めることで、結果の関連性を向上させることもできます。メタデータのフィルタリング条件は、クエリでは必須ですが、検索ではオプションです。

適用可能なメトリック・タイプの詳細については、メトリック・タイプを参照してください。

検索とクエリの詳細については、検索と再ランクの章の記事を参照してください。

さらに、Milvusは検索パフォーマンスと効率を向上させるための拡張機能も提供しています。これらはデフォルトでは無効になっており、お客様のサービス要件に応じて有効にしたり、使用したりすることができます。それらは以下の通りです。

パーティション

パーティションは、親コレクションと同じフィールド・セットを共有するコレクションのサブセットで、それぞれがエンティティのサブセットを含みます。

エンティティを異なるパーティションに割り当てることで、エンティティ・グループを作成できます。特定のパーティションで検索やクエリを行うことで、milvusが他のパーティションのエンティティを無視し、検索効率を向上させることができます。

詳細については、「パーティションの管理」を参照してください。

シャード

シャードはコレクションの水平方向のスライスです。各シャードはデータ入力チャンネルに対応する。デフォルトでは、すべてのコレクションにシャードがあります。予想されるスループットとコレクションに挿入するデータ量に基づいて、コ レクションを作成するときに適切なシャードの数を設定できます。

シャード数を設定する方法の詳細は、Create Collectionを参照してください。

エイリアス

コレクションにエイリアスを作成できます。コレクションは複数のエイリアスを持つことができますが、コレクションはエイリアスを共有できません。コレクションに対するリクエストを受け取ると、Milvusは指定された名前に基づいてコレクションを検索します。指定された名前のコレクションが存在しない場合、Milvusはエイリアスとして指定された名前を探し続けます。コレクションエイリアスを使用すると、コードをさまざまなシナリオに適応させることができます。

詳細については、エイリアスの管理を参照してください。

関数

Milvusがコレクション作成時にフィールドを導出するための関数を設定できます。たとえば、全文検索関数は、ユーザ定義関数を使用して、特定のvarcharフィールドからスパースベクトルフィールドを導出します。全文検索の詳細については、全文検索を参照してください。

一貫性レベル

分散データベースシステムでは通常、整合性レベルを使用してデータノードやレプリカ間のデータの同一性を定義します。コ レ ク シ ョ ン を作成す る 際や、 コ レ ク シ ョ ン内で類似性検索を実行す る 際に、 個別の一貫性レベルを設定で き ます。適用可能な一貫性レベルは、StrongBounded StalenessSession、およびEventuallyです。

これらの一貫性レベルの詳細については、一貫性レベルを参照してください。

制限

コレクションの制限と制約については、Limits & Restrictionsを参照してください。

翻訳DeepL

Try Managed Milvus for Free

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

Get Started
フィードバック

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