View a markdown version of this page

搭配全域資料表使用向量索引 - Amazon DynamoDB

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

搭配全域資料表使用向量索引

您可以使用向量索引搭配全域資料表,在多個 AWS 區域中執行相似性搜尋。當您將複本新增至具有向量索引的資料表時,DynamoDB 會自動將向量索引定義複寫至新的複本區域。您不會在每個區域中分別建立向量索引。您在任何複本區域中寫入的項目都會複寫到其他區域並編製索引,因此 會從本機區域SearchVectors傳回結果。

您可以對每個全域資料表組態使用向量索引:

多帳戶全域資料表一律使用 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,複本的 ReplicaStatusCREATING。使用 DescribeTable確認複本達到 ,ACTIVE並驗證向量索引是否已複寫。複本區域會報告與來源區域相同的向量索引名稱、維度、距離函數和投影。

aws dynamodb describe-table \ --table-name Products \ --region us-west-2

複本處於作用中狀態後,您可以在與來源區域相同的向量集SearchVectors上執行複本區域。在複本區域中搜尋之前,DescribeTable請在該區域中使用 ,並確認向量索引已完成回填,其IndexStatusACTIVEBackfillingfalse。複本的向量索引會獨立回填,因此在複本本身變成作用中之後,仍然可以回填一小段時間。由於向量搜尋使用近似近鄰 (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的結果中。若要讀取最近的寫入,請將搜尋傳送至進行寫入的相同區域。