섹션별 상세
Amazon Bedrock의 Nova Multimodal Embeddings API는 비동기 방식으로 비디오를 처리하며, 자동으로 비디오를 15초 단위의 청크로 분할하여 1024차원의 오디오-비주얼 통합 임베딩을 생성한다. 3072차원 대신 1024차원을 선택함으로써 정확도 손실을 최소화하면서 저장 비용을 3배 절감할 수 있으며, 초당 $0.00056의 배치 가격 정책이 적용된다.
python
response = bedrock.start_async_invoke(
modelId="amazon.nova-2-multimodal-embeddings-v1:0",
modelInput={
"taskType": "SEGMENTED_EMBEDDING",
"segmentedEmbeddingParams": {
"embeddingPurpose": "GENERIC_INDEX",
"embeddingDimension": 1024,
"video": {
"format": "mp4",
"embeddingMode": "AUDIO_VIDEO_COMBINED",
"source": {"s3Location": {"uri": video_s3_uri}},
"segmentationConfig": {"durationSeconds": 15}
}
}
},
outputDataConfig={"s3OutputDataConfig": {"s3Uri": output_s3_uri}}
)Amazon Bedrock Nova 모델을 사용하여 비디오 임베딩 생성을 비동기로 시작하는 코드

시스템은 시맨틱 검색을 위한 OpenSearch k-NN 인덱스와 키워드 매칭을 위한 텍스트 인덱스를 동시에 운영하는 이중 인덱스 구조를 채택한다. Nova Pro 또는 Nova Lite 모델을 사용하여 비디오당 10-15개의 설명 태그를 생성하고 이를 텍스트 인덱스에 저장함으로써, 벡터 유사도(70% 가중치)와 BM25 키워드 점수(30% 가중치)를 결합한 정교한 하이브리드 검색을 지원한다.
python
knn_index_body = {
"settings": {
"index.knn": True,
"number_of_shards": 2,
"number_of_replicas": 1
},
"mappings": {
"properties": {
"video_id": {"type": "keyword"},
"segment_index": {"type": "integer"},
"timestamp": {"type": "float"},
"embedding": {
"type": "knn_vector",
"dimension": 1024,
"method": {
"name": "hnsw",
"space_type": "cosinesimilarity",
"engine": "faiss"
}
},
"s3_uri": {"type": "keyword"}
}
}
}
opensearch_client.indices.create(index="video-embeddings-knn", body=knn_index_body)OpenSearch에서 벡터 검색을 위한 k-NN 인덱스를 생성하는 코드
python
def search_hybrid(query_text, opensearch_client, k=10, vector_weight=0.7, text_weight=0.3):
query_embedding = generate_query_embedding(query_text)
knn_response = opensearch_client.search(
index="video-embeddings-knn",
body={"query": {"knn": {"embedding": {"vector": query_embedding, "k": 20}}}, "size": 20}
)
text_response = opensearch_client.search(
index="video-embeddings-text",
body={"query": {"match": {"tags": query_text}}, "size": 20}
)
// ...(중략)
for hit in knn_hits:
combined[key]['combined_score'] = hit['_score'] * vector_weight
for hit in text_hits:
combined[key]['combined_score'] += hit['_score'] * text_weight
return sorted(combined.values(), key=lambda x: x['combined_score'], reverse=True)[:k]벡터 유사도와 텍스트 매칭 점수를 결합하여 하이브리드 검색을 수행하는 로직

약 8,480시간 분량의 비디오 79만 개를 처리하는 데 41시간이 소요되었으며, 총 인덱싱 비용은 약 $18,088로 집계되었다. 검색 성능 측면에서는 79만 개 비디오 기준 시맨틱 검색 76ms, 하이브리드 검색 106ms의 지연 시간을 기록하여 프로덕션 환경의 실시간 요구사항을 충족함을 확인했다.
Amazon EC2 c7i.48xlarge 인스턴스 4대를 활용해 시간당 19,400개의 비디오를 처리하는 파이프라인을 구축했다. Bedrock의 계정당 동시 실행 제한(30개)을 준수하기 위해 작업 큐와 폴링(Polling) 메커니즘을 구현한 오케스트레이터를 사용하여 처리량을 극대화했다.
용어 해설
- 멀티모달 임베딩(Multimodal Embeddings)
- — 텍스트, 이미지, 오디오 등 서로 다른 형태의 데이터를 동일한 벡터 공간에 수치로 표현하는 기술이다. 비디오의 시각적 장면과 오디오 정보를 동시에 벡터화하여 의미론적 유사성을 계산하는 데 핵심적인 역할을 한다.
- k-최근접 이웃 인덱스(k-NN Index)
- — 고차원 벡터 공간에서 쿼리 벡터와 가장 유사한 k개의 데이터를 빠르게 찾아내는 인덱싱 방식이다. 대규모 비디오 데이터셋에서 시맨틱 검색을 실시간에 가깝게 수행하기 위해 사용된다.
- BM25
- — 문서의 키워드 빈도와 희소성을 바탕으로 관련성을 평가하는 통계적 알고리즘이다. 벡터 기반의 시맨틱 검색이 놓칠 수 있는 정확한 키워드 매칭을 보완하기 위해 하이브리드 검색에서 텍스트 점수 산출에 활용된다.
- 비동기 API(Async API)
- — 요청을 보낸 후 즉시 결과를 기다리지 않고 작업 완료 알림을 받거나 나중에 결과를 확인하는 방식이다. 비디오 처리와 같이 시간이 오래 걸리는 대용량 작업을 효율적으로 처리하고 시스템 자원을 최적화하는 데 필수적이다.
- 하이브리드 검색(Hybrid Search)
- — 벡터 유사도를 이용한 시맨틱 검색과 전통적인 키워드 매칭 검색을 결합한 기법이다. 두 방식의 점수를 가중치에 따라 합산하여 검색 결과의 정확도와 재현율을 동시에 높이는 효과가 있다.
기술
- Amazon Nova
- Amazon Bedrock
- Amazon OpenSearch Service
- Amazon S3
- Amazon EC2
- Python
- Boto3
활용 사례
- 미디어 아카이브 자연어 검색
- 유사 영상 추천 시스템
- 비디오 콘텐츠 자동 태깅 및 분류
- 대규모 비디오 데이터 레이크 구축
AI 분석 전체 내용 보기
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
원문 발행 2026. 03. 13.수집 2026. 03. 13.출처 타입 RSS
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.