View a markdown version of this page

ベクトルインデックスキャパシティのモニタリング - Amazon DynamoDB

ベクトルインデックスキャパシティのモニタリング

ベクトルインデックスオペレーションのキャパシティ消費量をモニタリングするには、SearchVectors リクエストで ReturnConsumedCapacity パラメータを INDEXES または TOTAL に設定し、書き込み API リクエストで INDEXES に設定します。

ベクトルインデックスオペレーションは、ベーステーブルで使用される読み取りキャパシティユニットと書き込みキャパシティユニットとは別に、2 つの単位で計測されます。

  • ベクトル検索 (VS) – SearchVectors オペレーションを計測する単位。VS の消費量は VectorSearchRequestBytes として報告され、検索対象および検索結果として返されるベクトルデータのサイズに合わせてスケーリングされます。

  • ベクトル書き込み (VWR) – ベクトルインデックスにレプリケートされた書き込みを計測する単位。VWR の消費量は VectorWriteRequestBytes として報告され、インデックスにレプリケートされたデータのサイズに合わせてスケーリングされます。

次の例は、SearchVectors リクエストによって返される ConsumedCapacity を示しています。

{ "ConsumedCapacity": { "VectorSearchRequestBytes": 41714.0 } }

書き込みオペレーション (PutItem、UpdateItem、DeleteItem、BatchWriteItem、TransactWriteItems) の場合、レスポンスの ConsumedCapacity に、インデックス名でキー指定された VectorIndexes マップが含まれます。各エントリは、各ベクトルインデックスへの変更をレプリケートするときに消費されるキャパシティとして、VectorWriteRequestBytes を報告します。

{ "ConsumedCapacity": { "TableName": "Products", "CapacityUnits": 5.0, "Table": { "CapacityUnits": 5.0 }, "VectorIndexes": { "ProductEmbeddingIndex": { "VectorWriteRequestBytes": 4125.0 } } } }

ベクトルインデックスキャパシティは処理されたバイト単位で計測され、ベーステーブルの読み取りおよび書き込みキャパシティとは別に報告されます。これらのフィールドを使用して、ベクトルインデックスのコストを左右する要因を理解します。

  • 検索コスト (VectorSearchRequestBytes) は、主に検索対象となるベクトルのサイズに応じてスケールされます。これは、インデックス内のディメンション数と返されるデータの量に応じて増加します。検索を単一のパーティションキー値に制限すると、検索対象となるデータ量が減ります。結果にベクトル属性を含めて返すと、レスポンスにベクトルデータ全体が含まれるため、コストがさらに増加します。検索コストは、インデックス内の項目数に比例して増加しません。ディメンションの数、TopK 値、および射影が同じままである場合、項目を追加すると、検索が調べるデータは対数的に増加します。これは、近似最近傍検索がすべてのベクトルを読み取るのではなく、インデックスの小さなサブセットを走査するために発生します。インデックス内の項目数を 2 倍にすると、各検索が調べるデータに少量の一定量が追加されます。

  • 書き込みコスト (VectorWriteRequestBytes) は、ベクトルインデックス付き属性を変更する項目の書き込み、更新、または削除を行うたびに発生し、インデックスにレプリケートされるデータのサイズに合わせてスケーリングされます。インデックス付き属性を変更しない書き込みでは、ベクトル書き込みキャパシティは発生しません。

ディメンション数が多い埋め込みでは、各ベクトルがより多くのデータを保持するため、検索コストと書き込みコストの両方が増加します。現在の料金については、AWS ウェブサイトの「Amazon DynamoDB 料金」を参照してください。

DynamoDB は、TableName および VectorIndexName をディメンションとして、ベクトルインデックスキャパシティを VectorSearchRequestBytes および VectorWriteRequestBytes メトリクスとして CloudWatch に発行します。これらのメトリクスを使用して、ベクトルインデックスの経時的な使用状況をグラフ化してアラームを設定します。メトリクスの定義については、「VectorSearchRequestBytes」および「VectorWriteRequestBytes」を参照してください。

リクエストごとの計測最小値

DynamoDB は、リクエストごとに最小 1 KB のベクトルインデックス容量を計測し、その最小値を超えるバイト数に対して請求します。これはリクエストタイプすべてに適用されます。1 KB 未満のベクトルデータを調べる SearchVectors リクエストは、1 KB で計測されます。1 KB 未満をテーブルのベクトルインデックスにレプリケートする書き込みリクエストも 1 KB で計測されます。

最小値は、インデックスごとではなく、リクエストごとに適用されます。テーブルのいくつかのベクトルインデックスでベクトルを更新する書き込みでは、ConsumedCapacity がインデックスごとに VectorWriteRequestBytes をレポートする場合でも、インデックスごとに 1 KB の最小値が個別に適用されることはありません。

その結果、低いディメンションのベクトルが比例的に低く計測されるわけではありません。ディメンション数が少ないベクトルは、数バイトの 32 ビット浮動小数点データのみを保持しますが、最低 1 KB で計測されます。

最小値を超えると、VectorSearchRequestBytes は、指定したクエリベクトルのサイズではなく、検索がインデックス内で調べるベクトルデータを反映します。その結果、VectorSearchRequestBytes はクエリベクトル単体よりも大きくなります。

前述のように、検索コストは対数的に増加しますが、その関係は請求額を見積もるための計算式ではありません。VectorSearchRequestBytes には、検索が返すデータも含まれます。そのデータは、TopK と、プロジェクションする属性に応じてスケールされます。このメトリクスも、リクエストごとに 1 KB の最小値が下限として設定されます。TopK が大きく、完全なプロジェクションを使用する場合、返されるデータ量が検索で調べるデータ量を上回ることがあります。

ディメンション数からベクトルインデックスのコストを見積もらないでください。独自のワークロードから返される VectorSearchRequestBytes および VectorWriteRequestBytes の値、または対応する CloudWatch メトリクスを使用してください。ワークロードのサイズを設定する前に、代表的なデータセットに対して検証してください。