Monitoramento da capacidade do índice vetorial
Para monitorar o consumo de capacidade para operações de índice vetorial, defina o parâmetro ReturnConsumedCapacity como INDEXES ou TOTAL em suas solicitações de SearchVectors, ou como INDEXES em suas solicitações de API de gravação.
As operações de índice vetorial são medidas em duas unidades, separadas das unidades de capacidade de leitura e gravação usadas pela tabela de base:
-
Pesquisa vetorial (VS): a unidade que mede as operações de
SearchVectors. O consumo de VS é relatado comoVectorSearchRequestBytese é dimensionado de acordo com o tamanho dos dados vetoriais que a pesquisa examina e retorna. -
Gravação vetorial (VWR): a unidade que mede as gravações replicadas em um índice vetorial. O consumo da VWR é relatado como
VectorWriteRequestBytese é dimensionado de acordo com o tamanho dos dados replicados no índice.
O exemplo a seguir mostra a ConsumedCapacity retornada por uma solicitação de SearchVectors.
{ "ConsumedCapacity": { "VectorSearchRequestBytes": 41714.0 } }
Para operações de gravação (PutItem, UpdateItem, DeleteItem, BatchWriteItem, TransactWriteItems), a resposta inclui um mapa VectorIndexes em ConsumedCapacity, indexado pelo nome do índice. Cada entrada relata VectorWriteRequestBytes para a capacidade consumida ao replicar as alterações em cada índice vetorial.
{ "ConsumedCapacity": { "TableName": "Products", "CapacityUnits": 5.0, "Table": { "CapacityUnits": 5.0 }, "VectorIndexes": { "ProductEmbeddingIndex": { "VectorWriteRequestBytes": 4125.0 } } } }
A capacidade do índice vetorial é medida em bytes processados, relatada separadamente da capacidade de leitura e gravação da tabela de base. Use esses campos para entender o que impulsiona o custo do índice vetorial:
-
O custo da pesquisa (
VectorSearchRequestBytes) é dimensionado principalmente com o tamanho dos vetores que a pesquisa deve examinar, o que aumenta com o número de dimensões no índice e a quantidade de dados retornados. Restringir uma pesquisa a um único valor de chave de partição reduz a quantidade de dados examinados. Retornar o atributo vetorial nos resultados aumenta ainda mais o custo porque a resposta inclui os dados vetoriais completos. O custo da pesquisa não aumenta proporcionalmente ao número de itens no índice. Se o número de dimensões, o valor deTopKe a projeção permanecerem iguais, os dados que uma pesquisa examina crescerão de forma logarítmica à medida que você adicionar itens. Isso ocorre porque uma pesquisa de vizinhos mais próximos aproximada percorre um pequeno subconjunto do índice, em vez de ler cada vetor. Dobrar o número de itens em um índice adiciona uma pequena quantidade constante de dados ao que cada pesquisa examina. -
O custo de gravação (
VectorWriteRequestBytes) ocorre toda vez que você grava, atualiza ou exclui um item que altera um atributo indexado por vetores e é dimensionado de acordo com o tamanho dos dados replicados no índice. As gravações que não alteram um atributo indexado não incorrem na capacidade de gravação vetorial.
Incorporações de maior dimensão aumentam o custo de pesquisa e gravação porque cada vetor carrega mais dados. Para obter os preços atuais, consulte os preços do Amazon DynamoDB
O DynamoDB também publica a capacidade do índice vetorial no CloudWatch como as métricas VectorSearchRequestBytes e VectorWriteRequestBytes, dimensionadas por TableName e VectorIndexName. Use essas métricas para criar gráficos e alertas sobre o uso do índice vetorial ao longo do tempo. Para obter definições de métricas, consulte VectorSearchRequestBytes e VectorWriteRequestBytes.
Mínimo de medição por solicitação
O DynamoDB mede a capacidade do índice vetorial com um mínimo de 1 KB por solicitação e cobra por byte acima desse mínimo. Isso se aplica aos dois tipos de solicitação. Uma solicitação SearchVectors que examine menos de 1 KB de dados vetoriais será medida como 1 KB. Uma solicitação de gravação que replique menos de 1 KB para os índices vetoriais de uma tabela também será medida como 1 KB.
O mínimo se aplica por solicitação, e não por índice. Uma gravação que atualize vetores em vários índices vetoriais de uma tabela não incorre em um mínimo separado de 1 KB para cada um, embora VectorWriteRequestBytes informe ConsumedCapacity por índice.
Como resultado, vetores com poucas dimensões não são medidos proporcionalmente a um valor menor. Um vetor com um número pequeno de dimensões contém apenas alguns bytes de dados de ponto flutuante de 32 bits e ainda assim é medido pelo mínimo de 1 KB.
Acima do mínimo, VectorSearchRequestBytes reflete os dados vetoriais que a pesquisa examina dentro do índice, e não o tamanho do vetor de consulta fornecido. Como resultado, VectorSearchRequestBytes é maior que o vetor de consulta isoladamente.
O custo da pesquisa cresce de forma logarítmica, conforme explicado anteriormente, mas essa relação não é uma fórmula para estimar sua cobrança. VectorSearchRequestBytes também inclui os dados retornados pela pesquisa. Esses dados escalam de acordo com TopK e com os atributos projetados. A métrica também tem um mínimo de 1 KB por solicitação. Com um TopK alto e uma projeção completa, os dados retornados podem exceder os dados examinados.
Não estime o custo do índice vetorial com base na quantidade de dimensões. Use os valores VectorSearchRequestBytes e VectorWriteRequestBytes retornados pela própria workload ou as métricas correspondentes do CloudWatch. Valide usando um conjunto de dados representativo antes de dimensionar uma workload.