Amazon Web Services 한국 블로그
Amazon DynamoDB, 모든 규모에서 실시간 벡터 검색 지원 기능 출시
오늘 Amazon DynamoDB에서 벡터 검색의 정식 출시 소식을 발표했습니다. 이제 DynamoDB에 운영 데이터와 함께 벡터 임베딩을 저장하고 별도의 벡터 저장소에 복제하지 않고도 해당 데이터에 대해 직접 유사성 검색을 실행할 수 있습니다.
DynamoDB는 한 자릿수 밀리초의 지연 시간과 99% 이상의 리콜 비율로 기본 벡터 검색을 지원하며, 어떤 규모에서든, 심지어 수조 개의 벡터도 처리할 수 있도록 설계되었습니다. 서버를 프로비저닝하거나 패치를 적용하거나 관리할 필요가 없으며, 소프트웨어를 설치하거나 관리하거나 운영할 필요도 없습니다. 이 서비스에는 버전, 유지 관리 기간이 없으며 가동 중지 시간도 전혀 없습니다.
벡터 인덱스는 스토리지 제한이 없으며 데이터가 증가함에 따라 수평적으로 확장됩니다. 이제 DynamoDB 및 해당 기본 벡터 검색을 사용하여 에이전틱 메모리에서 시맨틱 검색, 검색 증강 생성, 추천 엔진, 개인화된 경험, 이상 탐지 등을 필요로 하는 애플리케이션을 구축할 수 있습니다.
애플리케이션에서 이미 DynamoDB를 사용하는 경우 이전에 벡터 검색을 추가하려면 두 서비스 간 동기화 파이프라인을 유지하면서 전용 벡터 데이터베이스에 데이터를 복사해야 했습니다. 이로 인해 운영 오버헤드, 데이터 이동 비용, 라이선스 비용이 추가되었으며 대규모로 예측 가능한 짧은 지연 시간을 유지해야 하는 과제도 감당해야 했습니다. DynamoDB에 내장된 벡터 검색을 사용하면 벡터 및 운영 데이터가 동일한 서버리스 인프라 및 동일한 요청당 지불 가격 모델을 공유합니다.
DynamoDB의 벡터 검색은 벡터 임베딩을 저장하는 속성에서 사용자가 생성하는 새로운 인덱스 유형을 도입합니다. Amazon Bedrock Titan Text Embeddings, Cohere Embed 또는 OpenAI 텍스트 임베딩 모델 등 원하는 모델을 사용하여 임베딩을 생성하고, 표준 PutItem 직접 호출을 사용하여 테이블에 부동 소수점 목록으로 저장합니다. 그런 다음 해당 속성에서 벡터 인덱스를 생성하고 쿼리 시 검색 결과의 범위를 좁히는 필터로 사용할 차원 수, 거리 함수 및 벡터 외 속성을 지정합니다. SearchVectors API는 쿼리 벡터, 반환할 결과 수(최대 100개), 선택적 필터 조건을 허용합니다. 유사도에 따라 순위가 매겨진 결과를 반환합니다.
운영 데이터가 이미 DynamoDB에 있고 별도의 데이터베이스를 프로비저닝하거나 동기화 파이프라인을 관리하지 않고도 유사성 검색을 추가하려는 경우 DynamoDB에서 벡터 검색을 사용합니다. DynamoDB는 완전한 서버리스 서비스이므로 관리할 인프라 없이 자동으로 벡터 검색 규모가 조정됩니다. 그리고 최대 4,096개의 차원, 유클리드, 코사인, 스칼라곱 거리 함수, 인라인 필터링을 지원합니다.
DynamoDB에서 벡터 검색 시작하기
이 연습에서는 DynamoDB 콘솔을 사용하여 기존 DynamoDB 테이블에 벡터 검색을 추가하는 방법을 보여줍니다. 이 시나리오에서는 제품 카탈로그 테이블이 있는 온라인 스포츠 용품 매장을 포함합니다. 각 항목에는 productId, category, description, marketplace, name, price와 같은 표준 운영 속성이 있습니다. 목표는 쇼핑객이 정확한 키워드 일치가 아닌 자연어 쿼리를 사용하여 제품을 찾을 수 있도록 시맨틱 검색을 추가하는 것입니다.
1. DynamoDB 테이블 준비
시맨틱 검색을 활성화하기 위해 먼저 테이블에 이미 있는 제품 설명에 대한 벡터 임베딩을 생성합니다. 임베딩은 콘텐츠의 의미를 캡처하는 기계 학습 모델에서 생성된 텍스트의 숫자 표현입니다. 설명이 비슷한 두 항목의 임베딩은 벡터 공간에서 서로 가까운 위치에 있으며, 이 덕분에 유사성 검색이 가능합니다.

Amazon Bedrock Titan Text Embeddings 또는 다른 임베딩 모델을 사용하여 임베딩을 생성하고 AWS Management Console, AWS Command Line Interface(AWS CLI), AWS SDK, AWS CloudFormation 또는 기타 코드형 인프라 (IAC) 도구를 사용하여 테이블에 추가할 수 있습니다.
ProductCatalog와 같은 기존 테이블에서 UpdateItem 직접 호출을 사용하여 각 항목에 임베딩을 descriptionEmbedding이라는 새 속성으로 추가합니다. DynamoDB는 기존 List 데이터 유형을 사용하여 벡터 임베딩을 저장합니다. 목록의 각 요소는 임베딩 벡터의 단일 부동 소수점 값을 나타내는 숫자입니다. 즉, 기존 운영 속성과 함께 벡터 저장을 시작하기 위해 새로운 데이터 유형이나 스키마를 변경하지 않아도 됩니다.
2. 벡터 인덱스 생성
DynamoDB 콘솔에서 ProductCatalog 테이블을 열고 인덱스 탭을 선택합니다. 벡터 인덱스 생성을 선택합니다. 벡터 인덱스 생성 페이지에서 다음과 같이 인덱스 세부 정보를 입력하세요. 인덱스 이름으로 ProductDescriptionIndex, 벡터 속성으로 descriptionEmbedding을 입력합니다.

임베딩 모델의 출력과 일치하는 차원 수를 입력하고 거리 함수로 코사인을 선택합니다. 코사인은 크기가 아닌 벡터 사이의 각도를 측정하므로, 텍스트 임베딩의 시맨틱 유사성을 비교하는 데 효과적입니다. DynamoDB의 벡터 검색은 유클리드 및 스칼라곱 거리 함수도 지원합니다.
- 유클리드: 구매 횟수와 같은 숫자 값으로 항목을 클러스터링하는 등 벡터의 크기가 의미 있는 경우에 사용합니다.
- 스칼라곱: 관심 정렬과 빈도의 가중치를 함께 고려하는 추천 시스템과 같이 방향과 크기가 모두 중요한 경우에 사용합니다. 일반적으로 최고의 정확도를 위해 거리 함수를 임베딩 모델을 훈련하는 데 사용되는 함수와 일치시킵니다.
marketplace를 파티션 키로 입력합니다. 벡터 인덱스 파티션 키는 DynamoDB가 여러 파티션에 벡터를 배포하는 방식을 제어하여 예측 가능한 지연 시간을 유지하면서 인덱스를 스케일 아웃할 수 있습니다. 각 검색의 범위는 단일 파티션 키 값으로 지정되므로 여러 마켓플레이스를 지원하는 제품 카탈로그는 전체 인덱스를 스캔하지 않고도 한 마켓플레이스의 재고 내에서 검색할 수 있습니다. 파티션 키는 선택 사항이지만 쿼리 처리량이 많은 대규모 데이터세트에 대해 권장됩니다.
인라인 필터 속성을 확장하고 범주를 필터 속성으로 추가합니다. 그러면 쿼리 시 검색 결과를 특정 제품 범주로 좁힐 수 있습니다. 필터 조건은 정확히 일치하는 값만 지원합니다. BETWEEN 또는 BEGINS_WITH와 같은 범위 조건은 지원되지 않습니다. 모든 테이블 속성이 검색 결과와 함께 반환되도록 속성 프로젝션을 모두로 둡니다. 벡터 인덱스 생성을 선택하고 인덱스 상태가 활성으로 변경될 때까지 기다립니다.
3. 벡터 검색 실행
제품 설명에 사용한 것과 동일한 임베딩 모델을 사용하여 ‘여름용 경량 러닝화’와 같은 자연어 검색어에서 쿼리 벡터를 생성합니다. DynamoDB 콘솔의 왼쪽 탐색 창에서 항목 탐색을 선택하고 ProductCatalog 테이블을 선택합니다.
검색을 선택하여 벡터 검색 모드로 전환하세요. 벡터 인덱스 선택 드롭다운에서 ProductDescriptionIndex를 선택하고 벡터 검색 필드에 쿼리 벡터를 붙여넣은 다음, 결과 수(상위 K)를 5로 설정합니다. 파티션 키 값으로 US를 입력하여 검색 범위를 미국 마켓플레이스로 지정합니다. 인라인 필터 속성을 확장하고 신발 제품으로만 검색 범위를 좁히도록 범주를 footwear로 설정합니다. 이제 실행을 선택합니다.

DynamoDB는 신발 범주에서 시맨틱으로 유사한 최대 5개의 제품을 반환하며, 유사성 점수로 순위를 매겨 반홥하며, 동일한 응답에서 이름 및 가격과 같은 표준 운영 속성도 함께 반환합니다. 유사성 점수의 의미는 인덱스에 대해 선택한 거리 함수에 따라 달라집니다. 코사인 및 유클리드 거리 함수의 경우 유사성 점수 값이 낮을수록 유사성이 높고, 점수가 0이면 동일한 벡터를 나타냅니다. 스칼라곱 거리 함수의 경우 유사성 점수 값이 높을수록 유사성이 높습니다.
API 직접 호출 및 문서 검색을 포함하여 프로그래밍 방식으로 벡터 검색과 상호 작용하려면 선호하는 AI 코딩 도구와 함께 AWS MCP 서버 및 플러그인을 사용해 보세요. 자세한 내용은 Amazon DynamoDB 개발자 안내서를 참조하세요.
지금 시작하기
Amazon DynamoDB의 벡터 검색은 AWS GovCloud(미국) 리전을 포함하여 모든 상용 AWS 리전에서 정식 출시되었습니다. 리전별 이용 가능 여부와 향후 로드맵은 리전별 AWS 기능을 참조하세요. 요금 세부 정보는 Amazon DynamoDB 요금 페이지를 참조하세요.
지금 DynamoDB에서 벡터 검색을 사용해 보고 AWS re:Post for Amazon DynamoDB로 또는 일반적인 AWS Support 연락처를 통해 피드백을 보내주세요.