このページでは、 MongoDB ベクトル検索クエリのパフォーマンスを向上させるための追加の推奨事項を示します。
十分なメモリを確保する
Hierarchical Navigable Small Worlds は、ベクトルデータがメモリに保持されている場合に効率的に機能します。データ ノードには、ベクトルデータとインデックスを保持するのに十分なRAMがあることを確認する必要があります。データ分離でワークロードを分離ために、個別の 検索ノードを配置することをお勧めします。これにより、ベクトル検索のユースケースでメモリをより効率的に使用できます。
埋め込みモデル | ベクトル次元 | スペース要件 |
|---|---|---|
Voyage AI | 2048 | 8kb (for float)2.14kb (for int8)0.334kb (for int1) |
OpenAI | 1536 | 6kb |
Google | 768 | 3kb |
Cohere | 1024 | 4kb (for float)1.07kb (for int8)0.167kb (for 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のボトルネックを防ぐには、クエリが実行中のときにベクトルのインデックスの作成を避けてください。最初の同期を実行するときは、テストクエリを発行する前に、検索ノードのCPU使用率が0%に近づくことを確認し、セグメントがマージされディスクにフラッシュされたことを示します。
インデックスの作成操作中に Search Normalized Process CPU メトリクスをモニターします。頻繁にインデックスの作成を行うと CPU 使用率が上昇します。このメトリクスは、使用可能な CPU コアの数に対して正規化されたパーセンテージとして CPU 使用率を表示します。これにより、クラスターのキャパシティーに対するリソースの飽和を評価できます。ベクトル埋め込みがインデックス化された後、セグメントのマージとフラッシュが完了すると、CPU 使用率が 0% に近くなるまで待ちます。