벡터 인덱스 용량 모니터링
벡터 인덱스 작업의 용량 소비를 모니터링하려면 ReturnConsumedCapacity 파라미터를 SearchVectors 요청에서 INDEXES 또는 TOTAL로 설정하거나 쓰기 API 요청에서 INDEXES로 설정합니다.
벡터 인덱스 작업은 기본 테이블에서 사용하는 읽기 및 쓰기 용량 단위와 별도로 두 단위로 측정됩니다.
-
벡터 검색(VS) –
SearchVectors작업을 측정하는 단위입니다. VS 소비는VectorSearchRequestBytes로 보고되며 검색이 검사 및 반환하는 벡터 데이터의 크기에 따라 달라집니다. -
벡터 쓰기(VWR) – 벡터 인덱스에 복제된 쓰기를 측정하는 단위입니다. VWR 소비는
VectorWriteRequestBytes로 보고되며 인덱스에 복제된 데이터의 크기에 따라 달라집니다.
다음 예제는 SearchVectors 요청에 의해 반환된 ConsumedCapacity를 보여줍니다.
{ "ConsumedCapacity": { "VectorSearchRequestBytes": 41714.0 } }
쓰기 작업(PutItem, UpdateItem, DeleteItem, BatchWriteItem, TransactWriteItems)의 경우 응답에는 인덱스 이름을 키로 하는 ConsumedCapacity의 VectorIndexes 맵이 포함됩니다. 각 항목은 각 벡터 인덱스에 대한 변경 사항을 복제할 때 사용된 용량에 대해 VectorWriteRequestBytes를 보고합니다.
{ "ConsumedCapacity": { "TableName": "Products", "CapacityUnits": 5.0, "Table": { "CapacityUnits": 5.0 }, "VectorIndexes": { "ProductEmbeddingIndex": { "VectorWriteRequestBytes": 4125.0 } } } }
벡터 인덱스 용량은 처리된 바이트 단위로 측정되며 기본 테이블 읽기 및 쓰기 용량과 별도로 보고됩니다. 다음 필드를 사용하여 벡터 인덱스 비용의 요인을 파악합니다.
-
검색 비용(
VectorSearchRequestBytes)은 기본적으로 검색이 검사해야 하는 벡터의 크기에 따라 달라지며, 인덱스의 차원 수와 반환되는 데이터의 양에 따라 증가합니다. 검색을 단일 파티션 키 값으로 제한하면 검사되는 데이터의 양이 줄어듭니다. 결과에서 벡터 속성을 반환하면 응답에 전체 벡터 데이터가 포함되므로 비용이 증가합니다. 검색 비용은 인덱스의 항목 수에 비례하여 증가하지 않습니다. 차원 수,TopK값 및 프로젝션이 동일하게 유지되는 경우 항목을 추가할 때 검색에서 검사하는 데이터가 로그적으로 증가합니다. 이는 근사 최근접 이웃 검색이 모든 벡터를 읽는 대신 인덱스의 작은 하위 집합을 탐색하기 때문에 발생합니다. 인덱스의 항목 수를 두 배로 늘리면 각 검색에서 검사하는 데이터에 소량의 일정한 양이 추가됩니다. -
쓰기 비용(
VectorWriteRequestBytes)은 벡터 인덱스 속성을 변경하는 항목을 작성, 업데이트 또는 삭제할 때마다 발생하며, 인덱스에 복제된 데이터의 크기에 따라 달라집니다. 인덱싱된 속성을 변경하지 않는 쓰기에는 벡터 쓰기 용량이 발생하지 않습니다.
고차원 임베딩은 각 벡터에 더 많은 데이터가 포함되어 있으므로 검색 및 쓰기 비용이 모두 증가합니다. 현재 요금은 AWS 웹 사이트의 Amazon DynamoDB 요금
또한 DynamoDB는 벡터 인덱스 용량을 TableName 및 VectorIndexName 차원의 VectorSearchRequestBytes 및 VectorWriteRequestBytes 지표로 CloudWatch에 게시합니다. 이러한 지표를 사용하여 시간 경과에 따른 벡터 인덱스 사용량을 차트로 표시하고 경보를 설정합니다. 지표 정의는 VectorSearchRequestBytes 및 VectorWriteRequestBytes 섹션을 참조하세요.
요청당 측정 최소값
DynamoDB는 요청당 최소 1KB의 벡터 인덱스 용량을 측정하고 해당 최소값을 초과하는 바이트에 대해 요금을 청구합니다. 이는 두 가지 요청 유형 모두에 적용됩니다. 1KB 미만의 벡터 데이터를 검사하는 SearchVectors 요청은 1KB로 측정됩니다. 테이블의 벡터 인덱스에 1KB 미만을 복제하는 쓰기 요청도 1KB로 측정됩니다.
최소값은 인덱스가 아닌 요청당 적용됩니다. 여러 테이블의 벡터 인덱스에서 벡터를 업데이트하는 쓰기는 ConsumedCapacity가 인덱스당 VectorWriteRequestBytes를 보고하더라도 각 인덱스에 대해 별도의 최소 1KB가 발생하지 않습니다.
따라서 저차원 벡터는 비례적으로 낮게 측정되지 않습니다. 차원 수가 적은 벡터는 32비트 부동 소수점 데이터를 몇 바이트만 저장하며 여전히 최소 1KB로 측정됩니다.
최소값을 초과하면 VectorSearchRequestBytes눈 제공하는 쿼리 벡터의 크기가 아닌 인덱스 내에서 검색이 검사하는 벡터 데이터를 반영합니다. 따라서 VectorSearchRequestBytes는 쿼리 벡터만 사용하는 것보다 큽니다.
앞서 설명한 대로 검색 비용은 로그적으로 증가하지만 해당 관계는 청구서를 추정하기 위한 공식이 아닙니다. VectorSearchRequestBytes에는 검색에서 반환하는 데이터도 포함됩니다. 해당 데이터는 TopK 및 프로젝션하는 속성에 따라 확장됩니다. 또한 지표는 요청당 최소 1KB로 제한됩니다. 전체 프로젝션이 있는 높은 TopK에서는 반환된 데이터가 검사된 데이터를 초과할 수 있습니다.
차원 수에서 벡터 인덱스 비용을 추정하지 마십시오. 자체 워크로드에서 반환된 VectorSearchRequestBytes 및 VectorWriteRequestBytes 값 또는 해당 CloudWatch 지표를 사용합니다. 워크로드 크기를 조정하기 전에 대표 데이터세트에 대해 검증합니다.