View a markdown version of this page

テーブルとベクトルインデックス間のデータ同期 - Amazon DynamoDB

テーブルとベクトルインデックス間のデータ同期

DynamoDB は、ベクトルインデックスをベーステーブルと自動的に同期させます。同期の仕組みを理解すると、検索結果が完了するタイミングと、項目が結果に表示されない理由を予測するのに役立ちます。

既存のテーブルにインデックスをバックフィルする

既に項目を含むテーブルにベクトルインデックスを追加すると、DynamoDB は既存のデータを使用してインデックスをバックフィルします。DynamoDB がインデックスのインフラストラクチャをセットアップしている間、インデックスは最初に IndexStatus CREATING に移行します。次に、DynamoDB が既存のベーステーブルデータからインデックスを入力する間、Backfillingtrue に設定して IndexStatus ACTIVE に移行します。ベーステーブルへの新しい書き込みは、このフェーズ中にインデックスにレプリケートされますが、バックフィルが完了するまで SearchVectors はエラーを返します。DescribeTable を使用して、IndexStatusACTIVE になり、Backfillingfalse になるまで待ってから検索します。「ベクトルインデックスの既存テーブルへの追加」を参照してください。

継続的な書き込み同期

インデックスがアクティブになると、DynamoDB はベーステーブルへの各書き込みをベクトルインデックスにレプリケートします。次の動作は、書き込みがインデックスに到達するかどうか、およびその到達方法に影響します。

  • 有効なベクトル属性が含まれている場合にのみ、項目がインデックスにレプリケートされます。インデックスがパーティションキーを定義している場合、項目にはそのパーティションキー属性も含まれている必要があります。含まれていない場合、書き込みはベーステーブルで成功しますが、項目はインデックスにレプリケートされません。

  • ベクトル値は書き込まれたとおりにベーステーブルに保存されますが、インデックスには 32 ビット浮動小数点 (f32) の精度で保存されます。精度の高い値は、インデックスにレプリケートされるとその精度を失います。

  • 項目からベクトル属性を削除するか、項目を削除すると、対応するエントリがインデックスから削除されます。

書き込み検証ルールの完全なセットについては、「ベクトルデータを含む項目の書き込み」を参照してください。

リージョン間の同期

ベクトルインデックスを持つテーブルがグローバルテーブルの場合、DynamoDB はいずれかのレプリカリージョンへの書き込みを他のリージョンにレプリケートし、そこにインデックスを作成します。DynamoDB は、データをベクトルインデックスに非同期的にレプリケートします。あるリージョンで書き込んだベクトルは、テーブルがマルチリージョンの強力な整合性 (MRSC) を使用している場合でも、別のリージョンの SearchVectors 結果にすぐには表示されない場合があります。「グローバルテーブルでのベクトルインデックスの使用」を参照してください。