本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
搭配全域資料表使用向量索引
您可以使用向量索引搭配全域資料表,在多個 AWS 區域中執行相似性搜尋。當您將複本新增至具有向量索引的資料表時,DynamoDB 會自動將向量索引定義複寫至新的複本區域。您不會在每個區域中分別建立向量索引。您在任何複本區域中寫入的項目都會複寫到其他區域並編製索引,因此 會從本機區域SearchVectors傳回結果。
您可以對每個全域資料表組態使用向量索引:
-
多區域最終一致性 (MREC) – 全域資料表的預設一致性模式。如需詳細資訊,請參閱多區域最終一致性 (MREC)。
-
多區域強式一致性 (MRSC) – 一種一致性模式,跨區域提供強式一致性讀取。如需詳細資訊,請參閱多區域強一致性 (MRSC)。
-
多帳戶全域資料表 – 跨 AWS 帳戶複寫的全域資料表。如需詳細資訊,請參閱DynamoDB 多帳戶全域資料表。
多帳戶全域資料表一律使用 MREC,因為 MRSC 僅支援相同帳戶組態。這是全域資料表限制,而不是向量索引限制。
下列範例會將 區域中的複本新增至名為 Products且已有向量索引的us-west-2資料表。資料表必須使用隨需容量模式,這對於向量索引和此範例都是必要的。
aws dynamodb update-table \ --table-name Products \ --region us-east-1 \ --replica-updates '[{"Create": {"RegionName": "us-west-2"}}]'
建立複本時,來源資料表狀態為 UPDATING,複本的 ReplicaStatus為 CREATING。使用 DescribeTable確認複本達到 ,ACTIVE並驗證向量索引是否已複寫。複本區域會報告與來源區域相同的向量索引名稱、維度、距離函數和投影。
aws dynamodb describe-table \ --table-name Products \ --region us-west-2
複本處於作用中狀態後,您可以在與來源區域相同的向量集SearchVectors上執行複本區域。在複本區域中搜尋之前,DescribeTable請在該區域中使用 ,並確認向量索引已完成回填,其IndexStatus為 ACTIVE且Backfilling為 false。複本的向量索引會獨立回填,因此在複本本身變成作用中之後,仍然可以回填一小段時間。由於向量搜尋使用近似近鄰 (ANN),即使資料相同,同一查詢的區域之間的排名也可能略有不同。
aws dynamodb search-vectors \ --table-name Products \ --region us-west-2 \ --index-name ProductEmbeddingIndex \ --search-vector '[{"N": "0.1234"}, {"N": "-0.5678"}, {"N": "0.9012"}, ...]' \ --top-k 10
複寫延遲會影響跨區域搜尋結果
向量索引會以非同步方式跨區域傳播,即使是多區域強式一致性 (MRSC) 全域資料表也是如此。您在某個區域中寫入的向量可能不會立即出現在另一個區域中SearchVectors的結果中。若要讀取最近的寫入,請將搜尋傳送至進行寫入的相同區域。