AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
MongoDB Branding Shape
Click here >
Docs Menu

追加のパフォーマンス推奨事項

このページでは、 MongoDB ベクトル検索クエリのパフォーマンスを向上させるための追加の推奨事項を示します。

Hierarchical Navigable Small Worlds は、ベクトルデータがメモリに保持されている場合に効率的に機能します。データ ノードには、ベクトルデータとインデックスを保持するのに十分なRAMがあることを確認する必要があります。データ分離のないワークロード分離のために、個別の検索ノードを配置することをお勧めします。これにより、ベクトル検索のユースケースでメモリをより効率的に使用できます。

埋め込みモデル
ベクトル次元
スペース要件

Voyage AI voyage_3_large

2048

8KB(float
2.14 KB(int8
0.334 KB(int1 用)

OpenAI text-embedding-ada-002

1536

6kb

Google text-embedding-gecko

768

3kb

Cohere embed-english-v3.0

1024

4KB(float
1.07 KB(int8
0.167 KB(int1 用)

BinData 量子化ベクトル。詳しくは、「量子化されたベクトルの取り込み」をご覧ください。

MongoDB ベクトル検索 が消費する CPU、メモリ、ディスク リソースの量は、インデックスサイズやクエリ条件など、いくつかの要因によって異なります。ベクトル検索の健全性とパフォーマンスを理解し、十分なインフラストラクチャのキャパシティーを確認して、異常を特定するために環境をモニターすることが重要です。

次のメトリクスを使用して、MongoDB ベクトル検索の検索インデックスとクエリのパフォーマンスを観察して改善します。

MongoDB ベクトル検索検索インデックスによって使用されるRAMの合計量をモニターします。ディスクに送信されるクエリのパフォーマンスが大幅に低下するため、十分なRAMがMongoDBベクトル検索クエリのパフォーマンスにとって重要です。インデックス全体がメモリに収まることを確認します。

使用可能な System Memory が使用済み System Memory よりも常に大きいことを確認します。インデックスが頻繁にクエリされない場合、すべてのインデックスがメモリ内に存在しないことがあります。したがって、System Memory メトリクスと Index Size メトリクスを組み合わせて活用し、プロビジョニング を最適化します。

ベクトルインデックスのサイズが 3 GBを超える場合は、インデックス全体ではなくインデックスの 4% のみをメモリに保存するベクトル量子化を推奨します。

ディスク上のすべてのインデックスの合計サイズをバイト単位でモニターします。これは、RAM要件のサイズを正確に設定するために必要です。

ディスク メトリクス で検索 Index Size を検証し、ベクトルの 100% がメモリに保存されている場合の完全なインデックスサイズを確認し、使用可能なシステムメモリよりも小さいことを確認します。

選択したサンプル期間における、1秒あたりのプロセスのページフォールトの平均レートをモニターします。Page Faults メトリクスは、検索クエリがディスクにアクセスする頻度を示します。これは、完全なインデックスがメモリに収まらないことを示します。

このメトリクスは、可能な限り 0 に近くなる必要があります。ページフォールトが一貫して発生する場合は、十分なRAMをプロビジョニングするためにクラスター階層を拡大することを検討してください。

専用の検索ノードを使用せずにベクトル検索を実行すると、クエリは最初にHierarchical Navigable Small Worldsグラフを走査するときにディスク上でランダムな検索を実行し、ベクトル値がメモリに読み込まれます。検索ノードを使用する場合、このキャッシュウォーミングは通常、インデックスの再構築がイベントにのみ、通常はスケジュールされたメンテナンスウィンドウ中に発生します。

ベクトル埋め込みは、インデックスの作成中に計算リソースを消費します。厳密最近傍探索クエリは、大規模なデータセットで CPU リソースを消費します。その結果、インデックスの作成とクエリの実行を同時に行うと、リソースのボトルネックが発生する可能性があります。CPU のボトルネックを防ぐには、クエリの実行中にベクトルのインデックスを作成しないでください。最初の同期を実行する場合は、セグメントがマージされてディスクにフラッシュされたことを示すように、テストクエリを発行する前に検索ノードの CPU 使用率が 0% 近くまで回復することを確実にしてください。

インデックス操作中に Search Normalized Process CPU メトリクスを監視します。頻繁にインデックスを作成すると CPU 使用率が上昇します。このメトリクスは、使用可能な CPU コアの数に対して正規化されたパーセンテージとして CPU 使用率を表示します。これにより、クラスターのキャパシティーに対するリソースの飽和を評価できます。ベクトル埋め込みがインデックス化された後、セグメントのマージとフラッシュが完了すると、CPU 使用率が 0% に近くなるまで待ちます。