コレクションの概要
Zilliz Cloudでは、複数のコレクションを作成してデータを管理し、エンティティとしてデータをコレクションに挿入できます。コレクションとエンティティは、リレーショナルデータベースにおけるテーブルとレコードに似ています。このページでは、コレクションおよび関連する概念について説明します。
コレクション
コレクションは、列が固定され行が可変の二次元テーブルです。各列はフィールドを表し、各行はエンティティを表します。
次の図は、8つの列と6つのエンティティを持つコレクションを示しています。

スキーマとフィールド
オブジェクトを記述する際、通常はサイズ、重さ、位置などの属性に言及します。これらの属性をコレクション内のフィールドとして使用できます。各フィールドには、データ型やベクトルフィールドの次元数など、さまざまな制約プロパティがあります。フィールドを作成し、その順序を定義することで、コレクションのスキーマを構成できます。使用可能なデータ型については、スキーマの概要を参照してください。
挿入するエンティティには、スキーマで定義されたすべてのフィールドを含める必要があります。一部のフィールドを任意にするには、以下のオプションを検討してください。
-
NULL許容にする、またはデフォルト値を設定する
フィールドをNULL許容にする方法やデフォルト値を設定する方法の詳細については、NULL許容 & デフォルトを参照してください。
-
動的フィールドの有効化
動的フィールドを有効化および使用する方法の詳細については、動的フィールドを参照してください。
主キーとAutoId
リレーショナルデータベースの主キーと同様に、コレクションにはエンティティを他のエンティティと区別するための主フィールドがあります。主フィールドの各値はグローバルに一意であり、特定のエンティティに対応します。
上記の図に示されているように、id という名前のフィールドが主フィールドとして機能しており、最初のID 0 は The Mortality Rate of Coronavirus is Not Important というタイトルのエンティティに対応しています。主フィールドが0である他のエンティティは存在しません。
主フィールドは整数または文字列のみを受け入れます。エンティティを挿入する際、デフォルトでは主フィールドの値を含める必要があります。ただし、コレクション作成時に AutoId を有効にした場合、Zilliz Cloudはデータ挿入時にこれらの値を自動生成します。その場合、挿入するエンティティから主フィールドの値を除外してください。
詳細については、主フィールド & AutoIdを参照してください。
インデックス
特定のフィールドにインデックスを作成すると、検索効率が向上します。サービスで使用するすべてのフィールドに対してインデックスを作成することをお勧めします。特にベクトルフィールドに対するインデックスは必須です。
Milvusとは異なり、Zilliz Cloud上のコレクションのベクトルフィールドに適用可能なインデックスタイプはAUTOINDEXのみです。詳細については、AUTOINDEXの概要を参照してください。
エンティティ
エンティティは、コレクション内で同じフィールドセットを共有するデータレコードです。同じ行のすべてのフィールドの値を組み合わせたものが1つのエンティティとなります。
必要に応じて、コレクションに任意の数のエンティティを挿入できます。ただし、エンティティの数が増えるにつれて必要なメモリサイズも増加し、検索パフォーマンスに影響を与える可能性があります。
詳細については、スキーマの概要を参照してください。
ロードとリリース
コレクションでの類似検索やクエリを実行するには、事前にコレクションをロードする必要があります。コレクションをロードすると、Zilliz Cloudはすべてのインデックスファイルと各フィールドの生データをメモリに読み込み、検索やクエリへの高速な応答を可能にします。
検索およびクエリはメモリを大量に消費する操作です。コストを抑えるために、現在使用していないコレクションはリリースすることをお勧めします。
詳細については、ロード & リリースを参照してください。
検索とクエリ
インデックスを作成しコレクションをロードしたら、1つまたは複数のクエリベクトルを入力して類似検索を開始できます。たとえば、検索リクエストに含まれるクエリのベクトル表現を受け取ると、Zilliz Cloudは指定されたメトリックタイプを使用して、クエリベクトルと対象コレクション内のベクトルとの類似度を測定し、クエリと意味的に類似した結果を返します。
検索およびクエリ内にメタデータフィルタリングを含めることで、結果の関連性を向上させることもできます。ただし、メタデータフィルタリング条件はクエリでは必須ですが、検索では任意です。
使用可能なメトリックタイプの詳細については、メトリックタイプを参照してください。
検索およびクエリに関する詳細情報については、検索 & リランキングの章にある記事を参照してください。基本的な機能は以下のとおりです。
さらに、Zilliz Cloudは検索パフォーマンスと効率を向上させるための機能強化も提供しています。これらはデフォルトで無効になっており、サービス要件に応じて有効化および使用できます。それらは以下のとおりです。
パーティション
パーティションはコレクションのサブセットであり、親コレクションと同じフィールドセットを共有しながら、エンティティの一部を含みます。
エンティティを異なるパーティションに割り当てることで、エンティティグループを作成できます。特定のパーティション内でのみ検索やクエリを実行することで、Zilliz Cloudは他のパーティションのエンティティを無視し、検索効率を向上させることができます。
詳細については、パーティションの管理を参照してください。
シャード
シャードはコレクションの水平方向のスライスです。各シャードはデータ入力チャネルに対応します。すべてのコレクションにはデフォルトで1つのシャードが存在します。コレクション作成時に、予想されるスループットと挿入するデータ量に基づいて適切なシャード数を設定できます。
シャード数の設定方法の詳細については、コレクションの作成を参照してください。
エイリアス
コレクションに対してエイリアスを作成できます。1つのコレクションに複数のエイリアスを設定できますが、複数のコレクションで同じエイリアスを共有することはできません。コレクションに対するリクエストを受信すると、Zilliz Cloudは指定された名前でコレクションを特定します。指定された名前のコレクションが存在しない場合、Zilliz Cloudはその名前をエイリアスとして検索を続けます。コレクションのエイリアスを使用することで、コードをさまざまなシナリオに適応させることができます。
詳細については、エイリアスの管理を参照してください。
関数
コレクション作成時に、Zilliz Cloudがフィールドを導出するための関数を設定できます。たとえば、全文検索機能では、ユーザー定義関数を使用して特定のvarcharフィールドからスパースベクトルフィールドを導出します。全文検索の詳細については、全文検索を参照してください。
一貫性レベル
分散データベースシステムでは、通常、一貫性レベルを使用してデータノードやレプリカ間のデータの一貫性を定義します。コレクション作成時またはコレクション内での類似検索実行時に、個別に一貫性レベルを設定できます。適用可能な一貫性レベルは、Strong(強い一貫性)、Bounded Staleness(限定的古さ許容)、Session(セッション一貫性)、Eventually(最終的一貫性)です。
これらの一貫性レベルの詳細については、一貫性レベルを参照してください。
制限
コレクションに関する制限や制約については、Zilliz Cloudの制限を参照してください。