Amazon DynamoDB, 이제 모든 규모에서 실시간 벡터 검색 지원 | Amazon Web Services (새 탭에서 열림)
Amazon DynamoDB에 벡터 검색 기능이 정식 출시되어, 운영 데이터와 벡터 임베딩을 한 테이블에 저장하고 별도 벡터 데이터베이스 없이 유사도 검색을 수행할 수 있게 되었습니다. 서버 관리나 데이터 동기화 파이프라인 없이도 단일 자릿수 밀리초 지연 시간과 99% 이상의 재현율을 목표로 하며, 수조 개 벡터까지 확장할 수 있습니다. 기존에 DynamoDB를 사용하는 애플리케이션이라면 의미 기반 검색, RAG, 추천 시스템 등을 더 단순한 구조로 구현할 수 있습니다.
DynamoDB 네이티브 벡터 검색의 특징
- 벡터 임베딩을 DynamoDB의 운영 데이터와 함께 저장합니다.
- 별도 벡터 데이터베이스로 데이터를 복제하거나 동기화할 필요가 없습니다.
- 서버 프로비저닝, 패치, 소프트웨어 설치, 유지보수가 필요 없는 서버리스 방식입니다.
- 벡터 인덱스는 저장 용량 제한 없이 수평 확장됩니다.
- 기존 DynamoDB와 동일한 서버리스 인프라 및 요청 단위 과금 모델을 사용합니다.
- 에이전트 메모리, 검색 증강 생성(RAG), 추천 엔진, 개인화, 이상 탐지 등에 활용할 수 있습니다.
벡터 저장 및 검색 방식
- 사용자가 선택한 임베딩 모델로 텍스트를 벡터로 변환합니다.
- Amazon Bedrock Titan Text Embeddings
- Cohere Embed
- OpenAI 임베딩 모델 등
- 임베딩은 DynamoDB의 기존
List데이터 타입에 여러Number값으로 저장합니다. - 별도 벡터 전용 데이터 타입이나 테이블 스키마 변경이 필요하지 않습니다.
PutItem또는 기존 항목을 수정하는UpdateItem으로 벡터를 저장합니다.- 벡터 인덱스를 생성한 뒤
SearchVectorsAPI로 검색합니다. - 검색 요청에는 다음 정보를 포함할 수 있습니다.
- 검색용 쿼리 벡터
- 반환할 결과 수(최대 100개)
- 파티션 키 값
- 선택적 필터 조건
- 결과는 유사도에 따라 정렬되어 반환되며, 벡터와 함께 상품명·가격 등 운영 데이터도 조회할 수 있습니다.
지원되는 인덱스 및 거리 함수
- 최대 4096차원 벡터를 지원합니다.
- 다음 거리 함수를 제공합니다.
- Cosine: 벡터의 크기보다 방향을 비교하며, 텍스트 의미 유사도에 적합합니다.
- Euclidean: 벡터 간 실제 거리를 비교하며, 크기 자체가 중요한 데이터에 사용할 수 있습니다.
- Dot product: 방향과 크기를 모두 반영하며, 관심도와 빈도를 함께 고려하는 추천 시스템 등에 적합합니다.
- 일반적으로 임베딩 모델을 학습하거나 사용하는 방식에 맞는 거리 함수를 선택하는 것이 좋습니다.
- Cosine과 Euclidean은 점수가 낮을수록 유사하고, Dot product는 점수가 높을수록 유사합니다.
파티션 키와 인라인 필터
- 벡터 인덱스에 파티션 키를 지정하면 벡터를 분산 저장하고 검색 범위를 제한할 수 있습니다.
- 예를 들어
marketplace를 파티션 키로 설정하면 미국 시장 상품만 검색할 수 있습니다. - 대규모 데이터셋이나 높은 검색 처리량이 필요한 경우 파티션 키 사용이 권장됩니다.
- 검색 시 일반 속성을 이용한 인라인 필터를 적용할 수 있습니다.
- 예:
category = footwear
- 예:
- 필터는 정확히 일치하는 값만 지원합니다.
BETWEEN,BEGINS_WITH같은 범위 조건은 지원하지 않습니다.- 검색 결과에 반환할 속성은 전체 속성을 포함하거나 필요한 속성만 프로젝션할 수 있습니다.
상품 카탈로그 적용 예시
- 기존
ProductCatalog테이블에 다음과 같은 운영 데이터가 있다고 가정합니다.productIdcategorydescriptionmarketplacenameprice
- 상품 설명을 임베딩으로 변환한 뒤
descriptionEmbedding속성으로 저장합니다. descriptionEmbedding을 대상으로ProductDescriptionIndex벡터 인덱스를 생성합니다.- 인덱스 설정 예시는 다음과 같습니다.
- 벡터 속성:
descriptionEmbedding - 거리 함수:
Cosine - 파티션 키:
marketplace - 필터 속성:
category
- 벡터 속성:
- “lightweight running shoes for summer” 같은 자연어 검색어를 동일한 임베딩 모델로 변환합니다.
US시장과footwear카테고리로 범위를 제한하고 Top K를 5로 설정하면, 의미적으로 가장 가까운 상품 5개를 유사도 순으로 반환합니다.
기존 구조와 비교한 장점
- 기존에는 DynamoDB 데이터를 전용 벡터 저장소로 복제해야 했습니다.
- 이 방식은 다음과 같은 부담을 만들었습니다.
- 데이터 동기화 파이프라인 운영
- 데이터 이동 비용
- 별도 데이터베이스 라이선스 및 운영 비용
- 두 시스템 간 일관성 관리
- 대규모 환경에서 예측 가능한 지연 시간 유지
- DynamoDB 네이티브 벡터 검색은 운영 데이터와 벡터를 한곳에서 관리해 이러한 복잡성을 줄입니다.
기존 운영 데이터가 DynamoDB에 있다면, 별도 벡터 데이터베이스를 추가하기 전에 네이티브 벡터 검색을 우선 검토할 만합니다. 특히 자연어 상품 검색이나 RAG처럼 벡터 검색 결과와 가격·재고·카테고리 같은 운영 속성을 함께 사용해야 하는 경우 구조 단순화와 운영 비용 절감에 유리합니다.