View a markdown version of this page

Supervisión de la capacidad de índices vectoriales - Amazon DynamoDB

Supervisión de la capacidad de índices vectoriales

Para supervisar el consumo de capacidad de las operaciones de indexación vectorial, defina el parámetro ReturnConsumedCapacity en INDEXES o TOTAL en las solicitudes SearchVectors, o en INDEXES en las solicitudes de API de escritura.

Las operaciones de indexación vectorial se miden en dos unidades, independientes de las unidades de capacidad de lectura y escritura que utiliza la tabla base:

  • Búsqueda vectorial (VS): la unidad que mide las operaciones SearchVectors. El consumo de VS se notifica como VectorSearchRequestBytes y se escala en función del tamaño de los datos vectoriales que examina y devuelve la búsqueda.

  • Escritura vectorial (VWR): la unidad que mide las escrituras replicadas en un índice vectorial. El consumo de VWR se notifica como VectorWriteRequestBytes y se escala en función del tamaño de los datos replicados en el índice.

En el ejemplo siguiente, se muestra la ConsumedCapacity devuelta por una solicitud SearchVectors.

{ "ConsumedCapacity": { "VectorSearchRequestBytes": 41714.0 } }

Para las operaciones de escritura (PutItem, UpdateItem, DeleteItem, BatchWriteItem, TransactWriteItems), la respuesta incluye un mapa de VectorIndexes en ConsumedCapacity, con clave por nombre de índice. Cada entrada informa de VectorWriteRequestBytes para la capacidad consumida al replicar los cambios en cada índice vectorial.

{ "ConsumedCapacity": { "TableName": "Products", "CapacityUnits": 5.0, "Table": { "CapacityUnits": 5.0 }, "VectorIndexes": { "ProductEmbeddingIndex": { "VectorWriteRequestBytes": 4125.0 } } } }

La capacidad del índice vectorial se mide en bytes procesados y se notifica de forma independiente de la capacidad de lectura y escritura de la tabla base. Utilice estos campos para entender qué es lo que determina el costo del índice vectorial:

  • El costo de búsqueda (VectorSearchRequestBytes) se escala principalmente en función del tamaño de los vectores que debe examinar la búsqueda, que aumenta con el número de dimensiones del índice y la cantidad de datos devueltos. Restringir una búsqueda a un único valor de clave de partición reduce la cantidad de datos examinados. La devolución del atributo vectorial en los resultados aumenta aún más el costo, ya que la respuesta incluye todos los datos vectoriales. El costo de búsqueda no aumenta en proporción a la cantidad de elementos del índice. Si el número de dimensiones, el valor TopK y la proyección permanecen iguales, los datos que examina una búsqueda aumentan logarítmicamente a medida que se agregan elementos. Esto ocurre porque una búsqueda aproximada del vecino más cercano recorre un subconjunto pequeño del índice en lugar de leer todos los vectores. Al duplicar el número de elementos de un índice, se agrega una cantidad pequeña y coherente a los datos que examina cada búsqueda.

  • Se incurre en costos de escritura (VectorWriteRequestBytes) cada vez que se escribe, actualiza o elimina un elemento que cambia un atributo indexado por vectores y se escala en función del tamaño de los datos replicados en el índice. Las escrituras que no modifican un atributo indexado no generan capacidad de escritura vectorial.

Las incrustaciones de dimensiones más altas aumentan los costos de búsqueda y escritura porque cada vector contiene más datos. Para conocer los precios actuales, consulte los precios de Amazon DynamoDB en el sitio web de AWS.

DynamoDB también publica la capacidad de índices vectoriales en CloudWatch como las métricas VectorSearchRequestBytes y VectorWriteRequestBytes, dimensionadas por TableName y VectorIndexName. Utilice estas métricas para crear gráficos y generar alarmas sobre el uso de los índices vectoriales a lo largo del tiempo. Para ver las definiciones de métricas, consulte VectorSearchRequestBytes y VectorWriteRequestBytes.

Medición mínima por solicitud

DynamoDB mide la capacidad del índice vectorial con un mínimo de 1 KB por solicitud y factura por byte por encima de ese mínimo. Esto se aplica a ambos tipos de solicitud. Una solicitud SearchVectors que examina menos de 1 KB de datos vectoriales se mide en 1 KB. Una solicitud de escritura que replica menos de 1 KB en los índices vectoriales de una tabla también se mide en 1 KB.

El mínimo se aplica por solicitud, no por índice. Una escritura que actualice los vectores de varios índices vectoriales de una tabla no implica un mínimo de 1 KB independiente para cada uno de ellos, aunque ConsumedCapacity informe VectorWriteRequestBytes por índice.

Como resultado, los vectores de baja dimensión no se miden proporcionalmente por debajo. Un vector con un número reducido de dimensiones contiene solo unos pocos bytes de datos de punto flotante de 32 bits y, aun así, se mide con un mínimo de 1 KB.

Por encima del mínimo, VectorSearchRequestBytes refleja los datos vectoriales que la búsqueda examina dentro del índice, no el tamaño del vector de consulta que se proporciona. Como resultado, VectorSearchRequestBytes es más grande que el vector de consulta por sí solo.

El costo de búsqueda aumenta logarítmicamente, como se explicó anteriormente, pero esa relación no es una fórmula para estimar la factura. VectorSearchRequestBytes también incluye los datos que devuelve la búsqueda. Esos datos se escalan con TopK y con los atributos que usted proyecta. La métrica también se limita al mínimo de 1 KB por solicitud. En un TopK máximo con una proyección completa, los datos devueltos pueden superar los datos examinados.

No calcule el costo del índice vectorial a partir del recuento de dimensiones. Utilice los valores VectorSearchRequestBytes y VectorWriteRequestBytes devueltos por su propia carga de trabajo o las métricas de CloudWatch correspondientes. Valide con un conjunto de datos representativo antes de dimensionar una carga de trabajo.