配置オプションを検討する
項目一覧
本番前または本番環境のニーズに合わせて、さまざまな配置タイプ、クラウドプロバイダー、およびクラスター階層を使用して Atlas クラスターを構成できます。 これらの推奨事項を使用して、配置タイプ、クラウドプロバイダーとリージョン、およびベクトル検索を実行するためのクラスターと検索階層を選択します。
environment | 配置タイプ | クラスター階層 | クラウドプロバイダーのリージョン | ノード アーキテクチャ |
---|---|---|---|---|
クエリのテスト | Flex cluster, dedicated cluster Local deployment | M0 or higher tierN/A | All N/A | MongoDB プロセスと Search プロセスは同じノードで実行 |
アプリケーションのプロトタイプ作成 | 専用クラスター | Flex クラスター、 | すべて | MongoDB プロセスと Search プロセスは同じノードで実行 |
本番環境 | 個別の検索ノードを持つ専用クラスター |
| MongoDB プロセスと Search プロセスは異なるノードで実行 |
これらの配置モデルの詳細については、次のセクションを確認してください。
リソース使用
ベクトルのインデックス作成におけるメモリ要件
Atlas Vector Search はインデックス全体をメモリに保持するので、Atlas Vector Search インデックスと JVM に十分なメモリがあることを確認する必要があります。各インデックスは、インデックスが作成されるベクトルと追加のメタデータの組み合わせです。インデックスのサイズは、主にインデックスを作成するベクトルのサイズによって決まります。メタデータ スペースは通常、比較的わずかなものです。
単一のベクトルの次の要件を考慮してください。
埋め込みモデル | ベクトル次元 | スペース要件 |
---|---|---|
OpenAI | 1536 | 6kb |
Google | 768 | 3kb |
Cohere | 1024 | 1.07kb (for int8 )0.167kb (for int1 ) |
BinData 量子化ベクトル。詳細については、取り込み量子化ベクトル を参照してください。
必要なスペースは、インデックスを作成するベクトルの数とベクトル次元に応じて直線的に増加します。 また、 Search Index Sizeメトリクスを使用して、検索ノードに必要なスペースとメモリの量を判断することもできます。
ベクトルのストレージ要件
BinData または量子化ベクトルを使用すると、binData
または量子化ベクトルを使用しない場合と比較して、リソース要件が大幅に削減されます。以下の点にご注意ください。
mongod
上のベクトルのディスクストレージは、binData
ベクトルを使用することで 66% 減少します。mongot
上のベクトルの RAM 使用量は、自動ベクトル量子化または量子化ベクトル取り込みを使用することで、ベクトル圧縮により 3.75倍 (スカラー) または 24倍 (バイナリ) 減少します。
自動量子化を使用すると、Atlasは再スコアリングまたは正確な検索のために全精度ベクトルをディスクに保存し、再スコアリングのためのRAMとキャッシュの使用を最小限に抑えます。
Atlas Vector Search のインデックス定義で自動量子化を有効にする場合、クラスターのサイズを決定する際にディスク容量も考慮する必要があります。これは、Atlas Vector Search が ENN 検索および自動量子化を設定した場合の再スコアリングのために、最高精度のベクトルをディスクにも保存するためです。したがって、使用するハードウェアにおいて、ディスクと RAM の比率が適切であることを確認してください。スカラー量子化のためにストレージとRAMの比率が約 4:1、またはバイナリ量子化のためにストレージとRAMの比率が約 24:1 に対応できる検索ノードを設定することを検討してください。
例
この例は、my-embeddings
という名前のフィールドに保存されている OpenAI の 1000万、1536 次元の埋め込みのバイナリ量子化を設定する方法を示しています。
{ "fields":[ { "type": "vector", "path": "my-embeddings", "numDimensions": 1536, "similarity": "euclidean", "quantization": "binary" } ] }
次の式を使用して、再スコアリングを備えたバイナリ量子化対応インデックスのディスク容量を概算します。
Original index size * (25/24)
ここで、分母の 24
は、元のインデックスサイズを 24
の部分に分けて、分数をより簡単に表現しています。分子の 25
は、バイナリベクトルを格納するために必要な追加データのための、元のインデックスサイズの約 1 / 24 に相当する追加スペース割り当てを示しています。オリジナルのインデックスと Hierarchical Navigable Small Worlds(HNSW)グラフはディスクに保存されています。HNSW グラフが圧縮されていないため、オーバーサイズ係数は 1 / 32 ではなく 1 / 24 です。
例
元のインデックス サイズが 1 GB であると仮定します。以下に示すように、再スコアリングを使用してバイナリ量子化インデックスサイズを計算できます。
1 GB * (25/24) = 1.042 GB
重要
Atlas UI では、Atlas はインデックス全体のサイズを表示しますが、Atlas は RAM とディスクに保存されているインデックス内のデータ構造の内訳を表示しないため、サイズが大きくなる可能性があります。Atlas Search のメトリクスは、自動量子化を有効にすると、メモリに保持されるインデックスが非常に小さくなることを示しています。
自動量子化を設定したベクトルには、推定インデックスサイズの 125% に相当する空きディスク容量を割り当てることをお勧めします。
環境のテストとプロトタイプ作成
ベクトル検索クエリをテストし、アプリケーションのプロトタイプ作成には、次の構成が推奨されます。
配置タイプ
Atlas Vector Search クエリをテストするには、共有クラスターまたは専用クラスター、またはローカル Atlas 配置を配置できます。
Cluster Tiers
共有クラスターには、 M0
、 M2
、 M5
階層が含まれます。 これらの低コストのクラスタータイプは、Atlas Vector Search クエリをテストするために使用できます。 ただし、共有クラスターではリソース競合とクエリ レイテンシが発生する可能性があります。 共有クラスターでプロジェクトを開始した場合は、アプリケーションの本番環境が準備できたら、より高い階層にアップグレードすることをお勧めします。
専有クラスターにはM10
以上の階層が含まれます。 M10
階層とM20
階層はアプリケーションのプロトタイプ作成に適しています。アプリケーションが本番環境に準備が整ったら、大規模なデータセットを処理したり、ワークロードを分離するために専用の検索ノードを配置したりするために、上位階層にアップグレードできます。
クラウドプロバイダーとリージョン
選択したクラウドプロバイダーとリージョンは、クラスター階層で使用可能な構成オプションと クラスターのランニング コスト に影響します。
Atlas Vector Search クエリをローカルでテストしたい場合は、Atlas CLI を使用して、ローカル コンピューターでホストされている単一ノードのレプリカセットを配置できます。 開始するには、 Atlas Vector Search クイック スタートを完了し、ローカル配置の [] タブを選択します。
アプリケーションの本番環境が準備できたら、ライブ移行を使用してローカル Atlas の配置を本番環境に移行します。 ローカル配置は、ローカル マシンの CPU、メモリ、およびストレージ リソースによって制限されます。
ノード アーキテクチャ
この配置モデルでは、検索mongot
プロセスが Atlas クラスター内の各ノードでmongod
と並行して実行されます。 mongod
プロセスは同じノード上のmongot
にクエリをルーティングし、同じリソースを共有します。

デフォルトでは、Atlas は最初の Atlas Vector Search インデックスを作成するときに、 mongod
プロセスを実行するのと同じノードで検索mongot
プロセスを有効にします。 mongot
プロセスは、 mongot
プロセスについて で説明されているアクションを実行します。
アプリケーションのプロトタイプ作成に合わせたクラスターのサイズ設定
Atlas がデータベースと検索ワークロードを同じノードで実行する場合、MongoDB ストレージはノードの利用可能なメモリ(RAM)の一定割合を使用し、残りは Atlas Vector Search インデックスと mongot
プロセスに割り当てられます。
階層 | 合計メモリ(GB) | Atlas Vector Search インデックスで使用可能なメモリ(GB) |
---|---|---|
| 2 | 1 |
| 4 | 2 |
| 8 | 4 |
M10
、M20
、M30
のクラスター階層では、25% が MongoDB 用に予約されており、残りの 75% は Atlas Vector Search インデックスを含む他の操作に使用されます。M40+ クラスター階層では、50% が MongoDB に予約され、残りは Atlas Vector Search インデックスを含む他の操作に使用されます。
制限
データベースmongod
と検索mongot
プロセス間でリソース競合が発生する可能性があります。 これは、インデックスのパフォーマンスとクエリのレイテンシに悪影響を与える可能性があります。 この配置モデルは、環境のテストとプロトタイプ作成のみに推奨します。 本番環境に対応できるアプリケーションと関連する検索ワークロードの場合は、専用の検索ノードに移行することをお勧めします。
本番環境
本番環境のアプリケーションには、次のクラスター構成が推奨されます。
配置タイプ
本番対応のアプリケーションには、ワークロード分離のために専有クラスターに個別の検索ノードが必要です。
Cluster Tiers
専有クラスターにはM10
以上の階層が含まれます。 M10
階層とM20
階層は開発環境と本番環境に適しています。ただし、上位階層では大規模なデータセットと本番環境のワークロードを処理できます。 検索ワークロード用に専用の検索ノードも配置することをお勧めします。 これにより、検索配置を個別かつ適切に増やすことができます。
クラウドプロバイダーとリージョン
検索ノードはGoogle Cloud Platformのすべてのリージョンで利用できますが、 Amazon Web ServicesおよびAzureリージョン のサブセットでのみ利用できます。配置で検索ノードが利用できるクラウドプロバイダーとリージョンを選択する必要があります。
すべてのクラスター階層はサポートされているクラウドプロバイダー リージョンで利用できます。 選択したクラウドプロバイダーとリージョンは、クラスターで使用可能な構成オプションと検索階層、および クラスターのランニング コスト に影響します。
ノード アーキテクチャ
この配置モデルでは、 mongot
プロセスは、 mongod
プロセスが実行されるクラスター ノードとは別の検索ノードで実行されます。 Atlas は、各クラスターまたはクラスター上の各シャードに検索ノードを配置します。
たとえば、3 つのシャードを持つクラスターに 2 つの検索ノードを配置すると、Atlas は 6 つの検索ノード(シャードあたり 2 つ)を配置します。 また、検索ノードの数と、各検索ノードにプロビジョニングされるリソースの量を構成することもできます。
別個の検索ノードを配置すると、Atlas はインデックス作成用に各mongot
にmongod
を自動的に割り当てます。 mongot
はmongod
と通信して、保存しているインデックスの変更をリッスンし、同期します。 Atlas Vector Search は、 mongod
とmongot
プロセスの両方が同じノードで実行される場合と同様に、クエリをインデックスして処理します。 詳細については、「ベクトル検索のフィールドにインデックスを作成する方法 」と「ベクトル検索クエリを実行する方法 」を参照してください。 検索ノードを個別に配置する方法の詳細については、「ワークロード分離用の検索ノード 」を参照してください。

検索ノードに移行すると、Atlas は検索ノードを配置しますが、検索ノード上のクラスター上のすべてのインデックスが正常に構築されるまで、ノードに対するクエリを処理しません。 Atlas が新しいノードにインデックスをビルドする間も、クラスター ノードのインデックスを使用してクエリを処理し続けます。 Atlas は、検索ノードにインデックスを正常にビルドし、クラスター ノード上のインデックスを削除した後にのみ、検索ノードからクエリの処理を開始します。
クラスター上のすべての検索ノードを削除すると、検索クエリー結果の処理が中断されます。 詳細については、「クラスターの変更」を参照してください。 Atlas クラスターを削除すると、Atlas は一時停止し、関連付けられているすべての Atlas Vector Search 配置( mongot
プロセス)を削除します。
メリット
この配置モデルには、次のメリットがあります。
リソースを効率的に利用しながら、検索ワークロード用にリソースの高可用性を確保します。
検索配置のサイズは、データベース配置とは独立してスケーリングします。
Atlas Vector Search クエリを同時に自動的に処理することで、特に大規模なデータセットでの応答時間が向上します。 詳細については、「セグメント間での並列クエリ実行」を参照してください。
本番環境の検索ノードのサイズ設定
Atlas Vector Search はインデックス全体をメモリに保持するので、Atlas Vector Search インデックスと JVM に十分なメモリがあることを確認する必要があります。検索ノードは、データの分離を行わずにワークロードの分離を可能にし、RAM の割り当てのほぼ 90% をベクトルデータとメモリ内のインデックスの保存に使用でき、残りは JVM に使用されます。
各インデックスは、インデックスが作成されるベクトルと追加のメタデータの組み合わせです。インデックスのサイズは、主にインデックスを作成するベクトルのサイズによって決まります。メタデータの占める容量は通常、比較的わずかなものです。詳しくは、「ベクトルのインデックス作成におけるメモリ要件」をご覧ください。
専用の検索ノードを配置する場合は、さまざまな検索階層から選択できます。 各検索階層には、デフォルトの RAM 容量、ストレージ容量、および CPU が設定されています。 そのため、データベース配置とは別個にクラスターのサイズを設定および拡張することができます。 検索配置を個別にスケーリングするには、いつでもクラスター構成に次の変更を加えることができます。
クラスター上の検索ノードの数を調整します。
検索階層を変更して、ノードの CPU、RAM、ストレージを調整する。
注意
検索ノードと検索階層のコストの詳細については、[ MongoDB 料金] ページで [ View all plan featuresを展開し、[ Atlas Vector Search ] をクリックします。
ノードには、Atlas Vector Search インデックスの合計サイズより少なくとも 10% 大きい RAM があることをお勧めします。また、使用可能な CPU が十分にあることを確認することもお勧めします。クエリのレイテンシは、使用可能な CPU の数によって異なります。これは、クエリのパフォーマンスを加速する内部同時実行のレベルに大きな影響を与える可能性があります。
例
サイズが約 3 GB の 1M 768 次元ベクトルがあるとします。S30(低 CPU)と S20(高 CPU)検索階層のどちらにも、インデックスをサポートするのに十分な RAM があります。S30(低 CPU)検索階層に配置する代わりに、S20(高 CPU)検索階層に配置することをお勧めします。S20(高 CPU)検索階層ではクエリを同時に実行するために、より多くの CPU が使用できるためです。
専用検索ノードへの移行
専用検索ノードを使用すると、クラスターとは別に検索配置のサイズとスケーリングの両方を行うことができます。 また、データベース プロセスと検索プロセスの両方を同じノードで実行するクラスターで発生する可能性のあるリソースの競合も排除されます。
専用検索ノードに移行するには、配置を次の変更で行います。
配置で現在共有階層を使用している場合は、クラスターをより高い階層にアップグレードします。 専用検索ノードは、
M10
以上のクラスター階層でのみサポートされます。 別のクラスター階層への移行の詳細については、「 Cluster Tierの変更 」を参照してください。専用検索ノードは、Amazon Web ServicesおよびAzureリージョンのサブセット、およびサポートされているすべてのGoogle Cloud Platformリージョンで利用できます。検索ノードも利用できるリージョンに クラスターを配置する ようにします。 既存のクラスターが検索ノードを利用できないリージョンにある場合は、検索ノードが利用できるリージョンにクラスターを移行します。 詳しくは、「 クラウドプロバイダーのリージョン 」を参照してください。
Search Nodes for workload isolationを有効にして、検索ノードを構成します。 詳しくは、「検索ノードを追加する 」を参照してください。