Amazon Web Services 한국 블로그
Amazon S3 Vectors 정식 출시: 높은 확장성과 성능 개선을 통해 90%까지 비용 절감
오늘, Amazon S3 Vectors가 대폭 향상된 확장성과 프로덕션급 성능으로 정식 출시되었다는 기쁜 소식을 전해드립니다. S3 Vectors는 벡터 데이터의 저장 및 쿼리를 기본적으로 지원하는 최초의 클라우드 객체 스토리지입니다. S3 Vectors를 사용하면 전문 벡터 데이터베이스 솔루션 대비 벡터 저장 및 쿼리 총 비용을 최대 90%까지 절감할 수 있습니다.
7월에 S3 Vectors의 평가판을 발표한 후, 저는 여러분이 이 새로운 벡터 데이터 저장 및 쿼리 기능을 얼마나 빨리 도입했는지에 깊은 인상을 받았습니다. 불과 4개월 만에 25만 개 이상의 벡터 인덱스를 생성하고 400억 개 이상의 벡터를 수집하여 10억 건 이상의 쿼리를 수행했습니다(11월 28일 기준).
이제 단일 인덱스에 최대 20억 개의 벡터를 저장하고 검색할 수 있습니다. 즉, 벡터 버킷에 최대 20조 개의 벡터를 저장할 수 있으며, 평가판 기간 동안 인덱스당 5천만 개에서 40배 증가한 것입니다. 전체 벡터 데이터세트를 하나의 인덱스로 통합하여 여러 개의 작은 인덱스에 샤딩하거나 복잡한 쿼리 페더레이션 로직을 구현할 필요가 없습니다.
쿼리 성능이 최적화되었습니다. 사용 빈도가 낮은 쿼리는 1초 이내에 결과를 반환하며, 사용 빈도가 높은 쿼리는 이제 약 100밀리초 이하의 지연 시간을 발생시켜 대화형 AI 및 다중 에이전트 워크플로와 같은 대화형 애플리케이션에 적합합니다. 또한 이전에는 30개였던 검색 결과를 쿼리당 최대 100개까지 검색할 수 있어 검색 증강 생성(RAG) 애플리케이션에 대한 보다 포괄적인 컨텍스트를 제공합니다.
쓰기 성능도 크게 향상되어 단일 벡터 업데이트를 인덱스로 스트리밍할 때 초당 최대 1,000개의 PUT 트랜잭션을 지원하여 소규모 배치 크기에서 훨씬 더 높은 쓰기 처리량을 제공합니다. 이러한 향상된 처리량은 새로운 데이터를 즉시 검색할 수 있어야 하는 워크로드를 지원하므로 소규모 데이터 코퍼스를 빠르게 수집하거나 동일한 인덱스에 동시에 쓰는 여러 소스를 처리할 수 있습니다.
완전한 서버리스 아키텍처는 인프라 오버헤드를 제거합니다. 인프라를 설정하거나 리소스를 프로비저닝할 필요가 없습니다. 벡터를 저장하고 쿼리할 때 사용한 만큼만 비용을 지불하면 됩니다. 이 AI 지원 스토리지는 초기 실험 및 프로토타입 제작부터 대규모 프로덕션 배포에 이르기까지 전체 AI 개발 수명 주기를 지원하는 데 필요한 벡터 데이터에 원하는 만큼 빠르게 액세스할 수 있도록 지원합니다. S3 Vectors는 이제 AI 에이전트, 추론, 시맨틱 검색 및 RAG 애플리케이션 전반의 프로덕션 워크로드에 필요한 확장성과 성능을 제공합니다.
평가판으로 출시되었던 두 가지 주요 통합 기능이 이제 정식 출시되었습니다. S3 Vectors를 Amazon Bedrock 지식 기반의 벡터 스토리지 엔진으로 사용할 수 있습니다. 특히 프로덕션급 확장성과 성능을 갖춘 RAG 애플리케이션을 구축하는 데 사용할 수 있습니다. 또한 S3 Vectors와 Amazon OpenSearch의 통합 기능이 정식 출시되어 OpenSearch를 검색 및 분석 기능에 사용하는 동시에 S3 Vectors를 벡터 스토리지 계층으로 사용할 수 있습니다.
평가판 버전에서는 5개 AWS 리전이었으나, 이제 14개 AWS 리전에서 S3 벡터를 사용할 수 있습니다.
이제 작동 방식을 살펴보겠습니다.
이 게시글에서는 AWS Console과 CLI를 통해 S3 벡터를 사용하는 방법을 보여드립니다.
먼저 S3 Vector 버킷과 인덱스를 생성합니다.
echo "Creating S3 Vector bucket..."
aws s3vectors create-vector-bucket \
--vector-bucket-name "$BUCKET_NAME"
echo "Creating vector index..."
aws s3vectors create-index \
--vector-bucket-name "$BUCKET_NAME" \
--index-name "$INDEX_NAME" \
--data-type "float32" \
--dimension "$DIMENSIONS" \
--distance-metric "$DISTANCE_METRIC" \
--metadata-configuration "nonFilterableMetadataKeys=AMAZON_BEDROCK_TEXT,AMAZON_BEDROCK_METADATA"
차원 지표는 벡터를 계산하는 데 사용된 모델의 차원과 일치해야 합니다. 거리 지표는 알고리즘에 벡터 간 거리를 계산하도록 지시합니다. S3 Vectors는 코사인 거리와 유클리드 거리를 지원합니다.
콘솔을 사용하여 버킷을 생성할 수도 있습니다. 생성 시 암호화 파라미터를 구성할 수 있는 기능이 추가되었습니다. 기본적으로 인덱스는 버킷 수준 암호화를 사용하지만, 사용자 지정 AWS Key Management Service(AWS KMS) 키를 사용하여 인덱스 수준에서 버킷 수준 암호화를 재정의할 수 있습니다.
벡터 버킷과 벡터 인덱스에 태그를 추가할 수도 있습니다. 벡터 인덱스의 태그는 액세스 제어 및 비용 할당에 도움이 됩니다.
이제 콘솔에서 직접 속성 및 권한을 관리할 수 있습니다.
마찬가지로 필터링 불가능한 메타데이터를 정의하고 벡터 인덱스에 대한 암호화 파라미터를 구성합니다.
다음으로, 임베딩(벡터)을 생성하고 저장합니다. 이 데모에서는 항상 참조하는 AWS 스타일 가이드를 사용합니다. 이 문서는 AWS에서 게시글, 기술 문서 및 문서를 작성하는 방법을 설명하는 800페이지 분량의 문서입니다.
Amazon Bedrock 지식 기반을 사용하여 범용 S3 버킷에 저장된 PDF 문서를 수집합니다. Amazon Bedrock 지식 기반은 문서를 읽고 이를 청크라는 조각으로 나눕니다. 그런 다음 Amazon Titan Text Embeddings 모델을 사용하여 각 청크의 임베딩을 계산하고, 새로 만든 벡터 버킷에 벡터와 해당 메타데이터를 저장합니다. 이 프로세스의 자세한 단계는 이 게시글의 범위를 벗어나지만 설명서에서 지침을 확인할 수 있습니다.
벡터를 쿼리할 때 벡터당 최대 50개의 메타데이터 키를 저장할 수 있으며, 최대 10개는 필터링 불가로 표시됩니다. 필터링 가능한 메타데이터 키를 사용하여 특정 속성을 기반으로 쿼리 결과를 필터링할 수 있습니다. 따라서 벡터 유사성 검색을 메타데이터 조건과 결합하여 결과 범위를 좁힐 수 있습니다. 또한 더 많은 맥락적 정보를 위해 필터링 불가 메타데이터를 저장할 수도 있습니다. Amazon Bedrock 지식 기반은 벡터를 계산하고 저장합니다. 또한 대용량 메타데이터(소스 텍스트의 일부)가 추가됩니다. 이 메타데이터는 검색 가능한 인덱스에서 제외합니다.
벡터를 수집하는 다른 방법도 있습니다. Amazon Bedrock을 사용하여 임베딩을 생성하고 직접 명령을 통해 S3 Vectors에 저장하는 데 도움이 되는 명령줄 도구인 S3 Vector Embed CLI를 사용해 볼 수 있습니다. S3 Vectors를 OpenSearch의 벡터 저장 엔진으로 사용할 수도 있습니다.
이제 벡터 인덱스를 쿼리할 수 있습니다. ‘open source’를 어떻게 써야 할지 고민이라고 가정해 보겠습니다. 하이픈이 있는 ‘open-source’인가요, 아니면 하이픈이 없는 ‘open source’인가요? 대문자를 사용해야 할까요, 말아야 할까요? AWS 스타일 가이드에서 ‘open source’와 관련된 관련 섹션을 검색하고 싶습니다.
# 1. Create embedding request
echo '{"inputText":"Should I write open source or open-source"}' | base64 | tr -d '\n' > body_encoded.txt
# 2. Compute the embeddings with Amazon Titan Embed model
aws bedrock-runtime invoke-model \
--model-id amazon.titan-embed-text-v2:0 \
--body "$(cat body_encoded.txt)" \
embedding.json
# Search the S3 Vectors index for similar chunks
vector_array=$(cat embedding.json | jq '.embedding') && \
aws s3vectors query-vectors \
--index-arn "$S3_VECTOR_INDEX_ARN" \
--query-vector "{\"float32\": $vector_array}" \
--top-k 3 \
--return-metadata \
--return-distance | jq -r '.vectors[] | "Distance: \(.distance) | Source: \(.metadata."x-amz-bedrock-kb-source-uri" | split("/")[-1]) | Text: \(.metadata.AMAZON_BEDROCK_TEXT[0:100])..."'
The first result shows this JSON:
{
"key": "348e0113-4521-4982-aecd-0ee786fa4d1d",
"metadata": {
"x-amz-bedrock-kb-data-source-id": "0SZY6GYPVS",
"x-amz-bedrock-kb-source-uri": "s3://sst-aws-docs/awsstyleguide.pdf",
"AMAZON_BEDROCK_METADATA": "{\"createDate\":\"2025-10-21T07:49:38Z\",\"modifiedDate\":\"2025-10-23T17:41:58Z\",\"source\":{\"sourceLocation\":\"s3://sst-aws-docs/awsstyleguide.pdf\"",
"AMAZON_BEDROCK_TEXT": "[redacted] open source (adj., n.) Two words. open source를 형용사(예: 오픈 소스 소프트웨어) 또는 명사(예: 이 자습서의 코드는 오픈 소스임)로 사용하세요. Don't use open-source, opensource, or OpenSource. [redacted]",
"x-amz-bedrock-kb-document-page-number": 98.0
},
"distance": 0.63120436668396
}
AWS 스타일 가이드에서 관련 섹션을 찾습니다. 하이픈 없이 ‘open source’라고 써야 합니다. 원본 문서의 페이지 번호도 검색하여 제안된 내용과 소스 문서의 관련 단락을 교차 검토할 수 있도록 했습니다.
추가로 알릴 내용
S3 Vectors는 통합 기능도 확장했습니다. 이제 AWS CloudFormation을 사용하여 벡터 리소스를 배포하고 관리하고, AWS PrivateLink를 사용하여 프라이빗 네트워크 연결을 수행하고, 리소스 태그를 지정하여 비용을 할당하고 액세스 제어를 수행할 수 있습니다.
요금 및 가용성
S3 Vectors는 이제 14개 AWS 리전에서 사용 가능하며, 기존 5개 리전(미국 동부(오하이오, 북버지니아), 미국 서부(오리건), 아시아 태평양(시드니), 유럽(프랑크푸르트))에 아시아 태평양(뭄바이, 서울, 싱가포르, 도쿄), 캐나다(중부), 유럽(아일랜드, 런던, 파리, 스톡홀름)이 추가되었습니다.
Amazon S3 Vectors 요금은 세 가지 측면을 기준으로 합니다. PUT 요금은 업로드하는 벡터의 논리적 용량(GB)을 기준으로 계산되며, 각 벡터에는 논리적 벡터 데이터, 메타데이터, 키가 포함됩니다. 스토리지 비용은 인덱스 전체의 총 논리적 스토리지 용량에 따라 결정됩니다. 쿼리 요금에는 API당 요금과 인덱스 크기(필터링 불가능한 메타데이터 제외)에 따른 TB당 요금이 포함됩니다. 인덱스가 벡터 10만 개를 초과하면 TB당 요금이 더 저렴해집니다. 자세한 내용은 Amazon S3 요금 페이지에서 확인할 수 있습니다.
S3 벡터를 시작하려면 Amazon S3 콘솔로 이동하세요. 벡터 인덱스를 생성하고, 임베딩을 저장하고, 확장 가능한 AI 애플리케이션을 구축할 수 있습니다. 자세한 내용은 Amazon S3 사용 설명서 또는 AWS CLI 명령 참조서를 참조하세요.
이러한 새로운 기능으로 어떤 결과물을 만들어낼지 기대됩니다. AWS re:Post 또는 평소 연락하는 AWS Support 담당자를 통해 피드백을 보내주세요.



