Product
TwelveLabs Embed API Beta

매니쉬 마헤슈와리
Twelve Labs가 Embed API 오픈 베타를 출시합니다. 이를 통해 개발자들은 Pinecone, MongoDB, Databricks, Milvus, LanceDB, ApertureDB 등의 연동 지원을 바탕으로 비디오, 텍스트, 이미지, 오디오 전체를 아우르는 멀티모달 임베딩을 생성할 수 있으며, 유사 솔루션 대비 비용을 최대 70%까지 절감할 수 있습니다.
Twelve Labs가 Embed API 오픈 베타를 출시합니다. 이를 통해 개발자들은 Pinecone, MongoDB, Databricks, Milvus, LanceDB, ApertureDB 등의 연동 지원을 바탕으로 비디오, 텍스트, 이미지, 오디오 전체를 아우르는 멀티모달 임베딩을 생성할 수 있으며, 유사 솔루션 대비 비용을 최대 70%까지 절감할 수 있습니다.

In this article
뉴스레터 구독하기
뉴스레터 구독하기
영상 이해 분야의 최신 기술 업데이트, 튜토리얼 및 인사이트를 받아보세요.
영상 이해 분야의 최신 기술 업데이트, 튜토리얼 및 인사이트를 받아보세요.
AI로 영상을 검색하고, 분석하고, 탐색하세요.
2024. 11. 13.
5분
링크 복사하기
고객이 최첨단 멀티모달 임베딩을 생성할 수 있도록 지원하는 새로운 Embed API의 오픈 베타 버전을 기쁜 마음으로 소개해 드립니다.
주요 특징은 다음과 같습니다:
텍스트-비디오 검색 벤치마크(MSR-VTT, ActivityNet) 및 텍스트-이미지 검색 벤치마크(MS-COCO)에서 Gemini Multimodal 임베딩과 Google VideoPrism을 능가하는 최첨단 멀티모달 모델 Marengo 2.6 탑재
가성비 측면에서 CLIP 기반 모델을 포함한 타 솔루션 대비 최대 70% 저렴한 비용
비디오 내에서 객체, 행동, 이벤트를 공간(프레임 내 발생 위치)과 시간(여러 프레임에 걸쳐 발생하는 시점) 모두에서 식별하고 위치를 파악하는 시공간적 이해 능력
간편한 벡터 저장을 위해 MongoDB, Pinecone, Databricks Mosaic AI, Milvus, LanceDB, ApertureDB와의 연동 지원
API를 사용해 인덱싱된 비디오의 임베딩을 가져오고, Twelve Labs Playground에서 비디오 임베딩을 시각화하여 확인
임베딩을 위해 Embed API를 바로 사용해 보시려면 문서 및 빠른 시작 가이드(Quickstart cookbook)를 참고하세요. Embed API 가격 요금표는 여기에서 확인하실 수 있습니다.

왜 멀티모달 임베딩일까요?
애플리케이션은 종종 다양한 포맷의 콘텐츠를 처리해야 합니다. Twelve Labs Embed API는 다양한 모달리티(multiple modalities)를 아우르는 콘텐츠 임베딩을 지원하므로, 사용자가 텍스트, 이미지, 비디오, 오디오 데이터 간의 연결 고리를 만들 수 있도록 돕습니다.
개발자는 Embed API를 통해 다음과 같은 임의의 모달리티 간(any-to-any) 검색 및 추출 작업을 수행할 수 있습니다:
텍스트-비디오(Text-to-Video): 자연어 질의를 사용하여 비디오 라이브러리 검색
이미지-비디오(Image-to-Video): 이미지를 기반으로 관련 비디오 콘텐츠 추출
텍스트-오디오(Text-to-Audio) 및 오디오-비디오(Audio-to-Video): 오디오 및 비디오 데이터 전체를 효율적으로 연결하고 검색
또한, 멀티모달 임베딩은 다음을 포함한 수많은 AI 활용 사례에 적용될 수 있습니다:
검색 증강 생성 (RAG, Retrieval Augmented Generation)
하이브리드 검색
모델 학습
고품질 학습 데이터 생성
이상 장면 탐지 (Anomaly detection)
다음 인터랙티브 시각화 자료는 Kinetics 400 데이터셋의 비디오 샘플 임베딩을 보여줍니다.

Twelve Labs Embed API로 비디오 RAG 구축하기
멀티모달 임베딩의 주요 활용 사례 중 하나는 하이브리드 검색을 구축하는 것입니다. 이제 Twelve Labs Embed API와 널리 쓰이는 벡터 데이터베이스를 함께 활용하여 비디오 검색 증강 생성(Video-RAG) 시스템을 구축할 수 있습니다. 다음 블로그 포스트를 읽고 하이브리드 비디오 검색 시스템을 구축하는 심층 튜토리얼을 확인해 보세요:
Pinecone – 멀티모달 RAG: Twelve Labs 및 Pinecone으로 비디오와 대화하기 (Pinecone 문서)
MongoDB Atlas – Twelve Labs Embed API와 MongoDB Atlas로 시맨틱 비디오 검색 구축하기 (MongoDB 문서)
Databricks Mosaic AI – Twelve Labs + Databricks Mosaic AI를 활용한 고도화된 비디오 이해
Milvus – 시맨틱 검색을 위한 Twelve Labs 및 Milvus 활용법 (Milvus 문서)
ApertureDB – Twelve Labs와 ApertureDB로 구현하는 시맨틱 비디오 검색 엔진

Twelve Labs Embed API로 비디오 임베딩 생성하기
아래의 표는 Twelve Labs Embed API를 사용한 임베딩에 대한 세부 정보를 제공합니다.

다음 코드 스니펫은 Twelve Labs Embed API를 사용하여 임베딩을 생성하는 예시를 보여줍니다.
Twelve Labs 멀티모달 임베딩은 제공되는 API 및 SDK(Python, NodeJS)를 통해 이용하실 수 있습니다. 여기서는 코드 스니펫 예시로 Python SDK를 사용합니다. 첫 번째 단계는 필요한 라이브러리를 설치하고 필요한 모듈을 임포트하는 것입니다:
# 필요한 라이브러리 및 의존성 설치 !pip install twelvelabs # 필요한 모듈 임포트 import twelvelabs
위 코드를 실행하고 나면 다음 단계를 진행할 수 있도록 모든 필요한 라이브러리가 설치되고 준비됩니다. 아래 코드 스니펫은 비디오 임베딩을 시각화하는 방법을 보여줍니다:
from twelvelabs import TwelveLabs from twelvelabs.models.embed import EmbeddingsTask # Twelve Labs 클라이언트 초기화 twelvelabs_client = TwelveLabs(api_key=TL_API_KEY) def generate_embedding(video_url): # 임베딩 작업 생성 task = twelvelabs_client.embed.task.create( engine_name="Marengo-retrieval-2.6", video_url=video_url ) print(f"태스크 생성 완료: id={task.id} engine_name={task.engine_name} status={task.status}") # 작업 진행 상황을 모니터링할 콜백 함수 정의 def on_task_update(task: EmbeddingsTask): print(f" 상태={task.status}") # 작업이 완료될 때까지 대기 status = task.wait_for_done( sleep_interval=2, callback=on_task_update ) print(f"임베딩 진행 완료: {status}") # 작업 결과 가져오기 task_result = twelvelabs_client.embed.task.retrieve(task.id) # 임베딩 추출 및 반환 embeddings = [] for v in task_result.video_embeddings: embeddings.append({ 'embedding': v.values, 'start_offset_sec': v.start_offset_sec, 'end_offset_sec': v.end_offset_sec, 'embedding_scope': v.embedding_scope }) return embeddings, task_result # 사용 예시 video_url = "https://storage.googleapis.com/ad-demos-datasets/videos/Ecommerce%20v2.5.mp4" # 비디오에 대한 임베딩 생성 embeddings, task_result = generate_embedding(video_url) print(f"비디오에서 {len(embeddings)}개의 임베딩이 생성되었습니다") for i, emb in enumerate(embeddings): print(f"임베딩 {i+1}:") print(f" 범위: {emb['embedding_scope']}") print(f" 시간 범위: {emb['start_offset_sec']} - {emb['end_offset_sec']} 초") print(f" 임베딩 벡터 (앞의 5개 값): {emb['embedding'][:5]}") print()
다음 코드 스니펫은 텍스트 쿼리가 주어졌을 때 텍스트 임베딩을 생성하는 방법을 보여줍니다:
def create_text_embedding( twelvelabs_client: TwelveLabs, text: str, engine_name: str = "Marengo-retrieval-2.6", verbose: bool = True ) -> dict: """ Twelve Labs Embed API를 사용해 텍스트 임베딩을 생성합니다. 예시: twelvelabs_client = TwelveLabs(api_key=TL_API_KEY) text_embedding = create_text_embedding(twelvelabs_client, "여기에 텍스트 입력") """ # 임베딩 생성 text_embedding = twelvelabs_client.embed.create( engine_name=engine_name, text=text ) # verbose 속성이 True인 경우 정보 출력 if verbose: print("텍스트 임베딩이 생성되었습니다") print(f" 엔진: {text_embedding.engine_name}") print(f" 임베딩: {text_embedding.text_embedding}") return text_embedding
다음 코드 스니펫은 오디오 파일이 주어졌을 때 오디오 임베딩을 생성하는 방법을 보여줍니다:
def create_audio_embedding( twelvelabs_client: TwelveLabs, audio_file: Union[str, Path], engine_name: str = "Marengo-retrieval-2.6", verbose: bool = True ) -> dict: """ Twelve Labs Embed API를 사용해 오디오 임베딩을 생성합니다. 예시: twelvelabs_client = TwelveLabs(api_key=TL_API_KEY) audio_embedding = create_audio_embedding(twelvelabs_client, "path/to/audio.mp3") """ # 임베딩 생성 audio_embedding = twelvelabs_client.embed.create( engine_name=engine_name, audio_file=audio_file, ) # verbose 속성이 True인 경우 정보 출력 if verbose: print("오디오 임베딩이 생성되었습니다") print(f" 엔진: {audio_embedding.engine_name}") if audio_embedding.audio_embedding.segments: print("세그먼트 목록:") for i, segment in enumerate(audio_embedding.audio_embedding.segments, 1): print(f" 세그먼트 {i}:") print(f" 시작 오프셋 (초): {segment.start_offset_sec}") if segment.values: print(f" 값: {segment.values[:5]}... (일부 생략)") return audio_embedding
다음 코드 스니펫은 이미지 파일이 주어졌을 때 이미지 임베딩을 생성하는 방법을 보여줍니다:
def create_image_embedding( twelvelabs_client: TwelveLabs, image_file: Union[str, Path], engine_name: str = "Marengo-retrieval-2.6", verbose: bool = True ) -> dict: """ Twelve Labs Embed API를 사용해 이미지 임베딩을 생성합니다. 예시: twelvelabs_client = TwelveLabs(api_key=TL_API_KEY) image_embedding = create_image_embedding(twelvelabs_client, "path/to/image.jpg") """ # 임베딩 생성 image_embedding = twelvelabs_client.embed.create( engine_name=engine_name, image_file=image_file ) # verbose 속성이 True인 경우 정보 출력 if verbose: print("이미지 임베딩이 생성되었습니다") print(f" 엔진: {image_embedding.engine_name}") print(f" 임베딩: {image_embedding.image_embedding.values[:5]}... (일부 생략)") return image_embedding
Twelve Labs Embed API 바로 시작하기
Twelve Labs Embeddings는 현재 API와 Playground를 통해 사용 가능합니다. Embed API를 빠르게 시작하는 데 도움이 될 몇 가지 리소스를 안내해 드립니다:
작성자
리드
Lucas Lee, Yeonhoo Park, Manish Maheshwari
핵심 연구, 제품, 디자인, 엔지니어링 및 GTM
Jeff Kim, Jenna Kang, Sean Barclay, Sunny Nguyen, Meryl Hu, Ryan Won, Esther Kim, Wade Jeong, SJ Kim, Henry Choi, Maninder Saini, James Le, Aiden Lee, Soyoung Lee, Jae Lee
고객이 최첨단 멀티모달 임베딩을 생성할 수 있도록 지원하는 새로운 Embed API의 오픈 베타 버전을 기쁜 마음으로 소개해 드립니다.
주요 특징은 다음과 같습니다:
텍스트-비디오 검색 벤치마크(MSR-VTT, ActivityNet) 및 텍스트-이미지 검색 벤치마크(MS-COCO)에서 Gemini Multimodal 임베딩과 Google VideoPrism을 능가하는 최첨단 멀티모달 모델 Marengo 2.6 탑재
가성비 측면에서 CLIP 기반 모델을 포함한 타 솔루션 대비 최대 70% 저렴한 비용
비디오 내에서 객체, 행동, 이벤트를 공간(프레임 내 발생 위치)과 시간(여러 프레임에 걸쳐 발생하는 시점) 모두에서 식별하고 위치를 파악하는 시공간적 이해 능력
간편한 벡터 저장을 위해 MongoDB, Pinecone, Databricks Mosaic AI, Milvus, LanceDB, ApertureDB와의 연동 지원
API를 사용해 인덱싱된 비디오의 임베딩을 가져오고, Twelve Labs Playground에서 비디오 임베딩을 시각화하여 확인
임베딩을 위해 Embed API를 바로 사용해 보시려면 문서 및 빠른 시작 가이드(Quickstart cookbook)를 참고하세요. Embed API 가격 요금표는 여기에서 확인하실 수 있습니다.

왜 멀티모달 임베딩일까요?
애플리케이션은 종종 다양한 포맷의 콘텐츠를 처리해야 합니다. Twelve Labs Embed API는 다양한 모달리티(multiple modalities)를 아우르는 콘텐츠 임베딩을 지원하므로, 사용자가 텍스트, 이미지, 비디오, 오디오 데이터 간의 연결 고리를 만들 수 있도록 돕습니다.
개발자는 Embed API를 통해 다음과 같은 임의의 모달리티 간(any-to-any) 검색 및 추출 작업을 수행할 수 있습니다:
텍스트-비디오(Text-to-Video): 자연어 질의를 사용하여 비디오 라이브러리 검색
이미지-비디오(Image-to-Video): 이미지를 기반으로 관련 비디오 콘텐츠 추출
텍스트-오디오(Text-to-Audio) 및 오디오-비디오(Audio-to-Video): 오디오 및 비디오 데이터 전체를 효율적으로 연결하고 검색
또한, 멀티모달 임베딩은 다음을 포함한 수많은 AI 활용 사례에 적용될 수 있습니다:
검색 증강 생성 (RAG, Retrieval Augmented Generation)
하이브리드 검색
모델 학습
고품질 학습 데이터 생성
이상 장면 탐지 (Anomaly detection)
다음 인터랙티브 시각화 자료는 Kinetics 400 데이터셋의 비디오 샘플 임베딩을 보여줍니다.

Twelve Labs Embed API로 비디오 RAG 구축하기
멀티모달 임베딩의 주요 활용 사례 중 하나는 하이브리드 검색을 구축하는 것입니다. 이제 Twelve Labs Embed API와 널리 쓰이는 벡터 데이터베이스를 함께 활용하여 비디오 검색 증강 생성(Video-RAG) 시스템을 구축할 수 있습니다. 다음 블로그 포스트를 읽고 하이브리드 비디오 검색 시스템을 구축하는 심층 튜토리얼을 확인해 보세요:
Pinecone – 멀티모달 RAG: Twelve Labs 및 Pinecone으로 비디오와 대화하기 (Pinecone 문서)
MongoDB Atlas – Twelve Labs Embed API와 MongoDB Atlas로 시맨틱 비디오 검색 구축하기 (MongoDB 문서)
Databricks Mosaic AI – Twelve Labs + Databricks Mosaic AI를 활용한 고도화된 비디오 이해
Milvus – 시맨틱 검색을 위한 Twelve Labs 및 Milvus 활용법 (Milvus 문서)
ApertureDB – Twelve Labs와 ApertureDB로 구현하는 시맨틱 비디오 검색 엔진

Twelve Labs Embed API로 비디오 임베딩 생성하기
아래의 표는 Twelve Labs Embed API를 사용한 임베딩에 대한 세부 정보를 제공합니다.

다음 코드 스니펫은 Twelve Labs Embed API를 사용하여 임베딩을 생성하는 예시를 보여줍니다.
Twelve Labs 멀티모달 임베딩은 제공되는 API 및 SDK(Python, NodeJS)를 통해 이용하실 수 있습니다. 여기서는 코드 스니펫 예시로 Python SDK를 사용합니다. 첫 번째 단계는 필요한 라이브러리를 설치하고 필요한 모듈을 임포트하는 것입니다:
# 필요한 라이브러리 및 의존성 설치 !pip install twelvelabs # 필요한 모듈 임포트 import twelvelabs
위 코드를 실행하고 나면 다음 단계를 진행할 수 있도록 모든 필요한 라이브러리가 설치되고 준비됩니다. 아래 코드 스니펫은 비디오 임베딩을 시각화하는 방법을 보여줍니다:
from twelvelabs import TwelveLabs from twelvelabs.models.embed import EmbeddingsTask # Twelve Labs 클라이언트 초기화 twelvelabs_client = TwelveLabs(api_key=TL_API_KEY) def generate_embedding(video_url): # 임베딩 작업 생성 task = twelvelabs_client.embed.task.create( engine_name="Marengo-retrieval-2.6", video_url=video_url ) print(f"태스크 생성 완료: id={task.id} engine_name={task.engine_name} status={task.status}") # 작업 진행 상황을 모니터링할 콜백 함수 정의 def on_task_update(task: EmbeddingsTask): print(f" 상태={task.status}") # 작업이 완료될 때까지 대기 status = task.wait_for_done( sleep_interval=2, callback=on_task_update ) print(f"임베딩 진행 완료: {status}") # 작업 결과 가져오기 task_result = twelvelabs_client.embed.task.retrieve(task.id) # 임베딩 추출 및 반환 embeddings = [] for v in task_result.video_embeddings: embeddings.append({ 'embedding': v.values, 'start_offset_sec': v.start_offset_sec, 'end_offset_sec': v.end_offset_sec, 'embedding_scope': v.embedding_scope }) return embeddings, task_result # 사용 예시 video_url = "https://storage.googleapis.com/ad-demos-datasets/videos/Ecommerce%20v2.5.mp4" # 비디오에 대한 임베딩 생성 embeddings, task_result = generate_embedding(video_url) print(f"비디오에서 {len(embeddings)}개의 임베딩이 생성되었습니다") for i, emb in enumerate(embeddings): print(f"임베딩 {i+1}:") print(f" 범위: {emb['embedding_scope']}") print(f" 시간 범위: {emb['start_offset_sec']} - {emb['end_offset_sec']} 초") print(f" 임베딩 벡터 (앞의 5개 값): {emb['embedding'][:5]}") print()
다음 코드 스니펫은 텍스트 쿼리가 주어졌을 때 텍스트 임베딩을 생성하는 방법을 보여줍니다:
def create_text_embedding( twelvelabs_client: TwelveLabs, text: str, engine_name: str = "Marengo-retrieval-2.6", verbose: bool = True ) -> dict: """ Twelve Labs Embed API를 사용해 텍스트 임베딩을 생성합니다. 예시: twelvelabs_client = TwelveLabs(api_key=TL_API_KEY) text_embedding = create_text_embedding(twelvelabs_client, "여기에 텍스트 입력") """ # 임베딩 생성 text_embedding = twelvelabs_client.embed.create( engine_name=engine_name, text=text ) # verbose 속성이 True인 경우 정보 출력 if verbose: print("텍스트 임베딩이 생성되었습니다") print(f" 엔진: {text_embedding.engine_name}") print(f" 임베딩: {text_embedding.text_embedding}") return text_embedding
다음 코드 스니펫은 오디오 파일이 주어졌을 때 오디오 임베딩을 생성하는 방법을 보여줍니다:
def create_audio_embedding( twelvelabs_client: TwelveLabs, audio_file: Union[str, Path], engine_name: str = "Marengo-retrieval-2.6", verbose: bool = True ) -> dict: """ Twelve Labs Embed API를 사용해 오디오 임베딩을 생성합니다. 예시: twelvelabs_client = TwelveLabs(api_key=TL_API_KEY) audio_embedding = create_audio_embedding(twelvelabs_client, "path/to/audio.mp3") """ # 임베딩 생성 audio_embedding = twelvelabs_client.embed.create( engine_name=engine_name, audio_file=audio_file, ) # verbose 속성이 True인 경우 정보 출력 if verbose: print("오디오 임베딩이 생성되었습니다") print(f" 엔진: {audio_embedding.engine_name}") if audio_embedding.audio_embedding.segments: print("세그먼트 목록:") for i, segment in enumerate(audio_embedding.audio_embedding.segments, 1): print(f" 세그먼트 {i}:") print(f" 시작 오프셋 (초): {segment.start_offset_sec}") if segment.values: print(f" 값: {segment.values[:5]}... (일부 생략)") return audio_embedding
다음 코드 스니펫은 이미지 파일이 주어졌을 때 이미지 임베딩을 생성하는 방법을 보여줍니다:
def create_image_embedding( twelvelabs_client: TwelveLabs, image_file: Union[str, Path], engine_name: str = "Marengo-retrieval-2.6", verbose: bool = True ) -> dict: """ Twelve Labs Embed API를 사용해 이미지 임베딩을 생성합니다. 예시: twelvelabs_client = TwelveLabs(api_key=TL_API_KEY) image_embedding = create_image_embedding(twelvelabs_client, "path/to/image.jpg") """ # 임베딩 생성 image_embedding = twelvelabs_client.embed.create( engine_name=engine_name, image_file=image_file ) # verbose 속성이 True인 경우 정보 출력 if verbose: print("이미지 임베딩이 생성되었습니다") print(f" 엔진: {image_embedding.engine_name}") print(f" 임베딩: {image_embedding.image_embedding.values[:5]}... (일부 생략)") return image_embedding
Twelve Labs Embed API 바로 시작하기
Twelve Labs Embeddings는 현재 API와 Playground를 통해 사용 가능합니다. Embed API를 빠르게 시작하는 데 도움이 될 몇 가지 리소스를 안내해 드립니다:
작성자
리드
Lucas Lee, Yeonhoo Park, Manish Maheshwari
핵심 연구, 제품, 디자인, 엔지니어링 및 GTM
Jeff Kim, Jenna Kang, Sean Barclay, Sunny Nguyen, Meryl Hu, Ryan Won, Esther Kim, Wade Jeong, SJ Kim, Henry Choi, Maninder Saini, James Le, Aiden Lee, Soyoung Lee, Jae Lee
고객이 최첨단 멀티모달 임베딩을 생성할 수 있도록 지원하는 새로운 Embed API의 오픈 베타 버전을 기쁜 마음으로 소개해 드립니다.
주요 특징은 다음과 같습니다:
텍스트-비디오 검색 벤치마크(MSR-VTT, ActivityNet) 및 텍스트-이미지 검색 벤치마크(MS-COCO)에서 Gemini Multimodal 임베딩과 Google VideoPrism을 능가하는 최첨단 멀티모달 모델 Marengo 2.6 탑재
가성비 측면에서 CLIP 기반 모델을 포함한 타 솔루션 대비 최대 70% 저렴한 비용
비디오 내에서 객체, 행동, 이벤트를 공간(프레임 내 발생 위치)과 시간(여러 프레임에 걸쳐 발생하는 시점) 모두에서 식별하고 위치를 파악하는 시공간적 이해 능력
간편한 벡터 저장을 위해 MongoDB, Pinecone, Databricks Mosaic AI, Milvus, LanceDB, ApertureDB와의 연동 지원
API를 사용해 인덱싱된 비디오의 임베딩을 가져오고, Twelve Labs Playground에서 비디오 임베딩을 시각화하여 확인
임베딩을 위해 Embed API를 바로 사용해 보시려면 문서 및 빠른 시작 가이드(Quickstart cookbook)를 참고하세요. Embed API 가격 요금표는 여기에서 확인하실 수 있습니다.

왜 멀티모달 임베딩일까요?
애플리케이션은 종종 다양한 포맷의 콘텐츠를 처리해야 합니다. Twelve Labs Embed API는 다양한 모달리티(multiple modalities)를 아우르는 콘텐츠 임베딩을 지원하므로, 사용자가 텍스트, 이미지, 비디오, 오디오 데이터 간의 연결 고리를 만들 수 있도록 돕습니다.
개발자는 Embed API를 통해 다음과 같은 임의의 모달리티 간(any-to-any) 검색 및 추출 작업을 수행할 수 있습니다:
텍스트-비디오(Text-to-Video): 자연어 질의를 사용하여 비디오 라이브러리 검색
이미지-비디오(Image-to-Video): 이미지를 기반으로 관련 비디오 콘텐츠 추출
텍스트-오디오(Text-to-Audio) 및 오디오-비디오(Audio-to-Video): 오디오 및 비디오 데이터 전체를 효율적으로 연결하고 검색
또한, 멀티모달 임베딩은 다음을 포함한 수많은 AI 활용 사례에 적용될 수 있습니다:
검색 증강 생성 (RAG, Retrieval Augmented Generation)
하이브리드 검색
모델 학습
고품질 학습 데이터 생성
이상 장면 탐지 (Anomaly detection)
다음 인터랙티브 시각화 자료는 Kinetics 400 데이터셋의 비디오 샘플 임베딩을 보여줍니다.

Twelve Labs Embed API로 비디오 RAG 구축하기
멀티모달 임베딩의 주요 활용 사례 중 하나는 하이브리드 검색을 구축하는 것입니다. 이제 Twelve Labs Embed API와 널리 쓰이는 벡터 데이터베이스를 함께 활용하여 비디오 검색 증강 생성(Video-RAG) 시스템을 구축할 수 있습니다. 다음 블로그 포스트를 읽고 하이브리드 비디오 검색 시스템을 구축하는 심층 튜토리얼을 확인해 보세요:
Pinecone – 멀티모달 RAG: Twelve Labs 및 Pinecone으로 비디오와 대화하기 (Pinecone 문서)
MongoDB Atlas – Twelve Labs Embed API와 MongoDB Atlas로 시맨틱 비디오 검색 구축하기 (MongoDB 문서)
Databricks Mosaic AI – Twelve Labs + Databricks Mosaic AI를 활용한 고도화된 비디오 이해
Milvus – 시맨틱 검색을 위한 Twelve Labs 및 Milvus 활용법 (Milvus 문서)
ApertureDB – Twelve Labs와 ApertureDB로 구현하는 시맨틱 비디오 검색 엔진

Twelve Labs Embed API로 비디오 임베딩 생성하기
아래의 표는 Twelve Labs Embed API를 사용한 임베딩에 대한 세부 정보를 제공합니다.

다음 코드 스니펫은 Twelve Labs Embed API를 사용하여 임베딩을 생성하는 예시를 보여줍니다.
Twelve Labs 멀티모달 임베딩은 제공되는 API 및 SDK(Python, NodeJS)를 통해 이용하실 수 있습니다. 여기서는 코드 스니펫 예시로 Python SDK를 사용합니다. 첫 번째 단계는 필요한 라이브러리를 설치하고 필요한 모듈을 임포트하는 것입니다:
# 필요한 라이브러리 및 의존성 설치 !pip install twelvelabs # 필요한 모듈 임포트 import twelvelabs
위 코드를 실행하고 나면 다음 단계를 진행할 수 있도록 모든 필요한 라이브러리가 설치되고 준비됩니다. 아래 코드 스니펫은 비디오 임베딩을 시각화하는 방법을 보여줍니다:
from twelvelabs import TwelveLabs from twelvelabs.models.embed import EmbeddingsTask # Twelve Labs 클라이언트 초기화 twelvelabs_client = TwelveLabs(api_key=TL_API_KEY) def generate_embedding(video_url): # 임베딩 작업 생성 task = twelvelabs_client.embed.task.create( engine_name="Marengo-retrieval-2.6", video_url=video_url ) print(f"태스크 생성 완료: id={task.id} engine_name={task.engine_name} status={task.status}") # 작업 진행 상황을 모니터링할 콜백 함수 정의 def on_task_update(task: EmbeddingsTask): print(f" 상태={task.status}") # 작업이 완료될 때까지 대기 status = task.wait_for_done( sleep_interval=2, callback=on_task_update ) print(f"임베딩 진행 완료: {status}") # 작업 결과 가져오기 task_result = twelvelabs_client.embed.task.retrieve(task.id) # 임베딩 추출 및 반환 embeddings = [] for v in task_result.video_embeddings: embeddings.append({ 'embedding': v.values, 'start_offset_sec': v.start_offset_sec, 'end_offset_sec': v.end_offset_sec, 'embedding_scope': v.embedding_scope }) return embeddings, task_result # 사용 예시 video_url = "https://storage.googleapis.com/ad-demos-datasets/videos/Ecommerce%20v2.5.mp4" # 비디오에 대한 임베딩 생성 embeddings, task_result = generate_embedding(video_url) print(f"비디오에서 {len(embeddings)}개의 임베딩이 생성되었습니다") for i, emb in enumerate(embeddings): print(f"임베딩 {i+1}:") print(f" 범위: {emb['embedding_scope']}") print(f" 시간 범위: {emb['start_offset_sec']} - {emb['end_offset_sec']} 초") print(f" 임베딩 벡터 (앞의 5개 값): {emb['embedding'][:5]}") print()
다음 코드 스니펫은 텍스트 쿼리가 주어졌을 때 텍스트 임베딩을 생성하는 방법을 보여줍니다:
def create_text_embedding( twelvelabs_client: TwelveLabs, text: str, engine_name: str = "Marengo-retrieval-2.6", verbose: bool = True ) -> dict: """ Twelve Labs Embed API를 사용해 텍스트 임베딩을 생성합니다. 예시: twelvelabs_client = TwelveLabs(api_key=TL_API_KEY) text_embedding = create_text_embedding(twelvelabs_client, "여기에 텍스트 입력") """ # 임베딩 생성 text_embedding = twelvelabs_client.embed.create( engine_name=engine_name, text=text ) # verbose 속성이 True인 경우 정보 출력 if verbose: print("텍스트 임베딩이 생성되었습니다") print(f" 엔진: {text_embedding.engine_name}") print(f" 임베딩: {text_embedding.text_embedding}") return text_embedding
다음 코드 스니펫은 오디오 파일이 주어졌을 때 오디오 임베딩을 생성하는 방법을 보여줍니다:
def create_audio_embedding( twelvelabs_client: TwelveLabs, audio_file: Union[str, Path], engine_name: str = "Marengo-retrieval-2.6", verbose: bool = True ) -> dict: """ Twelve Labs Embed API를 사용해 오디오 임베딩을 생성합니다. 예시: twelvelabs_client = TwelveLabs(api_key=TL_API_KEY) audio_embedding = create_audio_embedding(twelvelabs_client, "path/to/audio.mp3") """ # 임베딩 생성 audio_embedding = twelvelabs_client.embed.create( engine_name=engine_name, audio_file=audio_file, ) # verbose 속성이 True인 경우 정보 출력 if verbose: print("오디오 임베딩이 생성되었습니다") print(f" 엔진: {audio_embedding.engine_name}") if audio_embedding.audio_embedding.segments: print("세그먼트 목록:") for i, segment in enumerate(audio_embedding.audio_embedding.segments, 1): print(f" 세그먼트 {i}:") print(f" 시작 오프셋 (초): {segment.start_offset_sec}") if segment.values: print(f" 값: {segment.values[:5]}... (일부 생략)") return audio_embedding
다음 코드 스니펫은 이미지 파일이 주어졌을 때 이미지 임베딩을 생성하는 방법을 보여줍니다:
def create_image_embedding( twelvelabs_client: TwelveLabs, image_file: Union[str, Path], engine_name: str = "Marengo-retrieval-2.6", verbose: bool = True ) -> dict: """ Twelve Labs Embed API를 사용해 이미지 임베딩을 생성합니다. 예시: twelvelabs_client = TwelveLabs(api_key=TL_API_KEY) image_embedding = create_image_embedding(twelvelabs_client, "path/to/image.jpg") """ # 임베딩 생성 image_embedding = twelvelabs_client.embed.create( engine_name=engine_name, image_file=image_file ) # verbose 속성이 True인 경우 정보 출력 if verbose: print("이미지 임베딩이 생성되었습니다") print(f" 엔진: {image_embedding.engine_name}") print(f" 임베딩: {image_embedding.image_embedding.values[:5]}... (일부 생략)") return image_embedding
Twelve Labs Embed API 바로 시작하기
Twelve Labs Embeddings는 현재 API와 Playground를 통해 사용 가능합니다. Embed API를 빠르게 시작하는 데 도움이 될 몇 가지 리소스를 안내해 드립니다:
작성자
리드
Lucas Lee, Yeonhoo Park, Manish Maheshwari
핵심 연구, 제품, 디자인, 엔지니어링 및 GTM
Jeff Kim, Jenna Kang, Sean Barclay, Sunny Nguyen, Meryl Hu, Ryan Won, Esther Kim, Wade Jeong, SJ Kim, Henry Choi, Maninder Saini, James Le, Aiden Lee, Soyoung Lee, Jae Lee





