このページでは、 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 ボトルネックのモニター
ベクトル埋め込みは、インデックス作成中に計算リソースを消費します。大規模なデータセットに対する ENN クエリは CPU リソースを消費します。その結果、インデックスとクエリが同時に作成されると、リソースのボトルネックが発生する可能性があります。 CPU のボトルネックを防ぐには、クエリがを実行中いるときにベクトルのインデックス作成を避けます。最初の同期 を実行するときは、テスト クエリを発行する前に、検索ノードの CPU 使用率が0 % に近づくことを確認し、セグメントがマージされディスクにフラッシュされたことを示します。
インデックス操作中に Search Normalized Process CPU メトリクスを監視します。頻繁にインデックスを作成すると CPU 使用率が上昇します。このメトリクスは、使用可能な CPU コアの数に対して正規化されたパーセンテージとして CPU 使用率を表示します。これにより、クラスターのキャパシティーに対するリソースの飽和を評価できます。ベクトル埋め込みがインデックス化された後、セグメントのマージとフラッシュが完了すると、CPU 使用率が 0% に近くなるまで待ちます。