View a markdown version of this page

Uso de índices vetoriais com tabelas globais - Amazon DynamoDB

Uso de índices vetoriais com tabelas globais

Você pode usar índices vetoriais com tabelas globais para executar pesquisas por similaridade em várias regiões da AWS. Quando você adiciona uma réplica a uma tabela que tem um índice vetorial, o DynamoDB replica automaticamente a definição do índice vetorial para a nova região da réplica. Você não cria o índice vetorial separadamente em cada região. Os itens que você grava em qualquer região de réplica são replicados para as outras regiões e indexados lá, de modo que SearchVectors retorna os resultados da região local.

Você pode usar índices vetoriais com cada configuração de tabela global:

As tabelas globais com várias contas sempre usam a MREC porque a MRSC oferece suporte somente a configurações da mesma conta. Essa é uma restrição de tabelas globais, não uma limitação do índice vetorial.

O exemplo a seguir adiciona uma réplica na região us-west-2 a uma tabela chamada Products que já tem um índice vetorial. A tabela deve usar o modo de capacidade sob demanda, que é necessário tanto para índices vetoriais quanto para este exemplo.

aws dynamodb update-table \ --table-name Products \ --region us-east-1 \ --replica-updates '[{"Create": {"RegionName": "us-west-2"}}]'

Enquanto a réplica está sendo criada, o status da tabela de origem é UPDATING e o ReplicaStatus da réplica é CREATING. Use DescribeTable para confirmar se a réplica atinge ACTIVE e para verificar se o índice vetorial foi replicado. A região da réplica relata o mesmo nome de índice vetorial, as mesmas dimensões, a mesma função de distância e a mesma projeção que a região de origem.

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

Depois que a réplica estiver ativa, você poderá executar SearchVectors na região da réplica sobre o mesmo conjunto de vetores da região de origem. Antes de pesquisar na região da réplica, use DescribeTable nessa região e confirme se o índice vetorial terminou de ser preenchido — IndexStatus é ACTIVE e Backfilling é false. O índice vetorial da réplica é preenchido de forma independente, de modo que ele ainda pode estar sendo preenchido por um curto período após a própria réplica ficar ativa. Como a pesquisa vetorial usa o vizinho mais próximo aproximado (ANN), a classificação pode diferir ligeiramente entre as regiões para a mesma consulta, mesmo com dados idênticos.

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
O atraso na replicação afeta os resultados de pesquisa entre regiões

O índice vetorial se propaga de forma assíncrona entre regiões, mesmo para tabelas globais multirregionais com forte consistência multirregional (MRSC). Um vetor que você grava em uma região pode não aparecer imediatamente nos resultados de SearchVectors em outra região. Para ler as gravações mais recentes, envie a pesquisa para a mesma região em que a gravação foi feita.