Uso de índices vectoriales con tablas globales
Puede utilizar índices vectoriales con tablas globales para ejecutar la búsqueda de similitud en múltiples regiones de AWS. Al agregar una réplica a una tabla que tiene un índice vectorial, DynamoDB replica automáticamente la definición del índice vectorial en la nueva región de réplica. El índice vectorial no se crea de forma independiente en cada región. Los elementos que escriba en cualquier región de réplica se replican en las demás regiones y se indexan allí, por lo que SearchVectors devuelve resultados de la región local.
Puede utilizar índices vectoriales con todas las configuraciones de tablas globales:
-
Coherencia final de varias regiones (MREC): el modo de coherencia predeterminado para las tablas globales. Para obtener más información, consulte Consistencia posterior de varias regiones (MREC).
-
Coherencia alta de varias regiones (MRSC): modo de coherencia que proporciona lecturas altamente coherentes en todas las regiones. Para obtener más información, consulte Coherencia alta de varias regiones (MRSC).
-
Tablas globales de varias cuentas: tablas globales que se replican en todas las cuentas de AWS. Para obtener más información, consulte Tablas globales de varias cuentas de DynamoDB.
Las tablas globales de varias cuentas siempre utilizan MREC porque MRSC solo admite configuraciones de la misma cuenta. Se trata de una restricción de tablas globales, no de una limitación de índices vectoriales.
En el siguiente ejemplo, se agrega una réplica en la región us-west-2 a una tabla denominada Products que ya tiene un índice vectorial. La tabla debe usar el modo de capacidad bajo demanda, que es obligatorio para los índices vectoriales y para este ejemplo.
aws dynamodb update-table \ --table-name Products \ --region us-east-1 \ --replica-updates '[{"Create": {"RegionName": "us-west-2"}}]'
Mientras se crea la réplica, el estado de la tabla de origen es UPDATING y el de la réplica ReplicaStatus es CREATING. Use DescribeTable para confirmar que la réplica alcanza ACTIVE y para verificar que el índice vectorial se haya replicado. La región de la réplica informa del mismo nombre de índice vectorial, dimensiones, función de distancia y proyección que la región de origen.
aws dynamodb describe-table \ --table-name Products \ --region us-west-2
Una vez que la réplica esté activa, puede ejecutar SearchVectors con la región de la réplica en el mismo conjunto de vectores que la región de origen. Antes de buscar en la región de la réplica, utilice DescribeTable en esa región y confirme que el índice vectorial ha terminado de rellenarse: IndexStatus es ACTIVE y Backfilling es false. El índice vectorial de la réplica se rellena de forma independiente, por lo que puede seguir rellenándose durante un breve periodo de tiempo después de que la propia réplica se active. Como la búsqueda vectorial utiliza el vecino más cercano aproximado (ANN), la clasificación puede ser ligeramente diferente entre regiones para la misma consulta, incluso con datos 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
El retraso de la replicación afecta a los resultados de las búsquedas entre regiones
El índice vectorial se propaga de forma asíncrona entre regiones, incluso para tablas globales de coherencia sólida multirregional (MRSC). Es posible que un vector que escriba en una región no aparezca inmediatamente en los resultados de SearchVectors en otra región. Para leer las escrituras más recientes, envíe la búsqueda a la misma región en la que se realizó la escritura.