
튜토리얼
TwelveLabs API로 AI 기반 강의 분석 플랫폼 구축하기

네이선 체
이 튜토리얼은 AWS Bedrock에서 Twelve Labs의 Pegasus 및 Marengo 모델을 활용하여 교육용 비디오로부터 학습 가이드, 연습 문제, 챕터별 타임라인 및 스크립트를 자동으로 생성하는 '강의 분석 플랫폼(Lecture Analysis Platform)' 구축 과정을 단계별로 안내합니다. 또한 결과물의 품질, 추론 시간, 비용 측면에서 Twelve Labs와 Google Gemini 및 AWS Nova를 직접적으로 비교한 벤치마크 분석도 함께 제공합니다.
이 튜토리얼은 AWS Bedrock에서 Twelve Labs의 Pegasus 및 Marengo 모델을 활용하여 교육용 비디오로부터 학습 가이드, 연습 문제, 챕터별 타임라인 및 스크립트를 자동으로 생성하는 '강의 분석 플랫폼(Lecture Analysis Platform)' 구축 과정을 단계별로 안내합니다. 또한 결과물의 품질, 추론 시간, 비용 측면에서 Twelve Labs와 Google Gemini 및 AWS Nova를 직접적으로 비교한 벤치마크 분석도 함께 제공합니다.

목차
No headings found on page
뉴스레터 구독하기
뉴스레터 구독하기
영상 이해 분야의 최신 기술 업데이트, 튜토리얼 및 인사이트를 받아보세요.
영상 이해 분야의 최신 기술 업데이트, 튜토리얼 및 인사이트를 받아보세요.
AI로 영상을 검색하고, 분석하고, 탐색하세요.
2025. 9. 12.
15분
링크 복사하기
참고: 본 문서는 소프트웨어의 단계별 튜토리얼과 함께 모델 간의 벤치마킹 및 비용 분석을 심도 있게 다룹니다. 따라서 매우 포괄적인 내용을 담고 있으므로, 독자 분의 역할에 따라 특정 섹션을 건너뛰고 읽으시는 것을 권장합니다.
소프트웨어 엔지니어 — 애플리케이션을 처음부터 배우고 구축하고자 하는 분들.
처음부터 끝까지 진행하되, "심층 분석(Deep Dives)" 섹션은 가볍게 훑어보셔도 좋습니다.
소프트웨어 아키텍트 — TwelveLabs와 AWS의 통합 방법을 배우고자 하는 분들.
기술적인 코드 세부 사항은 가볍게 넘어가고, 기술 아키텍처 다이어그램을 집중적으로 분석하며 읽어보세요.
의사 결정자 — TwelveLabs가 귀사의 비즈니스에 적합한 솔루션인지 고민 중이신 분들.
벤치마킹 및 비용 분석을 다루는 "심층 분석(Deep Dive)" 주제로 바로 이동하세요.
우리가 무엇을 구축했는지 전반적인 개요를 파악할 수 있도록, 모든 역할의 독자 분들께서 애플리케이션 데모 영상은 최소한 시청해 보시는 것을 적극 추천합니다.
소개
만약 교사들이 정적인 동영상 강의를 즉시 대화형 학습 가이드, 챕터, 연습 문제로 변환하여 교실 밖에서도 학생들의 학습을 풍부하게 만들 수 있다면 어떨까요?✨

본 튜토리얼에서는 TwelveLabs와 AWS를 사용하여 강의 콘텐츠 분석기(Lecture Content Analyzer) 플랫폼을 구축해 보겠습니다. 이는 교사가 정적인 동영상 콘텐츠를 단 한 번의 간단한 업로드만으로 다음과 같이 변환할 수 있도록 지원하는 엔드 투 엔드 시스템입니다.
맞춤형 연습 문제
사용자 정의 학습 가이드
타임스탬프가 포함된 비디오 챕터
접근성을 위한 자막 스크립트
학습 속도 권장 사항
상세 노트 및 요약
그리고 훨씬 더 많은 기능들...
그 핵심에는 정밀한 초 단위 비디오 이해 및 포괄적인 멀티모달 임베딩을 제공하는 TwelveLabs Pegasus 및 Marengo 모델이 있어, 비디오에 완벽히 부합하는 고도로 관련성 높은 콘텐츠와 추천 임베딩을 생성할 수 있습니다.
이 멀티모달 이해 기술은 AWS와의 긴밀한 연동을 바탕으로 작동합니다. 최근 발표된 AWS Bedrock과 TwelveLabs의 파트너십을 통해 AWS 환경에 TwelveLabs를 손쉽게 통합하고, 100개 이상의 AWS 서비스를 활용하여 소프트웨어를 강력하게 지원할 수 있습니다.
마지막으로, TwelveLabs Pegasus를 Google Gemini 및 AWS Nova와 시각적으로 비교해 볼 수 있습니다. 각 모델의 모델 벤치마크, 시각적 비교, 그리고 상세한 비용 분석을 깊이 있게 다룰 예정입니다.
애플리케이션 데모
실제 작동 모습을 확인하고 싶으시다면, 아래의 데모 동영상을 시청하시거나 튜토리얼을 시작하기 전에 이 Github 리포지토리의 코드를 함께 따라가 보시기 바랍니다!

라이브 애플리케이션 링크: https://twelve-labs-education-poc-s7sz.vercel.app/
학습 목표
이 튜토리얼을 통해 다음을 배울 수 있습니다:
TwelveLabs가 AWS 서비스와 어떻게 원활하게 통합되는지 이해합니다.
DynamoDB 및 S3를 포함한 자체 AWS 서비스를 구성합니다.
출력 추론 품질, 인덱싱 시간, 추론 시간과 같은 핵심 개념을 파악합니다.
시장 에 출시된 다양한 멀티모달 모델 간의 상세한 비용 분석을 수행합니다.
멀티모달 모델이 프론트엔드 인터페이스와 높은 성능으로 작동할 수 있도록 지원하는 기술 아키텍처 다이어그램과 설계 결정을 분석합니다.
사전 요구 사항
Python 3.8+: Python 다운로드 | Python.org
Node.JS 3.8+: Node.js — Node.js® 다운로드
Terraform (선택 사항): Terraform 설치 | Terraform | HashiCorp Developer
TwelveLabs API 키: 인증 | TwelveLabs
TwelveLabs 인덱스: Python SDK | TwelveLabs
AWS 액세스 키: 자격 증명 - Boto3 1.40.12 문서
Google Gemini API 키: Gemini API 키 사용 | 개발자용 Google AI
Python 및 JavaScript에 대한 중급 수준의 이해.
로컬 환경 설정
1 - 리포지토리를 로컬 환경으로 가져옵니다(pull).
>> git2 - 로컬 리포지토리에서 Terraform 스크립트를 실행하여 필요한 AWS 리소스를 프로비저닝합니다.
* AWS 통합을 이해하고 각 서비스를 수동으로 직접 구성하려는 분들은 README의 수동 설정 지침을 따르실 수 있습니다: GitHub Repo README.
3 - 프론트엔드 및 백엔드 폴더에 환경 변수를 추가합니다.
.env.local (/frontend/)
TWELVE_LABS_API_KEY=... NEXT_PUBLIC_TWELVE_LABS_INDEX_ID=... AWS_ACCESS_KEY_ID=... AWS_SECRET_ACCESS_KEY=... AWS_S3_BUCKET_NAME=twelvelabs-lecture-content-poc AWS_REGION=us-east-1 GEMINI_API_KEY=... BLOB_READ_WRITE_TOKEN=... NEXT_PUBLIC_API_URL
.env (/api/)
TWELVE_LABS_API_KEY=... TWELVE_LABS_INDEX_ID=... AWS_ACCESS_KEY=... AWS_SECRET_ACCESS_KEY=... AWS_ACCOUNT_ID=... DYNAMODB_CONTENT_TABLE_NAME=twelvelabs-education-video-poc DYNAMODB_CONTENT_USER_NAME=twelvelabs-education-user-poc S3_BUCKET_NAME=twelvelabs-lecture-content-poc GOOGLE_API_KEY
4 - 가상 환경을 생성하고 Python 패키지를 설치합니다.
GitHub 리포지토리로 이동하여 다음 명령을 실행합니다:
>> python -m그 다음 가상 환경을 활성화하고 아래 명령을 실행하여 필요한 모든 Python 의존성 패키지를 설치합니다:
>> .\venv\Scripts\activate
>> pip install -r
5 - 노드 패키지 매니저(NPM)를 사용해 프론트엔드 샘플 애플리케이션을 시작합니다.
GitHub 리포지토리 내부의 프론트엔드 폴더로 콘솔에서 이동한 뒤 다음을 입력합니다:
>> npm그 후 localhost:3000으로 접속하여 사이트에 연결합니다.
* NPM이 설치되어 있는지 확인하세요: Node.js 및 npm 다운로드 및 설치 | npm Docs
6 - GitHub 리포지토리의 API 폴더에서 main.py를 실행하여 백엔드를 시작합니다.
GitHub 리포지토리 내부의 API 폴더로 콘솔에서 이동한 후 다음을 입력합니다:
이 프로세스는 귀사의 AWS 콘솔 및 AI 모델과 연결될 REST API를 호스팅하므로 계속 실행 상태로 두어야 합니다!
1단계: 강의 인덱싱 (Lecture Indexing)
좋습니다! 이제 로컬 환경과 AWS 인프라 구축이 완료되었으니 본격적으로 시작해 보겠습니다! 먼저 비디오를 다양한 클라우드 제공업체에 인덱싱하는 것부터 시작하겠습니다. 이 프로세스의 기술 아키텍처는 다음과 같습니다.

비디오가 웹사이트에 전송되면, 즉시 브라우저 메모리 내에 존재하는 비디오 블롭(Blob)으로 변환된 다음 바이트 단위로 변환될 수 있습니다. 이 바이트 데이터는 모든 컴퓨터가 해석할 수 있는 공통 언어로 작동하며, MP4 파일로 변환되어 각각 Google Cloud Provider 및 AWS S3 버킷에 API 요청을 통해 전송됩니다.
/frontend/…/api/upload-gemini/route.js (23 - 58행)
// Convert file to buffer const bytes = await file.arrayBuffer(); const buffer = Buffer.from(bytes); // Create a temporary file path const tempFileName = `${userName}-${Date.now()}-${file.name}`; const tempFilePath = join(tmpdir(), tempFileName); // Write the buffer to a temporary file await writeFile(tempFilePath, buffer); try { // Upload file to GCP using Google Client SDK. const myfile = await googleClient.files.upload({ file: tempFilePath, config: { mimeType: file.type || 'video/mp4' }, }); return NextResponse.json({ success: true, geminiFileId: myfile.uri, fileName: file.name }); } finally { await writeFile(tempFilePath, ''); }
💡 설계의 주안점: 왜 TwelveLabs에는 직접 업로드하지 않을까요? 우리의 핵심 멀티모달 AI 모델이 아닌가요?
이는 최근 이루어진 AWS 파트너십 덕분에 TwelveLabs를 AWS Bedrock에 직접 통합할 수 있게 되었기 때문입니다. 즉:
S3에 통합된 비디오 스토리지: TwelveLabs 모델이 비디오를 TwelveLabs 플랫폼에 직접 업로드하는 대신, S3 버킷에 있는 비디오를 직접 탐색하고 분석할 수 있습니다.
데이터 규정 준수 및 보안: 비디오 데이터가 AWS 인프라 환경 내에 머무르면서도 AWS 클라우드 보안 표준을 충족하므로, TwelveLabs를 사용하기 위해 별도의 추가적인 보안 규정 점검 절차를 거칠 필요가 없습니다.
개발자 친화적인 통합: TwelveLabs용 SDK와 AWS를 위한 Boto3를 따로 내려받을 필요 없이, 이제 Boto3 하나로 모든 처리가 가능합니다! 이는 개발 프로세스를 탄탄하게 단순화하고 실제 프로덕션 환경의 코드베이스를 매우 깔끔하게 유지해 줍니다.
최근 파트너십에 대한 자세한 정보는 여기서 확인하세요: TwelveLabs x AWS Amazon Bedrock - Twelve Labs!
비디오를 업로드해야 하는 클라우드 제공업체의 수를 줄임으로써, 인덱싱 및 비디오 업로드 시간이 비약적으로 단축되어 사용자에게 끊김 없는 원활한 경험을 선사합니다! 아래 코드에서는 Promise.all을 활용하여 Google Cloud Provider와 AWS S3에 동시에 병렬적으로 업로드를 수행합니다.
/frontend/…/dashboard/courses/page.js
// Upload asynchronously to all cloud providers. const [s3UploadResult, geminiUploadResult] = await Promise.all([ uploadToS3(), uploadToGemini(), ]);
💡 설계의 주안점: AWS S3 버킷과 같은 단일 비디오 데이터베이스 대신 구글에도 업로드한 이유는 무엇인가요? 비용을 절감하는 편이 좋지 않았을까요?
그 이유는 Google Gemini 같은 제공업체는 20MB를 초과하는 파일의 경우 자사 클라우드인 Google Cloud Provider에 직접 업로드할 것을 요구하기 때문입니다. 이 과정에서 추가 비용이 발생합니다. AWS 파트너십 이전에는 비디오를 TwelveLabs 인덱스에 별도로 저장했어야 했으나, 이제 새로운 파트너십 덕분에 모든 비디오 데이터를 하나의 단일 AWS 인프라로 온전히 중앙화하여 관리할 수 있게 되었습니다!
참고: TwelveLabs 네이티브 플랫폼 역시 임베딩 시각화와 같은 매우 강력한 편의 기능을 함께 제공하고 있습니다.


마지막으로, 향후 손쉬운 데이터 조회를 위해 비디오 관련 메타데이터를 AWS DynamoDB 테이블에 저장해 둡니다.
async def upload_video(video_params: VideoRequest = Depends(get_video_id_from_request)): try: db_handler = DBHandler() db_handler.upload_video_ids(twelve_labs_video_id=video_params.twelve_labs_video_id, s3_key=video_params.s3_key, gemini_file_id=video_params.gemini_file_id) except Exception as e: return DefaultResponse(status='error', message=str(e), status_code=500) return DefaultResponse(status='success', message='Video uploaded successfully', status_code=200)
더 알아보고 싶으시다면 API 폴더의 헬퍼 모듈을 편하게 살펴보셔도 좋습니다. 다만 본 튜토리얼은 다루는 코드양이 많으므로 필수 사항은 아닙니다. 아래 코드는 자격 증명을 DYNAMODB_CONTENT_TABLE_NAME 테이블에 업로드하는 데 사용되는 upload_video_ids() 메서드입니다.
def upload_video_ids(self, twelve_labs_video_id: str, s3_key: str, gemini_file_id: str): table_name = os.getenv('DYNAMODB_CONTENT_TABLE_NAME') if not table_name: logger.error("DYNAMODB_TABLE_NAME environment variable not set") raise Exception("DYNAMODB_TABLE_NAME environment variable not set") table = self.dynamodb.Table(table_name) logger.info("DynamoDB table reference obtained") item = { 'video_id': twelve_labs_video_id, 's3_key': s3_key, 'gemini_file_id': gemini_file_id, 'created_at': boto3.dynamodb.types.Decimal(str(int(time.time()))), } logger.info(f"Preparing to upload item: {item}") response = table.put_item(Item=item) logger.info(f"DynamoDB put_item response: {response}") return response
이제 이 비디오들이 각 제공업체에 정상적으로 업로드되었으므로, 본격적인 AI 추론 단계로 넘어가 학생을 위한 맞춤형 콘텐츠를 생성하고 교육자를 위한 개선 분석 통찰력을 확보할 준비가 끝났습니다!
2단계: 강의 콘텐츠 AI 추론 (Lecture Content AI Inference)
이제 가장 흥미로운 파트인 AI 추론 단계입니다! TwelveLabs Pegasus API 호출 코드 스니펫을 보기 전에 기술 아키텍처를 먼저 명확히 이해해야 합니다. 올바른 API 아키텍처를 선택하는 것만으로도, 추론 시간을 5분 이상에서 30초 미만으로 단축하는 엄청난 차이를 만들어낼 수 있기 때문입니다.

위 아키텍처에서 볼 수 있듯이, 당사는 비디오 강의 분석의 각 섹션별 콘텐츠를 생성하기 위해 ASGI(Asynchronous Server Gateway Interface) FastAPI 엔드포인트를 활용합니다. 작은 차이 같지만, 사용자 경험에는 결정적인 변화를 불러오게 됩니다.
💡 설계의 주안점: ASGI란 무엇이며 백엔드 API 서비스에서 이것이 왜 그렇게 중요할까요?
WSGI(Web Server Gateway Interface)의 차세대 진화 모델인 ASGI는 비동기 호출을 처리하도록 설계된 서버 아키텍처로, 여러 연결과 이벤트를 동시에 무리 없이 처리할 수 있습니다. 특정 백엔드 작업이 '로드'되는 동안 다른 대안적인 작업을 수행할 수 있도록 전환해 주는 방식을 취합니다.
파스타를 조리하는 요리사를 상상해 보세요! 면을 삶는 동안 요리사는 단순히 가만히 서서 면이 다 익을 때까지 기다린 후에 미트볼을 만들기 시작하지 않습니다. 손님이 붐비는 바쁜 레스토랑에서는 빠르게 처리해야 하므로 면이 익는 동안 미트볼을 함께 조리하며 멀티태스킹을 진행해야 합니다.
이 기법이 당사의 API 호출 프로세스에도 동일하게 이식되었습니다. 가령, Google Gemini가 비디오 내용 요약을 처리하고 수렴하는 동안, 당사는 동시에 TwelveLabs 및 AWS Nova에게도 요약 처리를 요청하여 시작하고 먼저 완료되는 쪽의 결과를 빠르게 받아 보게 됩니다.
이를 통해 각 제공업체의 API 호출이 순차적으로 하나씩 완료될 때까지 기다릴 필요 없이 다음과 같은 파생 데이터들을 한 번에 병렬적으로 얻을 수 있으며, 전체 추론 시간은 기존 약 5분에서 단 30초 내외로 급격히 단축됩니다.
요약 정보(Gist: 제목, 추천 태그, 주제)
타임라인 챕터
학습 속도 권장 주안점
핵심 요점
퀴즈 및 질문
학생 참여 유도 지표
최종 요약
대화 스크립트
이 API 엔드포인트들을 체계적으로 구축하기 위해, 아래 코드와 같이 개별 모델 제공업체를 위한 팩토리 클래스를 정의하여 관리합니다.
/api/providers/llm.py (1 - 31행)
from abc import ABC, abstractmethod class LLMProvider(ABC): @abstractmethod def __init__(self, *args, **kwargs): pass @abstractmethod def generate_chapters(self): pass @abstractmethod def generate_key_takeaways(self): pass @abstractmethod def generate_pacing_recommendations(self): pass @abstractmethod def generate_quiz_questions(self): pass @abstractmethod def generate_engagement(self): pass @abstractmethod def generate_gist(self): pass
해당 추상 클래스를 기반으로 파일 구조가 어떻게 체계적으로 관리되고 작동하는지 아래 이미지에서 손쉽게 파악해 볼 수 있습니다.

이를 통해 FastAPI 서버의 API 엔드포인트는 상황에 맞는 클래스와 메서드를 극도로 간단하고 안전하게 호출할 수 있게 됩니다.
개별 데이터 포인트를 각각 독립적인 REST API 엔드포인트로 분리해 처리함으로써, AI 모델이 출력을 처리해 반환하기까지 소요되는 절대적 지표인 '추론 속도'를 정량적으로 개별 모니터링할 수 있게 됩니다. 이 구조화된 파이썬 클래스 설계를 보시면, 향후 새로운 LLM 모델을 확장해 나가거나 필수 메서드가 빠짐없이 구현되었는지 유지 관리 측면에서 얼마나 큰 이점을 주는지 한눈에 직관적으로 이해하실 수 있습니다.
심층 분석: 모델 벤치마킹 및 비용 정밀 분석
실제 벤치마킹 분석 지표와 결과를 본격적으로 공유하기에 앞서, 우리가 어떠한 객관적인 기준에 따라 각 기성 모델들을 벤치마킹했는지 먼저 명확히 짚고 넘어가겠습니다.
TopP, topK, temperature 및 기타 사용자 정의 모델 추론 설정값들은 온전히 기본(Default)값으로 고정하여 진행했습니다.
기본값은 일반적으로 해당 모델이 범용적이고 일반적인 유스케이스에서 '가장 최적의 연산 효율과 퀄리티'를 출력하도록 튜닝된 지점입니다.
설정값에 대한 자세한 개념은 다음 가이드를 참고하세요: Temperature, Top-P, Top-K: 포괄적 가이드 | MoonlightDevs - 기술 블로그 (제공: MoonlightDevs)
모든 비교 대상 모델에는 각각 완벽히 일치하는 등가 프롬프트를 입력하여 콘텐츠 생성을 요했습니다.
제출된 프롬프트는 /api/helpers/prompts.py 경로의 프롬프트 폴더에서 상세히 보실 수 있습니다.
구조화된 출력 형식을 완벽하게 지원하는 모델의 경우, Pydantic을 활용해 구문 처리를 지원했습니다.
Pydantic은 프로그래밍에서 JSON 스키마 규격을 신뢰성 있게 보장해 주는 중요 개발자 도구입니다. 이 기능을 안정적으로 내장해 지원하지 않는 모델의 경우 복잡한 정형 요소를 파싱하기가 매우 까다롭기 때문에 제공 업체의 설계 결함 요소로도 봅니다.
Pydantic의 작동 방식에 대해 더 자세히 조율하고 싶으시다면 다음 가이드를 참고하세요: Pydantic 가이드 - Pydantic
모든 모델에는 다음 하나의 공유 강의 비디오 링크로 동일 조건 추론을 지시했습니다: https://www.youtube.com/watch?v=5LeZflr8Zfs.

자, 그럼 본격적으로 모델별 결과물 추론의 품질 지표 분석 결과를 함께 확인해 보시죠! 이 지표는 출력물의 전반적인 구조 정합성 및 정확성을 판단하는 데 매우 영향력이 큰 부분입니다.

상기 평가 지표에서 나타나듯, 모델 성향에 따라 결과물에서 극명한 특징과 차이가 확인되었습니다. 당연히 정성적인 평가는 도입 기업의 프로덕션 핵심 요건에 맞춰 수렴되겠으나, 해당 유튜브 비디오 결과물을 기반으로 요약해 본 요점은 다음과 같습니다:
Google Gemini: 전반적인 정합 지표는 훌륭했으나 세밀한 정합 밀도는 다소 부족했습니다. 모델이 비디오 안의 모든 지엽적 요소까지 나열해 버리는 현상을 막으려면 다소 세밀한 파인 튜닝 및 인텐트 프롬프트 엔지니어링이 추가적으로 요구됩니다. 필요 이상의 불필요한 추천 태그 목록을 과도하게 나열함으로써, 태그 매칭에 고도로 의존해야 하는 정교한 추천 파이프라인에서는 자칫 치명적 결함으로 작동할 리스크가 있습니다.
AWS Nova: 정확성과 결과 정확도는 발군이었으나 구조화된 JSON 출력을 온전히 폼팩팅하는 측면에서 다소 아쉬움이 남았습니다. 이 백서 작성 시점을 기준으로 AWS Nova는 Pydantic을 활용한 명시적인 스키마 구조 출력을 온전히 보장하지 못하여, 온도 파라미터를 조절하거나 강제로 출력을 바인딩하는 등 부가적인 예외 우회 트릭 처리가 필요했습니다.
더 알아보기: 구조화된 출력 규격 필요 가이드 - Amazon Nova
TwelveLabs: 필요한 최적의 정보 정확성 및 출력 밀도 사이의 완벽한 밸런스를 보여주었으며 Pydantic 구조화된 데이터 역시 결함 없이 고도로 정밀하게 가공해 응답했습니다. 요약 항목의 밀도가 다소 축약적으로 정제된 선이 있었으나, 이는 프롬프트 상으로 "최소 1개 이상의 필수 세부 요소를 포함할 것" 수준으로 요청했기에 조율 프롬프트 튜닝 영역에서 능히 개량될 수 있는 수준입니다.
이어 각 모델별로 실측 계산된 실제 응답 속도(Inference Time) 지표 분석을 다뤄 보겠습니다.

위 분석 그래프에서 확인되듯, TwelveLabs와 Google 모델은 거의 흡사하게 우수한 전체 응답 생성 지표를 기록했습니다. 단, 구조적인 세부 양상에서 주목할 만한 유의미한 차이들이 확인됩니다.
TwelveLabs 데이터 캐싱(Caching) 레이어: TwelveLabs의 경우 대화 자막 대본이나 전체 핵심 기스트 데이터 로드가 가히 전광석화처럼 즉시 응답되는 현상을 관찰할 수 있습니다! 비디오 제목처럼 언제나 주기적으로 호출되고 사용성이 보장된 범용 지표들은 플랫폼 내부에서 고성능 캐시 데이터를 보관해 주기 때문에 밀리초 수준의 초고속 반환을 가능하게 만듭니다.
장문형(Long-Form) vs 단문형(Short-Form) 텍스트 강세 차이:
Gemini 모델은 매우 긴 문장의 장문형 원본 텍스트를 구성하는 영역에서 연산 효율상의 소폭 우위가 검증되었습니다. 타임스탬프 기반 챕터 작성 영역이나 밀도 높은 타임라인 파이프라인의 연산 가공 시 지표가 빠르고 유려하게 수렴되는 것을 확인할 수 있습니다.
반면, TwelveLabs는 핵심 요점 불릿 포인트 도출이나 문맥 맥락을 짧고 임프레시브하게 한눈에 들어오는 서머리로 정제 가공할 때 응답 효율이 훨씬 속도감 있게 작용합니다.
자, 드디어 대망의 정량 평가인 총 소요 비용 시뮬레이션을 진행해 보겠습니다. 지표를 보다 직관적이고 공평하게 도출하기 위해, 1시간짜리 임의의 롱폼 비디오 학습 가공 처리를 전제로 깔고 각 사가 공식 문서에서 공표하는 인풋/아웃풋 단가를 일일이 적용하여 정밀 분석을 실시했습니다.
* 개별 추론 쿼리 API 호출 횟수: 총 8회 (데이터 인포 카테고리당 각 1회씩 병렬 호출)
TwelveLabs: $2.79
단가 산정 기준: TwelveLabs | 공식 가격 상세 계산 시스템
업로드 비디오 타임 총합 = 1시간
기타 부가 임베딩 API 비활성 처리 (타 모델 대조 효율 정밀화를 위해 벡터 임베딩 수수료 제외)
비디오 전후 분석 API 사용량 = 8회 (가공 카테고리 총합 8회 요청 대비)
검색 엔드포인트 호출 횟수 = 0회
Google Gemini: $10.62 (별도 수반될 수 있는 GCP 인프라 입출구 부가 네트워크 비용 제외 수치)
Google Gemini는 연산 토큰 수 비례 정량 과금 제도를 택하고 있으며, 전체 비디오 길이 단위 대비 인풋 슬라이스 토큰 점유 가중치에 따라 최종 계산 수수료가 결정됩니다.
기술 기준서 참고: Gemini API 상세 설명 기반 토큰수 세부 계측 방법 | Google AI 개발자 허브
비디오 슬라이스 초당 환산 점유 토큰 수: 1초당 약 295 토큰.
밀리언(100만) 토큰당 과금 단가: $1.25
1시간 영상 환산 총 토큰 연산량: 3,600초 * 295 토큰 / 초 = 1,062,000 토큰
최종 시뮬레이션 산출 공식: (1,062,000 토큰 / 1,000,000) * $1.25 * 8회 호출 = $10.62
AWS Nova: $0.22 (기타 수반될 수 있는 연계 결합된 아키텍처 인프라 연산 비용은 제외한 고유 값)
토큰 기준서 참고: Amazon Nova 기반 비디오 데이터 처리량 분석 기법
제조사 가이드 기준 1시간 무손실 비디오 데이터의 기준 예측 고정 토큰 환산값: 276,480 토큰.
공식 가격 문서 참고: AWS Nova 공식 리테일 과금 테이블
AWS Nova Pro 모델 등급 인풋 토큰 단가 = 입력 1,000 토큰 단위당 $0.0008
최종 시뮬레이션 산출 공식: (276,480 토큰 / 1,000) * $0.0008 = $0.22
포괄적인 정성 및 정량 분석 수치를 다각도로 매핑하여, 독자 여러분이 현업에서 직관적으로 한눈에 분석할 수 있도록 아래 상세 요약 매트릭스 표로 도출해 보았습니다.
평가 카테고리 | TwelveLabs | Google Gemini | AWS Nova |
출력 추론 품질 | ✅ 균형 및 지능화된 구조: 정보 정확성과 정합 밀도 간의 가장 조화로운 균형점을 제시합니다. | 🎯 정확하나 높은 나열 특성: 인텐트 정확도는 매우 우수하나, 정제되지 않은 유관 정보와 무수한 서브 태그 요소까지 과도하게 열거하여 불필요한 노이즈가 높은 편입니다. | ⚙️ 높은 정확도 대비 텍스트 미지정: 의미론적 완성도는 뛰어나지만 마크다운이나 구조화된 출력을 일관적으로 제어하기에 결함 확률이 높습니다. |
구조화된 출력 지원 여부 (Structured Output) | ✅ 지원 (안정성 탁월): 프레임워크 자체에서 네이티브하게 온전히 정형 JSON 데이터의 강제 출력을 높은 신뢰도로 구사합니다. | ✅ 지원 (안정성 우수): 안정적인 출력 구조를 명시적으로 문제없이 규격화하여 제공합니다. | ❌ 미지원 (출처 정제 불안정): 정형 데이터 규정을 일관성 있게 신뢰하기 어려우며, 정상적인 JSON 가공 처리를 보완하기 위한 전처리가 별도로 수반되어야 합니다. |
인프라 응답 속도 | 신속함 (특히 캐시된 영역): 공통 및 단문형 결과 생성 영역에서 고밀도 캐시 덕분에 극도의 지연 시간 단축 효과를 가져옵니다. | 우수함 (장문 텍스트): 장문의 연속적인 스크립트 작성 시 타의 추종을 불허하는 균형 잡힌 연산 도프 속도를 상회합니다. | 보통: 평균적으로 안정적인 처리 추이를 가지며 경쟁 모델 대비 구간별로 약 10~20초 수준의 딜레이가 소폭 가산됩니다. |
자체 캐싱 아키텍처 탑재 여부 | ✅ 지원: 비디오 데이터가 초기 로드될 때 핵심 내용, 요약 및 스크립트 정보들을 사전에 지능적으로 압축 보관해 두어 연속 인입을 처리합니다. | ❌ 미지원: 매회 쿼리 수행 시점마다 지속적으로 전체 비디오 원본 영역에 걸쳐 무거운 연산을 전면 재처리해야 합니다. | ❌ 미지원: 매회 쿼리 수행 시점마다 지속적으로 전체 비디오 원본 영역에 걸쳐 무거운 연산을 전면 재처리해야 합니다. |
실제 환산 단가 | 💸💸 $2.79 | 💸💸💸 $10.62 | 💵 $0.22 |
과금 설계 체계 | 시간 정액 + 실 호출 병행 설계: 업로드된 절대 비디오 재생 지수(시간 단위)로 고정 기준 단가를 먼저 깎은 뒤, 전후 분석 수행당 소액을 산입하는 형태입니다. | 종량 토큰제: 동일 비디오에 요청할 때마다 비디오에 축적되는 엄청난 수량의 인입 토큰 세그먼트를 쿼리 수만큼 계속 중복 곱하여 청구하는 과금 체계입니다. | 종량 토큰제: 동일 비디오에 요청할 때마다 비디오에 축적되는 엄청난 수량의 인입 토큰 세그먼트를 쿼리 수만큼 계속 중복 곱하여 청구하는 과금 체계입니다. |
기타 간접 가산 요소 | (올인원 플랫폼 내재 비용 포함 처리) | 대규모 GCP 버킷 리소스 및 부대 운영 비용 수반 | 수반되는 AWS 기본 리소스 적재 수수료 |
물론 기성 모델 제공사들은 향후에도 극적인 단가 인하나 추론 압축 효율 고도화를 달성하겠지만, 이 플랫폼을 구축해 보면서 독자 고유의 비디오 데이터를 마운팅하여 가공 정합성이 과연 어떠한 양상으로 비디오 인텔리전스 설계에 부합할 것인지 체계적인 통찰을 사전에 정량 정성적으로 충분히 체득해 볼 수 있습니다.
3단계: 학습자 피드백 루프 + 교육 대시보드 통찰력
이제 피날레를 장식할 마지막 장으로서, 학습을 마친 학생 측의 활성 피드백 데이터가 백엔드 채널을 돌며 어떻게 교육자에게 최적의 학생 관리 분석 지표로 전달되는지, 또한 TwelveLabs가 어째서 수많은 클라우드 설계 구성 중에서도 AWS 도구 생태계와 결합했을 때 극상의 프로덕션 탄력성과 엔지니어링 편의를 선사하는지 종합적으로 검토하겠습니다.

위 아키텍처 스크린샷과 같이 교실의 학습자들은 TwelveLabs를 통해 풍성하게 잉태된 강의 요약문, 챕터 세그먼트, 지능형 자습 퀴즈 데이터 세트를 유려하고 고해상도 환경 하에 소비하게 됩니다. 그간 일선 고등 교원이 수고스럽게 오프라인에서 수백 분씩 수작업하여 생산해 내야만 했던 개별 맞춤 부교재 제작 리소스를 TwelveLabs Pegasus 기반 인텔리전스 텍스트 제너레이션 파워와 강력하게 결속된 AWS 전도 인프라의 시너지로 단 수 초 만에 마법같이 처리해 냅니다.
학생들이 해당 강의 비디오 교육 과정을 수강하고 생성형 맞춤 학습 퀴즈를 모두 수행하면, 다음과 같이 심층 다차원 리포트를 인계받을 수 있습니다:
챕터 레벨 퀴즈 성취 인덱스 — 개별 학습 세그먼트 구간 내 문제 해결 오답률 분포 및 세부 비매칭 취약 과소비 구간의 원포인트 트래킹 리포트입니다.
맞춤형 후속 학습 피드백 — 학생 개개인의 취약 노출 양식에 부합하는 개인화된 정밀 세정 로드맵입니다.
외부 S3 비디오 인덱스 추천 고도화 — TwelveLabs Marengo만의 강력한 콘텍스트 비주얼 인지 능력을 적극 활용하여 S3 영상 뱅크에서 연관도가 극상에 달하는 맞춤형 심화 보조 유튜브 시청 채널을 추천해 줍니다.
종합 성취 점수 매트릭스 — 전체 단원 교과목 테마별 최종 분석 학업 달성도 점수입니다.
이를 염두에 두고 교육 설계 아키텍처 뒤단에서 어떠한 방식으로 데이터를 고밀도로 가공하는지, 그리고 왜 단일화된 AWS 결속 레이아웃 통합이 고성능 프로덕션 엔드 투 엔드 상용 앱 상에서 완벽한 차별점을 부여하는지 소스 라인을 직접 확인해 보겠습니다.

작성된 기술 아키텍처 다이어그램에서 확인할 수 있듯, 당사는 고정 지능 연산을 위해 AWS Bedrock 고유 관리형 서비스인 Claude 3.5 Sonnet 연산 환경을 심리스하게 이식했습니다. 불안정하게 매번 서드파티 신종 프레임워크 패키지나 외부 파이프라인 데이터 입출을 복잡하게 배선할 필요 없이, AWS 백본 레벨 내에서 DynamoDB 고유 원장에 안전하게 보안 마스킹된 핵심 데이터를 안전하게 바인딩함으로써, 완벽히 검증되고 통제된 형태로 초고속 추론 트랜잭션을 운용할 수 있습니다.
나아가, 학생의 맞춤형 학습을 유도하기 위해 고차원 벡터 임베딩 기술을 접목한 최적의 추천 비디오 매칭 라인을 인출해 보았습니다. TwelveLabs Marengo 모델의 핵심 역량인 다차원 시각-문맥 데이터 고도 통합 매핑 기술을 이용해 탄생한 벡터 임베딩 공간 지표 상에서 유클리드 임베딩 거리를 순회하는 고효율 KNN(K-nearest Neighbor) 계산 로직을 수행합니다.
/api/helpers/reasoning.py (262 - 289행)
def fetch_related_videos(self, video_id: str): # Fetch original video from S3 Bucket. presigned_urls = DBHandler().fetch_s3_presigned_urls() # Fetch embedding stored in Marengo Model video_object = self.twelvelabs_client.index.video.retrieve(index_id=os.getenv('TWELVE_LABS_INDEX_ID'), id=video_id, embedding_option=['visual-text']) video_duration = video_object.system_metadata.duration video_embedding_segments = video_object.embedding.video_embedding.segments combined_embedding = np.array([]) for segment in video_embedding_segments: combined_embedding = np.concatenate([combined_embedding, segment.embeddings_float]) # Generate embeddings of other YouTube videos. other_video_embeddings = {} for video_url in presigned_urls: video_embedding = self.generate_new_video_embeddings(video_url, combined_embedding, video_duration) other_video_embeddings[video_url] = video_embedding # Conduct K-Nearest Neighbor Search with Euclidian Distance. knn_results = self.knn_search(combined_embedding, other_video_embeddings, 5) return knn_results
이렇게 풍부한 아키텍처 특성들이 다른 번잡하고 이질적인 분산형 서드파티가 아닌, AWS라는 안전하고 일원화된 단일 데이터 통합 플랫폼 하에서 신뢰 수준 높게 고속 보장된다는 사실을 명심하십시오. 기업 인프라의 최고 명제인 엔터프라이즈 보안 레이어를 무결하게 확보하면서도 전방위 개발 생산성을 놀랍도록 향상시킬 수 있는 유일무이한 기법입니다.
최종적으로 학생들이 자율 평가와 과제를 응답하고 전송하게 되면, 담당 교육자는 일목요연하고 직관적으로 대시보드 화면상에서 전체 반 구성원들의 핵심 학업 분포 통계와 취약 영역들을 한눈에 확인하며 교육 전략을 보강할 수 있습니다.

이 완벽하게 짜인 교육 피드백 인프라 루프 모델은 결과적으로 학생들에게 풍족한 AI 가공 기반 교육 자원을 실시간 공급함으로써 가파른 성적 교정 효과를 도모하는 동시에, 교육자가 차주 강의 방향을 지능적으로 준비하는 데 필요한 데이터 통찰을 신뢰성 있게 도출해 냅니다.
이처럼 비디오를 그 어떤 플랫폼보다도 높은 수준으로 심도 있게 자율 직관 인지해 내는 독보적인 영상 지능 모델인 TwelveLabs가 선가공 파이프라인을 지능화해 준 덕에, 과거라면 꼬박 수일에서 길게는 수주간 교무 리소스를 소모했어야 할 고부가 교과 과정 설계를 순식간에 보조해 낼 수 있었습니다.
결론
긴 튜토리얼 과정을 끝까지 완주해 주신 여러분, 진심으로 감사드립니다! 당사는 이 실습 가이드를 통해 영상 인공지능 분야의 프론티어 리더인 TwelveLabs 제품군이 에듀테크나 교육 현장에 불러올 수 있는 놀라운 인공지능 패러다임 전환 기법뿐 아니라, 아래와 같은 가치 있는 통합 교육 통찰 리소스를 전해 드리고자 심혈을 기울였습니다:
TwelveLabs와 AWS의 유기적 결속 메커니즘 — TwelveLabs의 독보적인 멀티모달 솔루션이 AWS Bedrock 플랫폼의 기본 핵심 컴포넌트로 안착함에 따라, 개발자 및 엔지니어 입장에서 통합 개발 효율 증대는 물론 아키텍처 중앙화를 통해 얼마나 강력한 보안 거버넌스 이점을 가져가는지 증명해 드렸습니다.
아키텍처 실증 가이드 및 영리한 엔지니어링 의사 결정 — 기업 운영에서 성능 최적화와 인프라 단가 세이브라는 두 마리 토끼를 어떻게 설계적으로 달성해 낼 수 있는지 디테일하게 복기했습니다.
동영상 멀티모달 벤치마킹 — 글로벌 비디오 지능 모델의 응답 속도, 정격 실측 비용 단가 및 출력물의 인지적 전구조 양상을 직접 분석하여 차세대 프로젝트 설계 시 어떤 모델 전략을 채택해야 할지 가이드라인을 수립해 드렸습니다.
본 오픈소스 설계 아키텍처와 관련된 더 깊이 있는 가이드 규격 문서들은 아래 링크를 통해 상시 조회하실 수 있습니다:
TwelveLabs 분석 기술 백서: Google 드라이브 백서
전체 아키텍처 통합 설계 시스템 다이어그램: LucidCharts
상세 통합 API 개발 스펙 매뉴얼: Google 드라이브 API 문서
GitHub 실습 전체 코드베이스 저장소: https://github.com/nathanchess/twelve-labs-education-poc
라이브 시뮬레이터 애플리케이션 플랫폼: https://twelve-labs-education-poc-s7sz.vercel.app/
TwelveLabs의 검증되고 노련한 비디오 세분화 인지 파워를 광범위하고 입증된 AWS의 정밀 분산 클라우드 생태계 위에 이식하십시오. 이를 통해 귀사는 교육, 미디어, 엔터테인먼트를 비롯한 전 산업 전반에 걸쳐 기성의 한계를 뛰어넘는 가장 인텔리전트하고 독보적인 서비스 가치를 민첩하게 시장에 출시할 수 있습니다.
참고: 본 문서는 소프트웨어의 단계별 튜토리얼과 함께 모델 간의 벤치마킹 및 비용 분석을 심도 있게 다룹니다. 따라서 매우 포괄적인 내용을 담고 있으므로, 독자 분의 역할에 따라 특정 섹션을 건너뛰고 읽으시는 것을 권장합니다.
소프트웨어 엔지니어 — 애플리케이션을 처음부터 배우고 구축하고자 하는 분들.
처음부터 끝까지 진행하되, "심층 분석(Deep Dives)" 섹션은 가볍게 훑어보셔도 좋습니다.
소프트웨어 아키텍트 — TwelveLabs와 AWS의 통합 방법을 배우고자 하는 분들.
기술적인 코드 세부 사항은 가볍게 넘어가고, 기술 아키텍처 다이어그램을 집중적으로 분석하며 읽어보세요.
의사 결정자 — TwelveLabs가 귀사의 비즈니스에 적합한 솔루션인지 고민 중이신 분들.
벤치마킹 및 비용 분석을 다루는 "심층 분석(Deep Dive)" 주제로 바로 이동하세요.
우리가 무엇을 구축했는지 전반적인 개요를 파악할 수 있도록, 모든 역할의 독자 분들께서 애플리케이션 데모 영상은 최소한 시청해 보시는 것을 적극 추천합니다.
소개
만약 교사들이 정적인 동영상 강의를 즉시 대화형 학습 가이드, 챕터, 연습 문제로 변환하여 교실 밖에서도 학생들의 학습을 풍부하게 만들 수 있다면 어떨까요?✨

본 튜토리얼에서는 TwelveLabs와 AWS를 사용하여 강의 콘텐츠 분석기(Lecture Content Analyzer) 플랫폼을 구축해 보겠습니다. 이는 교사가 정적인 동영상 콘텐츠를 단 한 번의 간단한 업로드만으로 다음과 같이 변환할 수 있도록 지원하는 엔드 투 엔드 시스템입니다.
맞춤형 연습 문제
사용자 정의 학습 가이드
타임스탬프가 포함된 비디오 챕터
접근성을 위한 자막 스크립트
학습 속도 권장 사항
상세 노트 및 요약
그리고 훨씬 더 많은 기능들...
그 핵심에는 정밀한 초 단위 비디오 이해 및 포괄적인 멀티모달 임베딩을 제공하는 TwelveLabs Pegasus 및 Marengo 모델이 있어, 비디오에 완벽히 부합하는 고도로 관련성 높은 콘텐츠와 추천 임베딩을 생성할 수 있습니다.
이 멀티모달 이해 기술은 AWS와의 긴밀한 연동을 바탕으로 작동합니다. 최근 발표된 AWS Bedrock과 TwelveLabs의 파트너십을 통해 AWS 환경에 TwelveLabs를 손쉽게 통합하고, 100개 이상의 AWS 서비스를 활용하여 소프트웨어를 강력하게 지원할 수 있습니다.
마지막으로, TwelveLabs Pegasus를 Google Gemini 및 AWS Nova와 시각적으로 비교해 볼 수 있습니다. 각 모델의 모델 벤치마크, 시각적 비교, 그리고 상세한 비용 분석을 깊이 있게 다룰 예정입니다.
애플리케이션 데모
실제 작동 모습을 확인하고 싶으시다면, 아래의 데모 동영상을 시청하시거나 튜토리얼을 시작하기 전에 이 Github 리포지토리의 코드를 함께 따라가 보시기 바랍니다!

라이브 애플리케이션 링크: https://twelve-labs-education-poc-s7sz.vercel.app/
학습 목표
이 튜토리얼을 통해 다음을 배울 수 있습니다:
TwelveLabs가 AWS 서비스와 어떻게 원활하게 통합되는지 이해합니다.
DynamoDB 및 S3를 포함한 자체 AWS 서비스를 구성합니다.
출력 추론 품질, 인덱싱 시간, 추론 시간과 같은 핵심 개념을 파악합니다.
시장 에 출시된 다양한 멀티모달 모델 간의 상세한 비용 분석을 수행합니다.
멀티모달 모델이 프론트엔드 인터페이스와 높은 성능으로 작동할 수 있도록 지원하는 기술 아키텍처 다이어그램과 설계 결정을 분석합니다.
사전 요구 사항
Python 3.8+: Python 다운로드 | Python.org
Node.JS 3.8+: Node.js — Node.js® 다운로드
Terraform (선택 사항): Terraform 설치 | Terraform | HashiCorp Developer
TwelveLabs API 키: 인증 | TwelveLabs
TwelveLabs 인덱스: Python SDK | TwelveLabs
AWS 액세스 키: 자격 증명 - Boto3 1.40.12 문서
Google Gemini API 키: Gemini API 키 사용 | 개발자용 Google AI
Python 및 JavaScript에 대한 중급 수준의 이해.
로컬 환경 설정
1 - 리포지토리를 로컬 환경으로 가져옵니다(pull).
>> git2 - 로컬 리포지토리에서 Terraform 스크립트를 실행하여 필요한 AWS 리소스를 프로비저닝합니다.
* AWS 통합을 이해하고 각 서비스를 수동으로 직접 구성하려는 분들은 README의 수동 설정 지침을 따르실 수 있습니다: GitHub Repo README.
3 - 프론트엔드 및 백엔드 폴더에 환경 변수를 추가합니다.
.env.local (/frontend/)
TWELVE_LABS_API_KEY=... NEXT_PUBLIC_TWELVE_LABS_INDEX_ID=... AWS_ACCESS_KEY_ID=... AWS_SECRET_ACCESS_KEY=... AWS_S3_BUCKET_NAME=twelvelabs-lecture-content-poc AWS_REGION=us-east-1 GEMINI_API_KEY=... BLOB_READ_WRITE_TOKEN=... NEXT_PUBLIC_API_URL
.env (/api/)
TWELVE_LABS_API_KEY=... TWELVE_LABS_INDEX_ID=... AWS_ACCESS_KEY=... AWS_SECRET_ACCESS_KEY=... AWS_ACCOUNT_ID=... DYNAMODB_CONTENT_TABLE_NAME=twelvelabs-education-video-poc DYNAMODB_CONTENT_USER_NAME=twelvelabs-education-user-poc S3_BUCKET_NAME=twelvelabs-lecture-content-poc GOOGLE_API_KEY
4 - 가상 환경을 생성하고 Python 패키지를 설치합니다.
GitHub 리포지토리로 이동하여 다음 명령을 실행합니다:
>> python -m그 다음 가상 환경을 활성화하고 아래 명령을 실행하여 필요한 모든 Python 의존성 패키지를 설치합니다:
>> .\venv\Scripts\activate
>> pip install -r
5 - 노드 패키지 매니저(NPM)를 사용해 프론트엔드 샘플 애플리케이션을 시작합니다.
GitHub 리포지토리 내부의 프론트엔드 폴더로 콘솔에서 이동한 뒤 다음을 입력합니다:
>> npm그 후 localhost:3000으로 접속하여 사이트에 연결합니다.
* NPM이 설치되어 있는지 확인하세요: Node.js 및 npm 다운로드 및 설치 | npm Docs
6 - GitHub 리포지토리의 API 폴더에서 main.py를 실행하여 백엔드를 시작합니다.
GitHub 리포지토리 내부의 API 폴더로 콘솔에서 이동한 후 다음을 입력합니다:
이 프로세스는 귀사의 AWS 콘솔 및 AI 모델과 연결될 REST API를 호스팅하므로 계속 실행 상태로 두어야 합니다!
1단계: 강의 인덱싱 (Lecture Indexing)
좋습니다! 이제 로컬 환경과 AWS 인프라 구축이 완료되었으니 본격적으로 시작해 보겠습니다! 먼저 비디오를 다양한 클라우드 제공업체에 인덱싱하는 것부터 시작하겠습니다. 이 프로세스의 기술 아키텍처는 다음과 같습니다.

비디오가 웹사이트에 전송되면, 즉시 브라우저 메모리 내에 존재하는 비디오 블롭(Blob)으로 변환된 다음 바이트 단위로 변환될 수 있습니다. 이 바이트 데이터는 모든 컴퓨터가 해석할 수 있는 공통 언어로 작동하며, MP4 파일로 변환되어 각각 Google Cloud Provider 및 AWS S3 버킷에 API 요청을 통해 전송됩니다.
/frontend/…/api/upload-gemini/route.js (23 - 58행)
// Convert file to buffer const bytes = await file.arrayBuffer(); const buffer = Buffer.from(bytes); // Create a temporary file path const tempFileName = `${userName}-${Date.now()}-${file.name}`; const tempFilePath = join(tmpdir(), tempFileName); // Write the buffer to a temporary file await writeFile(tempFilePath, buffer); try { // Upload file to GCP using Google Client SDK. const myfile = await googleClient.files.upload({ file: tempFilePath, config: { mimeType: file.type || 'video/mp4' }, }); return NextResponse.json({ success: true, geminiFileId: myfile.uri, fileName: file.name }); } finally { await writeFile(tempFilePath, ''); }
💡 설계의 주안점: 왜 TwelveLabs에는 직접 업로드하지 않을까요? 우리의 핵심 멀티모달 AI 모델이 아닌가요?
이는 최근 이루어진 AWS 파트너십 덕분에 TwelveLabs를 AWS Bedrock에 직접 통합할 수 있게 되었기 때문입니다. 즉:
S3에 통합된 비디오 스토리지: TwelveLabs 모델이 비디오를 TwelveLabs 플랫폼에 직접 업로드하는 대신, S3 버킷에 있는 비디오를 직접 탐색하고 분석할 수 있습니다.
데이터 규정 준수 및 보안: 비디오 데이터가 AWS 인프라 환경 내에 머무르면서도 AWS 클라우드 보안 표준을 충족하므로, TwelveLabs를 사용하기 위해 별도의 추가적인 보안 규정 점검 절차를 거칠 필요가 없습니다.
개발자 친화적인 통합: TwelveLabs용 SDK와 AWS를 위한 Boto3를 따로 내려받을 필요 없이, 이제 Boto3 하나로 모든 처리가 가능합니다! 이는 개발 프로세스를 탄탄하게 단순화하고 실제 프로덕션 환경의 코드베이스를 매우 깔끔하게 유지해 줍니다.
최근 파트너십에 대한 자세한 정보는 여기서 확인하세요: TwelveLabs x AWS Amazon Bedrock - Twelve Labs!
비디오를 업로드해야 하는 클라우드 제공업체의 수를 줄임으로써, 인덱싱 및 비디오 업로드 시간이 비약적으로 단축되어 사용자에게 끊김 없는 원활한 경험을 선사합니다! 아래 코드에서는 Promise.all을 활용하여 Google Cloud Provider와 AWS S3에 동시에 병렬적으로 업로드를 수행합니다.
/frontend/…/dashboard/courses/page.js
// Upload asynchronously to all cloud providers. const [s3UploadResult, geminiUploadResult] = await Promise.all([ uploadToS3(), uploadToGemini(), ]);
💡 설계의 주안점: AWS S3 버킷과 같은 단일 비디오 데이터베이스 대신 구글에도 업로드한 이유는 무엇인가요? 비용을 절감하는 편이 좋지 않았을까요?
그 이유는 Google Gemini 같은 제공업체는 20MB를 초과하는 파일의 경우 자사 클라우드인 Google Cloud Provider에 직접 업로드할 것을 요구하기 때문입니다. 이 과정에서 추가 비용이 발생합니다. AWS 파트너십 이전에는 비디오를 TwelveLabs 인덱스에 별도로 저장했어야 했으나, 이제 새로운 파트너십 덕분에 모든 비디오 데이터를 하나의 단일 AWS 인프라로 온전히 중앙화하여 관리할 수 있게 되었습니다!
참고: TwelveLabs 네이티브 플랫폼 역시 임베딩 시각화와 같은 매우 강력한 편의 기능을 함께 제공하고 있습니다.


마지막으로, 향후 손쉬운 데이터 조회를 위해 비디오 관련 메타데이터를 AWS DynamoDB 테이블에 저장해 둡니다.
async def upload_video(video_params: VideoRequest = Depends(get_video_id_from_request)): try: db_handler = DBHandler() db_handler.upload_video_ids(twelve_labs_video_id=video_params.twelve_labs_video_id, s3_key=video_params.s3_key, gemini_file_id=video_params.gemini_file_id) except Exception as e: return DefaultResponse(status='error', message=str(e), status_code=500) return DefaultResponse(status='success', message='Video uploaded successfully', status_code=200)
더 알아보고 싶으시다면 API 폴더의 헬퍼 모듈을 편하게 살펴보셔도 좋습니다. 다만 본 튜토리얼은 다루는 코드양이 많으므로 필수 사항은 아닙니다. 아래 코드는 자격 증명을 DYNAMODB_CONTENT_TABLE_NAME 테이블에 업로드하는 데 사용되는 upload_video_ids() 메서드입니다.
def upload_video_ids(self, twelve_labs_video_id: str, s3_key: str, gemini_file_id: str): table_name = os.getenv('DYNAMODB_CONTENT_TABLE_NAME') if not table_name: logger.error("DYNAMODB_TABLE_NAME environment variable not set") raise Exception("DYNAMODB_TABLE_NAME environment variable not set") table = self.dynamodb.Table(table_name) logger.info("DynamoDB table reference obtained") item = { 'video_id': twelve_labs_video_id, 's3_key': s3_key, 'gemini_file_id': gemini_file_id, 'created_at': boto3.dynamodb.types.Decimal(str(int(time.time()))), } logger.info(f"Preparing to upload item: {item}") response = table.put_item(Item=item) logger.info(f"DynamoDB put_item response: {response}") return response
이제 이 비디오들이 각 제공업체에 정상적으로 업로드되었으므로, 본격적인 AI 추론 단계로 넘어가 학생을 위한 맞춤형 콘텐츠를 생성하고 교육자를 위한 개선 분석 통찰력을 확보할 준비가 끝났습니다!
2단계: 강의 콘텐츠 AI 추론 (Lecture Content AI Inference)
이제 가장 흥미로운 파트인 AI 추론 단계입니다! TwelveLabs Pegasus API 호출 코드 스니펫을 보기 전에 기술 아키텍처를 먼저 명확히 이해해야 합니다. 올바른 API 아키텍처를 선택하는 것만으로도, 추론 시간을 5분 이상에서 30초 미만으로 단축하는 엄청난 차이를 만들어낼 수 있기 때문입니다.

위 아키텍처에서 볼 수 있듯이, 당사는 비디오 강의 분석의 각 섹션별 콘텐츠를 생성하기 위해 ASGI(Asynchronous Server Gateway Interface) FastAPI 엔드포인트를 활용합니다. 작은 차이 같지만, 사용자 경험에는 결정적인 변화를 불러오게 됩니다.
💡 설계의 주안점: ASGI란 무엇이며 백엔드 API 서비스에서 이것이 왜 그렇게 중요할까요?
WSGI(Web Server Gateway Interface)의 차세대 진화 모델인 ASGI는 비동기 호출을 처리하도록 설계된 서버 아키텍처로, 여러 연결과 이벤트를 동시에 무리 없이 처리할 수 있습니다. 특정 백엔드 작업이 '로드'되는 동안 다른 대안적인 작업을 수행할 수 있도록 전환해 주는 방식을 취합니다.
파스타를 조리하는 요리사를 상상해 보세요! 면을 삶는 동안 요리사는 단순히 가만히 서서 면이 다 익을 때까지 기다린 후에 미트볼을 만들기 시작하지 않습니다. 손님이 붐비는 바쁜 레스토랑에서는 빠르게 처리해야 하므로 면이 익는 동안 미트볼을 함께 조리하며 멀티태스킹을 진행해야 합니다.
이 기법이 당사의 API 호출 프로세스에도 동일하게 이식되었습니다. 가령, Google Gemini가 비디오 내용 요약을 처리하고 수렴하는 동안, 당사는 동시에 TwelveLabs 및 AWS Nova에게도 요약 처리를 요청하여 시작하고 먼저 완료되는 쪽의 결과를 빠르게 받아 보게 됩니다.
이를 통해 각 제공업체의 API 호출이 순차적으로 하나씩 완료될 때까지 기다릴 필요 없이 다음과 같은 파생 데이터들을 한 번에 병렬적으로 얻을 수 있으며, 전체 추론 시간은 기존 약 5분에서 단 30초 내외로 급격히 단축됩니다.
요약 정보(Gist: 제목, 추천 태그, 주제)
타임라인 챕터
학습 속도 권장 주안점
핵심 요점
퀴즈 및 질문
학생 참여 유도 지표
최종 요약
대화 스크립트
이 API 엔드포인트들을 체계적으로 구축하기 위해, 아래 코드와 같이 개별 모델 제공업체를 위한 팩토리 클래스를 정의하여 관리합니다.
/api/providers/llm.py (1 - 31행)
from abc import ABC, abstractmethod class LLMProvider(ABC): @abstractmethod def __init__(self, *args, **kwargs): pass @abstractmethod def generate_chapters(self): pass @abstractmethod def generate_key_takeaways(self): pass @abstractmethod def generate_pacing_recommendations(self): pass @abstractmethod def generate_quiz_questions(self): pass @abstractmethod def generate_engagement(self): pass @abstractmethod def generate_gist(self): pass
해당 추상 클래스를 기반으로 파일 구조가 어떻게 체계적으로 관리되고 작동하는지 아래 이미지에서 손쉽게 파악해 볼 수 있습니다.

이를 통해 FastAPI 서버의 API 엔드포인트는 상황에 맞는 클래스와 메서드를 극도로 간단하고 안전하게 호출할 수 있게 됩니다.
개별 데이터 포인트를 각각 독립적인 REST API 엔드포인트로 분리해 처리함으로써, AI 모델이 출력을 처리해 반환하기까지 소요되는 절대적 지표인 '추론 속도'를 정량적으로 개별 모니터링할 수 있게 됩니다. 이 구조화된 파이썬 클래스 설계를 보시면, 향후 새로운 LLM 모델을 확장해 나가거나 필수 메서드가 빠짐없이 구현되었는지 유지 관리 측면에서 얼마나 큰 이점을 주는지 한눈에 직관적으로 이해하실 수 있습니다.
심층 분석: 모델 벤치마킹 및 비용 정밀 분석
실제 벤치마킹 분석 지표와 결과를 본격적으로 공유하기에 앞서, 우리가 어떠한 객관적인 기준에 따라 각 기성 모델들을 벤치마킹했는지 먼저 명확히 짚고 넘어가겠습니다.
TopP, topK, temperature 및 기타 사용자 정의 모델 추론 설정값들은 온전히 기본(Default)값으로 고정하여 진행했습니다.
기본값은 일반적으로 해당 모델이 범용적이고 일반적인 유스케이스에서 '가장 최적의 연산 효율과 퀄리티'를 출력하도록 튜닝된 지점입니다.
설정값에 대한 자세한 개념은 다음 가이드를 참고하세요: Temperature, Top-P, Top-K: 포괄적 가이드 | MoonlightDevs - 기술 블로그 (제공: MoonlightDevs)
모든 비교 대상 모델에는 각각 완벽히 일치하는 등가 프롬프트를 입력하여 콘텐츠 생성을 요했습니다.
제출된 프롬프트는 /api/helpers/prompts.py 경로의 프롬프트 폴더에서 상세히 보실 수 있습니다.
구조화된 출력 형식을 완벽하게 지원하는 모델의 경우, Pydantic을 활용해 구문 처리를 지원했습니다.
Pydantic은 프로그래밍에서 JSON 스키마 규격을 신뢰성 있게 보장해 주는 중요 개발자 도구입니다. 이 기능을 안정적으로 내장해 지원하지 않는 모델의 경우 복잡한 정형 요소를 파싱하기가 매우 까다롭기 때문에 제공 업체의 설계 결함 요소로도 봅니다.
Pydantic의 작동 방식에 대해 더 자세히 조율하고 싶으시다면 다음 가이드를 참고하세요: Pydantic 가이드 - Pydantic
모든 모델에는 다음 하나의 공유 강의 비디오 링크로 동일 조건 추론을 지시했습니다: https://www.youtube.com/watch?v=5LeZflr8Zfs.

자, 그럼 본격적으로 모델별 결과물 추론의 품질 지표 분석 결과를 함께 확인해 보시죠! 이 지표는 출력물의 전반적인 구조 정합성 및 정확성을 판단하는 데 매우 영향력이 큰 부분입니다.

상기 평가 지표에서 나타나듯, 모델 성향에 따라 결과물에서 극명한 특징과 차이가 확인되었습니다. 당연히 정성적인 평가는 도입 기업의 프로덕션 핵심 요건에 맞춰 수렴되겠으나, 해당 유튜브 비디오 결과물을 기반으로 요약해 본 요점은 다음과 같습니다:
Google Gemini: 전반적인 정합 지표는 훌륭했으나 세밀한 정합 밀도는 다소 부족했습니다. 모델이 비디오 안의 모든 지엽적 요소까지 나열해 버리는 현상을 막으려면 다소 세밀한 파인 튜닝 및 인텐트 프롬프트 엔지니어링이 추가적으로 요구됩니다. 필요 이상의 불필요한 추천 태그 목록을 과도하게 나열함으로써, 태그 매칭에 고도로 의존해야 하는 정교한 추천 파이프라인에서는 자칫 치명적 결함으로 작동할 리스크가 있습니다.
AWS Nova: 정확성과 결과 정확도는 발군이었으나 구조화된 JSON 출력을 온전히 폼팩팅하는 측면에서 다소 아쉬움이 남았습니다. 이 백서 작성 시점을 기준으로 AWS Nova는 Pydantic을 활용한 명시적인 스키마 구조 출력을 온전히 보장하지 못하여, 온도 파라미터를 조절하거나 강제로 출력을 바인딩하는 등 부가적인 예외 우회 트릭 처리가 필요했습니다.
더 알아보기: 구조화된 출력 규격 필요 가이드 - Amazon Nova
TwelveLabs: 필요한 최적의 정보 정확성 및 출력 밀도 사이의 완벽한 밸런스를 보여주었으며 Pydantic 구조화된 데이터 역시 결함 없이 고도로 정밀하게 가공해 응답했습니다. 요약 항목의 밀도가 다소 축약적으로 정제된 선이 있었으나, 이는 프롬프트 상으로 "최소 1개 이상의 필수 세부 요소를 포함할 것" 수준으로 요청했기에 조율 프롬프트 튜닝 영역에서 능히 개량될 수 있는 수준입니다.
이어 각 모델별로 실측 계산된 실제 응답 속도(Inference Time) 지표 분석을 다뤄 보겠습니다.

위 분석 그래프에서 확인되듯, TwelveLabs와 Google 모델은 거의 흡사하게 우수한 전체 응답 생성 지표를 기록했습니다. 단, 구조적인 세부 양상에서 주목할 만한 유의미한 차이들이 확인됩니다.
TwelveLabs 데이터 캐싱(Caching) 레이어: TwelveLabs의 경우 대화 자막 대본이나 전체 핵심 기스트 데이터 로드가 가히 전광석화처럼 즉시 응답되는 현상을 관찰할 수 있습니다! 비디오 제목처럼 언제나 주기적으로 호출되고 사용성이 보장된 범용 지표들은 플랫폼 내부에서 고성능 캐시 데이터를 보관해 주기 때문에 밀리초 수준의 초고속 반환을 가능하게 만듭니다.
장문형(Long-Form) vs 단문형(Short-Form) 텍스트 강세 차이:
Gemini 모델은 매우 긴 문장의 장문형 원본 텍스트를 구성하는 영역에서 연산 효율상의 소폭 우위가 검증되었습니다. 타임스탬프 기반 챕터 작성 영역이나 밀도 높은 타임라인 파이프라인의 연산 가공 시 지표가 빠르고 유려하게 수렴되는 것을 확인할 수 있습니다.
반면, TwelveLabs는 핵심 요점 불릿 포인트 도출이나 문맥 맥락을 짧고 임프레시브하게 한눈에 들어오는 서머리로 정제 가공할 때 응답 효율이 훨씬 속도감 있게 작용합니다.
자, 드디어 대망의 정량 평가인 총 소요 비용 시뮬레이션을 진행해 보겠습니다. 지표를 보다 직관적이고 공평하게 도출하기 위해, 1시간짜리 임의의 롱폼 비디오 학습 가공 처리를 전제로 깔고 각 사가 공식 문서에서 공표하는 인풋/아웃풋 단가를 일일이 적용하여 정밀 분석을 실시했습니다.
* 개별 추론 쿼리 API 호출 횟수: 총 8회 (데이터 인포 카테고리당 각 1회씩 병렬 호출)
TwelveLabs: $2.79
단가 산정 기준: TwelveLabs | 공식 가격 상세 계산 시스템
업로드 비디오 타임 총합 = 1시간
기타 부가 임베딩 API 비활성 처리 (타 모델 대조 효율 정밀화를 위해 벡터 임베딩 수수료 제외)
비디오 전후 분석 API 사용량 = 8회 (가공 카테고리 총합 8회 요청 대비)
검색 엔드포인트 호출 횟수 = 0회
Google Gemini: $10.62 (별도 수반될 수 있는 GCP 인프라 입출구 부가 네트워크 비용 제외 수치)
Google Gemini는 연산 토큰 수 비례 정량 과금 제도를 택하고 있으며, 전체 비디오 길이 단위 대비 인풋 슬라이스 토큰 점유 가중치에 따라 최종 계산 수수료가 결정됩니다.
기술 기준서 참고: Gemini API 상세 설명 기반 토큰수 세부 계측 방법 | Google AI 개발자 허브
비디오 슬라이스 초당 환산 점유 토큰 수: 1초당 약 295 토큰.
밀리언(100만) 토큰당 과금 단가: $1.25
1시간 영상 환산 총 토큰 연산량: 3,600초 * 295 토큰 / 초 = 1,062,000 토큰
최종 시뮬레이션 산출 공식: (1,062,000 토큰 / 1,000,000) * $1.25 * 8회 호출 = $10.62
AWS Nova: $0.22 (기타 수반될 수 있는 연계 결합된 아키텍처 인프라 연산 비용은 제외한 고유 값)
토큰 기준서 참고: Amazon Nova 기반 비디오 데이터 처리량 분석 기법
제조사 가이드 기준 1시간 무손실 비디오 데이터의 기준 예측 고정 토큰 환산값: 276,480 토큰.
공식 가격 문서 참고: AWS Nova 공식 리테일 과금 테이블
AWS Nova Pro 모델 등급 인풋 토큰 단가 = 입력 1,000 토큰 단위당 $0.0008
최종 시뮬레이션 산출 공식: (276,480 토큰 / 1,000) * $0.0008 = $0.22
포괄적인 정성 및 정량 분석 수치를 다각도로 매핑하여, 독자 여러분이 현업에서 직관적으로 한눈에 분석할 수 있도록 아래 상세 요약 매트릭스 표로 도출해 보았습니다.
평가 카테고리 | TwelveLabs | Google Gemini | AWS Nova |
출력 추론 품질 | ✅ 균형 및 지능화된 구조: 정보 정확성과 정합 밀도 간의 가장 조화로운 균형점을 제시합니다. | 🎯 정확하나 높은 나열 특성: 인텐트 정확도는 매우 우수하나, 정제되지 않은 유관 정보와 무수한 서브 태그 요소까지 과도하게 열거하여 불필요한 노이즈가 높은 편입니다. | ⚙️ 높은 정확도 대비 텍스트 미지정: 의미론적 완성도는 뛰어나지만 마크다운이나 구조화된 출력을 일관적으로 제어하기에 결함 확률이 높습니다. |
구조화된 출력 지원 여부 (Structured Output) | ✅ 지원 (안정성 탁월): 프레임워크 자체에서 네이티브하게 온전히 정형 JSON 데이터의 강제 출력을 높은 신뢰도로 구사합니다. | ✅ 지원 (안정성 우수): 안정적인 출력 구조를 명시적으로 문제없이 규격화하여 제공합니다. | ❌ 미지원 (출처 정제 불안정): 정형 데이터 규정을 일관성 있게 신뢰하기 어려우며, 정상적인 JSON 가공 처리를 보완하기 위한 전처리가 별도로 수반되어야 합니다. |
인프라 응답 속도 | 신속함 (특히 캐시된 영역): 공통 및 단문형 결과 생성 영역에서 고밀도 캐시 덕분에 극도의 지연 시간 단축 효과를 가져옵니다. | 우수함 (장문 텍스트): 장문의 연속적인 스크립트 작성 시 타의 추종을 불허하는 균형 잡힌 연산 도프 속도를 상회합니다. | 보통: 평균적으로 안정적인 처리 추이를 가지며 경쟁 모델 대비 구간별로 약 10~20초 수준의 딜레이가 소폭 가산됩니다. |
자체 캐싱 아키텍처 탑재 여부 | ✅ 지원: 비디오 데이터가 초기 로드될 때 핵심 내용, 요약 및 스크립트 정보들을 사전에 지능적으로 압축 보관해 두어 연속 인입을 처리합니다. | ❌ 미지원: 매회 쿼리 수행 시점마다 지속적으로 전체 비디오 원본 영역에 걸쳐 무거운 연산을 전면 재처리해야 합니다. | ❌ 미지원: 매회 쿼리 수행 시점마다 지속적으로 전체 비디오 원본 영역에 걸쳐 무거운 연산을 전면 재처리해야 합니다. |
실제 환산 단가 | 💸💸 $2.79 | 💸💸💸 $10.62 | 💵 $0.22 |
과금 설계 체계 | 시간 정액 + 실 호출 병행 설계: 업로드된 절대 비디오 재생 지수(시간 단위)로 고정 기준 단가를 먼저 깎은 뒤, 전후 분석 수행당 소액을 산입하는 형태입니다. | 종량 토큰제: 동일 비디오에 요청할 때마다 비디오에 축적되는 엄청난 수량의 인입 토큰 세그먼트를 쿼리 수만큼 계속 중복 곱하여 청구하는 과금 체계입니다. | 종량 토큰제: 동일 비디오에 요청할 때마다 비디오에 축적되는 엄청난 수량의 인입 토큰 세그먼트를 쿼리 수만큼 계속 중복 곱하여 청구하는 과금 체계입니다. |
기타 간접 가산 요소 | (올인원 플랫폼 내재 비용 포함 처리) | 대규모 GCP 버킷 리소스 및 부대 운영 비용 수반 | 수반되는 AWS 기본 리소스 적재 수수료 |
물론 기성 모델 제공사들은 향후에도 극적인 단가 인하나 추론 압축 효율 고도화를 달성하겠지만, 이 플랫폼을 구축해 보면서 독자 고유의 비디오 데이터를 마운팅하여 가공 정합성이 과연 어떠한 양상으로 비디오 인텔리전스 설계에 부합할 것인지 체계적인 통찰을 사전에 정량 정성적으로 충분히 체득해 볼 수 있습니다.
3단계: 학습자 피드백 루프 + 교육 대시보드 통찰력
이제 피날레를 장식할 마지막 장으로서, 학습을 마친 학생 측의 활성 피드백 데이터가 백엔드 채널을 돌며 어떻게 교육자에게 최적의 학생 관리 분석 지표로 전달되는지, 또한 TwelveLabs가 어째서 수많은 클라우드 설계 구성 중에서도 AWS 도구 생태계와 결합했을 때 극상의 프로덕션 탄력성과 엔지니어링 편의를 선사하는지 종합적으로 검토하겠습니다.

위 아키텍처 스크린샷과 같이 교실의 학습자들은 TwelveLabs를 통해 풍성하게 잉태된 강의 요약문, 챕터 세그먼트, 지능형 자습 퀴즈 데이터 세트를 유려하고 고해상도 환경 하에 소비하게 됩니다. 그간 일선 고등 교원이 수고스럽게 오프라인에서 수백 분씩 수작업하여 생산해 내야만 했던 개별 맞춤 부교재 제작 리소스를 TwelveLabs Pegasus 기반 인텔리전스 텍스트 제너레이션 파워와 강력하게 결속된 AWS 전도 인프라의 시너지로 단 수 초 만에 마법같이 처리해 냅니다.
학생들이 해당 강의 비디오 교육 과정을 수강하고 생성형 맞춤 학습 퀴즈를 모두 수행하면, 다음과 같이 심층 다차원 리포트를 인계받을 수 있습니다:
챕터 레벨 퀴즈 성취 인덱스 — 개별 학습 세그먼트 구간 내 문제 해결 오답률 분포 및 세부 비매칭 취약 과소비 구간의 원포인트 트래킹 리포트입니다.
맞춤형 후속 학습 피드백 — 학생 개개인의 취약 노출 양식에 부합하는 개인화된 정밀 세정 로드맵입니다.
외부 S3 비디오 인덱스 추천 고도화 — TwelveLabs Marengo만의 강력한 콘텍스트 비주얼 인지 능력을 적극 활용하여 S3 영상 뱅크에서 연관도가 극상에 달하는 맞춤형 심화 보조 유튜브 시청 채널을 추천해 줍니다.
종합 성취 점수 매트릭스 — 전체 단원 교과목 테마별 최종 분석 학업 달성도 점수입니다.
이를 염두에 두고 교육 설계 아키텍처 뒤단에서 어떠한 방식으로 데이터를 고밀도로 가공하는지, 그리고 왜 단일화된 AWS 결속 레이아웃 통합이 고성능 프로덕션 엔드 투 엔드 상용 앱 상에서 완벽한 차별점을 부여하는지 소스 라인을 직접 확인해 보겠습니다.

작성된 기술 아키텍처 다이어그램에서 확인할 수 있듯, 당사는 고정 지능 연산을 위해 AWS Bedrock 고유 관리형 서비스인 Claude 3.5 Sonnet 연산 환경을 심리스하게 이식했습니다. 불안정하게 매번 서드파티 신종 프레임워크 패키지나 외부 파이프라인 데이터 입출을 복잡하게 배선할 필요 없이, AWS 백본 레벨 내에서 DynamoDB 고유 원장에 안전하게 보안 마스킹된 핵심 데이터를 안전하게 바인딩함으로써, 완벽히 검증되고 통제된 형태로 초고속 추론 트랜잭션을 운용할 수 있습니다.
나아가, 학생의 맞춤형 학습을 유도하기 위해 고차원 벡터 임베딩 기술을 접목한 최적의 추천 비디오 매칭 라인을 인출해 보았습니다. TwelveLabs Marengo 모델의 핵심 역량인 다차원 시각-문맥 데이터 고도 통합 매핑 기술을 이용해 탄생한 벡터 임베딩 공간 지표 상에서 유클리드 임베딩 거리를 순회하는 고효율 KNN(K-nearest Neighbor) 계산 로직을 수행합니다.
/api/helpers/reasoning.py (262 - 289행)
def fetch_related_videos(self, video_id: str): # Fetch original video from S3 Bucket. presigned_urls = DBHandler().fetch_s3_presigned_urls() # Fetch embedding stored in Marengo Model video_object = self.twelvelabs_client.index.video.retrieve(index_id=os.getenv('TWELVE_LABS_INDEX_ID'), id=video_id, embedding_option=['visual-text']) video_duration = video_object.system_metadata.duration video_embedding_segments = video_object.embedding.video_embedding.segments combined_embedding = np.array([]) for segment in video_embedding_segments: combined_embedding = np.concatenate([combined_embedding, segment.embeddings_float]) # Generate embeddings of other YouTube videos. other_video_embeddings = {} for video_url in presigned_urls: video_embedding = self.generate_new_video_embeddings(video_url, combined_embedding, video_duration) other_video_embeddings[video_url] = video_embedding # Conduct K-Nearest Neighbor Search with Euclidian Distance. knn_results = self.knn_search(combined_embedding, other_video_embeddings, 5) return knn_results
이렇게 풍부한 아키텍처 특성들이 다른 번잡하고 이질적인 분산형 서드파티가 아닌, AWS라는 안전하고 일원화된 단일 데이터 통합 플랫폼 하에서 신뢰 수준 높게 고속 보장된다는 사실을 명심하십시오. 기업 인프라의 최고 명제인 엔터프라이즈 보안 레이어를 무결하게 확보하면서도 전방위 개발 생산성을 놀랍도록 향상시킬 수 있는 유일무이한 기법입니다.
최종적으로 학생들이 자율 평가와 과제를 응답하고 전송하게 되면, 담당 교육자는 일목요연하고 직관적으로 대시보드 화면상에서 전체 반 구성원들의 핵심 학업 분포 통계와 취약 영역들을 한눈에 확인하며 교육 전략을 보강할 수 있습니다.

이 완벽하게 짜인 교육 피드백 인프라 루프 모델은 결과적으로 학생들에게 풍족한 AI 가공 기반 교육 자원을 실시간 공급함으로써 가파른 성적 교정 효과를 도모하는 동시에, 교육자가 차주 강의 방향을 지능적으로 준비하는 데 필요한 데이터 통찰을 신뢰성 있게 도출해 냅니다.
이처럼 비디오를 그 어떤 플랫폼보다도 높은 수준으로 심도 있게 자율 직관 인지해 내는 독보적인 영상 지능 모델인 TwelveLabs가 선가공 파이프라인을 지능화해 준 덕에, 과거라면 꼬박 수일에서 길게는 수주간 교무 리소스를 소모했어야 할 고부가 교과 과정 설계를 순식간에 보조해 낼 수 있었습니다.
결론
긴 튜토리얼 과정을 끝까지 완주해 주신 여러분, 진심으로 감사드립니다! 당사는 이 실습 가이드를 통해 영상 인공지능 분야의 프론티어 리더인 TwelveLabs 제품군이 에듀테크나 교육 현장에 불러올 수 있는 놀라운 인공지능 패러다임 전환 기법뿐 아니라, 아래와 같은 가치 있는 통합 교육 통찰 리소스를 전해 드리고자 심혈을 기울였습니다:
TwelveLabs와 AWS의 유기적 결속 메커니즘 — TwelveLabs의 독보적인 멀티모달 솔루션이 AWS Bedrock 플랫폼의 기본 핵심 컴포넌트로 안착함에 따라, 개발자 및 엔지니어 입장에서 통합 개발 효율 증대는 물론 아키텍처 중앙화를 통해 얼마나 강력한 보안 거버넌스 이점을 가져가는지 증명해 드렸습니다.
아키텍처 실증 가이드 및 영리한 엔지니어링 의사 결정 — 기업 운영에서 성능 최적화와 인프라 단가 세이브라는 두 마리 토끼를 어떻게 설계적으로 달성해 낼 수 있는지 디테일하게 복기했습니다.
동영상 멀티모달 벤치마킹 — 글로벌 비디오 지능 모델의 응답 속도, 정격 실측 비용 단가 및 출력물의 인지적 전구조 양상을 직접 분석하여 차세대 프로젝트 설계 시 어떤 모델 전략을 채택해야 할지 가이드라인을 수립해 드렸습니다.
본 오픈소스 설계 아키텍처와 관련된 더 깊이 있는 가이드 규격 문서들은 아래 링크를 통해 상시 조회하실 수 있습니다:
TwelveLabs 분석 기술 백서: Google 드라이브 백서
전체 아키텍처 통합 설계 시스템 다이어그램: LucidCharts
상세 통합 API 개발 스펙 매뉴얼: Google 드라이브 API 문서
GitHub 실습 전체 코드베이스 저장소: https://github.com/nathanchess/twelve-labs-education-poc
라이브 시뮬레이터 애플리케이션 플랫폼: https://twelve-labs-education-poc-s7sz.vercel.app/
TwelveLabs의 검증되고 노련한 비디오 세분화 인지 파워를 광범위하고 입증된 AWS의 정밀 분산 클라우드 생태계 위에 이식하십시오. 이를 통해 귀사는 교육, 미디어, 엔터테인먼트를 비롯한 전 산업 전반에 걸쳐 기성의 한계를 뛰어넘는 가장 인텔리전트하고 독보적인 서비스 가치를 민첩하게 시장에 출시할 수 있습니다.
참고: 본 문서는 소프트웨어의 단계별 튜토리얼과 함께 모델 간의 벤치마킹 및 비용 분석을 심도 있게 다룹니다. 따라서 매우 포괄적인 내용을 담고 있으므로, 독자 분의 역할에 따라 특정 섹션을 건너뛰고 읽으시는 것을 권장합니다.
소프트웨어 엔지니어 — 애플리케이션을 처음부터 배우고 구축하고자 하는 분들.
처음부터 끝까지 진행하되, "심층 분석(Deep Dives)" 섹션은 가볍게 훑어보셔도 좋습니다.
소프트웨어 아키텍트 — TwelveLabs와 AWS의 통합 방법을 배우고자 하는 분들.
기술적인 코드 세부 사항은 가볍게 넘어가고, 기술 아키텍처 다이어그램을 집중적으로 분석하며 읽어보세요.
의사 결정자 — TwelveLabs가 귀사의 비즈니스에 적합한 솔루션인지 고민 중이신 분들.
벤치마킹 및 비용 분석을 다루는 "심층 분석(Deep Dive)" 주제로 바로 이동하세요.
우리가 무엇을 구축했는지 전반적인 개요를 파악할 수 있도록, 모든 역할의 독자 분들께서 애플리케이션 데모 영상은 최소한 시청해 보시는 것을 적극 추천합니다.
소개
만약 교사들이 정적인 동영상 강의를 즉시 대화형 학습 가이드, 챕터, 연습 문제로 변환하여 교실 밖에서도 학생들의 학습을 풍부하게 만들 수 있다면 어떨까요?✨

본 튜토리얼에서는 TwelveLabs와 AWS를 사용하여 강의 콘텐츠 분석기(Lecture Content Analyzer) 플랫폼을 구축해 보겠습니다. 이는 교사가 정적인 동영상 콘텐츠를 단 한 번의 간단한 업로드만으로 다음과 같이 변환할 수 있도록 지원하는 엔드 투 엔드 시스템입니다.
맞춤형 연습 문제
사용자 정의 학습 가이드
타임스탬프가 포함된 비디오 챕터
접근성을 위한 자막 스크립트
학습 속도 권장 사항
상세 노트 및 요약
그리고 훨씬 더 많은 기능들...
그 핵심에는 정밀한 초 단위 비디오 이해 및 포괄적인 멀티모달 임베딩을 제공하는 TwelveLabs Pegasus 및 Marengo 모델이 있어, 비디오에 완벽히 부합하는 고도로 관련성 높은 콘텐츠와 추천 임베딩을 생성할 수 있습니다.
이 멀티모달 이해 기술은 AWS와의 긴밀한 연동을 바탕으로 작동합니다. 최근 발표된 AWS Bedrock과 TwelveLabs의 파트너십을 통해 AWS 환경에 TwelveLabs를 손쉽게 통합하고, 100개 이상의 AWS 서비스를 활용하여 소프트웨어를 강력하게 지원할 수 있습니다.
마지막으로, TwelveLabs Pegasus를 Google Gemini 및 AWS Nova와 시각적으로 비교해 볼 수 있습니다. 각 모델의 모델 벤치마크, 시각적 비교, 그리고 상세한 비용 분석을 깊이 있게 다룰 예정입니다.
애플리케이션 데모
실제 작동 모습을 확인하고 싶으시다면, 아래의 데모 동영상을 시청하시거나 튜토리얼을 시작하기 전에 이 Github 리포지토리의 코드를 함께 따라가 보시기 바랍니다!

라이브 애플리케이션 링크: https://twelve-labs-education-poc-s7sz.vercel.app/
학습 목표
이 튜토리얼을 통해 다음을 배울 수 있습니다:
TwelveLabs가 AWS 서비스와 어떻게 원활하게 통합되는지 이해합니다.
DynamoDB 및 S3를 포함한 자체 AWS 서비스를 구성합니다.
출력 추론 품질, 인덱싱 시간, 추론 시간과 같은 핵심 개념을 파악합니다.
시장 에 출시된 다양한 멀티모달 모델 간의 상세한 비용 분석을 수행합니다.
멀티모달 모델이 프론트엔드 인터페이스와 높은 성능으로 작동할 수 있도록 지원하는 기술 아키텍처 다이어그램과 설계 결정을 분석합니다.
사전 요구 사항
Python 3.8+: Python 다운로드 | Python.org
Node.JS 3.8+: Node.js — Node.js® 다운로드
Terraform (선택 사항): Terraform 설치 | Terraform | HashiCorp Developer
TwelveLabs API 키: 인증 | TwelveLabs
TwelveLabs 인덱스: Python SDK | TwelveLabs
AWS 액세스 키: 자격 증명 - Boto3 1.40.12 문서
Google Gemini API 키: Gemini API 키 사용 | 개발자용 Google AI
Python 및 JavaScript에 대한 중급 수준의 이해.
로컬 환경 설정
1 - 리포지토리를 로컬 환경으로 가져옵니다(pull).
>> git2 - 로컬 리포지토리에서 Terraform 스크립트를 실행하여 필요한 AWS 리소스를 프로비저닝합니다.
* AWS 통합을 이해하고 각 서비스를 수동으로 직접 구성하려는 분들은 README의 수동 설정 지침을 따르실 수 있습니다: GitHub Repo README.
3 - 프론트엔드 및 백엔드 폴더에 환경 변수를 추가합니다.
.env.local (/frontend/)
TWELVE_LABS_API_KEY=... NEXT_PUBLIC_TWELVE_LABS_INDEX_ID=... AWS_ACCESS_KEY_ID=... AWS_SECRET_ACCESS_KEY=... AWS_S3_BUCKET_NAME=twelvelabs-lecture-content-poc AWS_REGION=us-east-1 GEMINI_API_KEY=... BLOB_READ_WRITE_TOKEN=... NEXT_PUBLIC_API_URL
.env (/api/)
TWELVE_LABS_API_KEY=... TWELVE_LABS_INDEX_ID=... AWS_ACCESS_KEY=... AWS_SECRET_ACCESS_KEY=... AWS_ACCOUNT_ID=... DYNAMODB_CONTENT_TABLE_NAME=twelvelabs-education-video-poc DYNAMODB_CONTENT_USER_NAME=twelvelabs-education-user-poc S3_BUCKET_NAME=twelvelabs-lecture-content-poc GOOGLE_API_KEY
4 - 가상 환경을 생성하고 Python 패키지를 설치합니다.
GitHub 리포지토리로 이동하여 다음 명령을 실행합니다:
>> python -m그 다음 가상 환경을 활성화하고 아래 명령을 실행하여 필요한 모든 Python 의존성 패키지를 설치합니다:
>> .\venv\Scripts\activate
>> pip install -r
5 - 노드 패키지 매니저(NPM)를 사용해 프론트엔드 샘플 애플리케이션을 시작합니다.
GitHub 리포지토리 내부의 프론트엔드 폴더로 콘솔에서 이동한 뒤 다음을 입력합니다:
>> npm그 후 localhost:3000으로 접속하여 사이트에 연결합니다.
* NPM이 설치되어 있는지 확인하세요: Node.js 및 npm 다운로드 및 설치 | npm Docs
6 - GitHub 리포지토리의 API 폴더에서 main.py를 실행하여 백엔드를 시작합니다.
GitHub 리포지토리 내부의 API 폴더로 콘솔에서 이동한 후 다음을 입력합니다:
이 프로세스는 귀사의 AWS 콘솔 및 AI 모델과 연결될 REST API를 호스팅하므로 계속 실행 상태로 두어야 합니다!
1단계: 강의 인덱싱 (Lecture Indexing)
좋습니다! 이제 로컬 환경과 AWS 인프라 구축이 완료되었으니 본격적으로 시작해 보겠습니다! 먼저 비디오를 다양한 클라우드 제공업체에 인덱싱하는 것부터 시작하겠습니다. 이 프로세스의 기술 아키텍처는 다음과 같습니다.

비디오가 웹사이트에 전송되면, 즉시 브라우저 메모리 내에 존재하는 비디오 블롭(Blob)으로 변환된 다음 바이트 단위로 변환될 수 있습니다. 이 바이트 데이터는 모든 컴퓨터가 해석할 수 있는 공통 언어로 작동하며, MP4 파일로 변환되어 각각 Google Cloud Provider 및 AWS S3 버킷에 API 요청을 통해 전송됩니다.
/frontend/…/api/upload-gemini/route.js (23 - 58행)
// Convert file to buffer const bytes = await file.arrayBuffer(); const buffer = Buffer.from(bytes); // Create a temporary file path const tempFileName = `${userName}-${Date.now()}-${file.name}`; const tempFilePath = join(tmpdir(), tempFileName); // Write the buffer to a temporary file await writeFile(tempFilePath, buffer); try { // Upload file to GCP using Google Client SDK. const myfile = await googleClient.files.upload({ file: tempFilePath, config: { mimeType: file.type || 'video/mp4' }, }); return NextResponse.json({ success: true, geminiFileId: myfile.uri, fileName: file.name }); } finally { await writeFile(tempFilePath, ''); }
💡 설계의 주안점: 왜 TwelveLabs에는 직접 업로드하지 않을까요? 우리의 핵심 멀티모달 AI 모델이 아닌가요?
이는 최근 이루어진 AWS 파트너십 덕분에 TwelveLabs를 AWS Bedrock에 직접 통합할 수 있게 되었기 때문입니다. 즉:
S3에 통합된 비디오 스토리지: TwelveLabs 모델이 비디오를 TwelveLabs 플랫폼에 직접 업로드하는 대신, S3 버킷에 있는 비디오를 직접 탐색하고 분석할 수 있습니다.
데이터 규정 준수 및 보안: 비디오 데이터가 AWS 인프라 환경 내에 머무르면서도 AWS 클라우드 보안 표준을 충족하므로, TwelveLabs를 사용하기 위해 별도의 추가적인 보안 규정 점검 절차를 거칠 필요가 없습니다.
개발자 친화적인 통합: TwelveLabs용 SDK와 AWS를 위한 Boto3를 따로 내려받을 필요 없이, 이제 Boto3 하나로 모든 처리가 가능합니다! 이는 개발 프로세스를 탄탄하게 단순화하고 실제 프로덕션 환경의 코드베이스를 매우 깔끔하게 유지해 줍니다.
최근 파트너십에 대한 자세한 정보는 여기서 확인하세요: TwelveLabs x AWS Amazon Bedrock - Twelve Labs!
비디오를 업로드해야 하는 클라우드 제공업체의 수를 줄임으로써, 인덱싱 및 비디오 업로드 시간이 비약적으로 단축되어 사용자에게 끊김 없는 원활한 경험을 선사합니다! 아래 코드에서는 Promise.all을 활용하여 Google Cloud Provider와 AWS S3에 동시에 병렬적으로 업로드를 수행합니다.
/frontend/…/dashboard/courses/page.js
// Upload asynchronously to all cloud providers. const [s3UploadResult, geminiUploadResult] = await Promise.all([ uploadToS3(), uploadToGemini(), ]);
💡 설계의 주안점: AWS S3 버킷과 같은 단일 비디오 데이터베이스 대신 구글에도 업로드한 이유는 무엇인가요? 비용을 절감하는 편이 좋지 않았을까요?
그 이유는 Google Gemini 같은 제공업체는 20MB를 초과하는 파일의 경우 자사 클라우드인 Google Cloud Provider에 직접 업로드할 것을 요구하기 때문입니다. 이 과정에서 추가 비용이 발생합니다. AWS 파트너십 이전에는 비디오를 TwelveLabs 인덱스에 별도로 저장했어야 했으나, 이제 새로운 파트너십 덕분에 모든 비디오 데이터를 하나의 단일 AWS 인프라로 온전히 중앙화하여 관리할 수 있게 되었습니다!
참고: TwelveLabs 네이티브 플랫폼 역시 임베딩 시각화와 같은 매우 강력한 편의 기능을 함께 제공하고 있습니다.


마지막으로, 향후 손쉬운 데이터 조회를 위해 비디오 관련 메타데이터를 AWS DynamoDB 테이블에 저장해 둡니다.
async def upload_video(video_params: VideoRequest = Depends(get_video_id_from_request)): try: db_handler = DBHandler() db_handler.upload_video_ids(twelve_labs_video_id=video_params.twelve_labs_video_id, s3_key=video_params.s3_key, gemini_file_id=video_params.gemini_file_id) except Exception as e: return DefaultResponse(status='error', message=str(e), status_code=500) return DefaultResponse(status='success', message='Video uploaded successfully', status_code=200)
더 알아보고 싶으시다면 API 폴더의 헬퍼 모듈을 편하게 살펴보셔도 좋습니다. 다만 본 튜토리얼은 다루는 코드양이 많으므로 필수 사항은 아닙니다. 아래 코드는 자격 증명을 DYNAMODB_CONTENT_TABLE_NAME 테이블에 업로드하는 데 사용되는 upload_video_ids() 메서드입니다.
def upload_video_ids(self, twelve_labs_video_id: str, s3_key: str, gemini_file_id: str): table_name = os.getenv('DYNAMODB_CONTENT_TABLE_NAME') if not table_name: logger.error("DYNAMODB_TABLE_NAME environment variable not set") raise Exception("DYNAMODB_TABLE_NAME environment variable not set") table = self.dynamodb.Table(table_name) logger.info("DynamoDB table reference obtained") item = { 'video_id': twelve_labs_video_id, 's3_key': s3_key, 'gemini_file_id': gemini_file_id, 'created_at': boto3.dynamodb.types.Decimal(str(int(time.time()))), } logger.info(f"Preparing to upload item: {item}") response = table.put_item(Item=item) logger.info(f"DynamoDB put_item response: {response}") return response
이제 이 비디오들이 각 제공업체에 정상적으로 업로드되었으므로, 본격적인 AI 추론 단계로 넘어가 학생을 위한 맞춤형 콘텐츠를 생성하고 교육자를 위한 개선 분석 통찰력을 확보할 준비가 끝났습니다!
2단계: 강의 콘텐츠 AI 추론 (Lecture Content AI Inference)
이제 가장 흥미로운 파트인 AI 추론 단계입니다! TwelveLabs Pegasus API 호출 코드 스니펫을 보기 전에 기술 아키텍처를 먼저 명확히 이해해야 합니다. 올바른 API 아키텍처를 선택하는 것만으로도, 추론 시간을 5분 이상에서 30초 미만으로 단축하는 엄청난 차이를 만들어낼 수 있기 때문입니다.

위 아키텍처에서 볼 수 있듯이, 당사는 비디오 강의 분석의 각 섹션별 콘텐츠를 생성하기 위해 ASGI(Asynchronous Server Gateway Interface) FastAPI 엔드포인트를 활용합니다. 작은 차이 같지만, 사용자 경험에는 결정적인 변화를 불러오게 됩니다.
💡 설계의 주안점: ASGI란 무엇이며 백엔드 API 서비스에서 이것이 왜 그렇게 중요할까요?
WSGI(Web Server Gateway Interface)의 차세대 진화 모델인 ASGI는 비동기 호출을 처리하도록 설계된 서버 아키텍처로, 여러 연결과 이벤트를 동시에 무리 없이 처리할 수 있습니다. 특정 백엔드 작업이 '로드'되는 동안 다른 대안적인 작업을 수행할 수 있도록 전환해 주는 방식을 취합니다.
파스타를 조리하는 요리사를 상상해 보세요! 면을 삶는 동안 요리사는 단순히 가만히 서서 면이 다 익을 때까지 기다린 후에 미트볼을 만들기 시작하지 않습니다. 손님이 붐비는 바쁜 레스토랑에서는 빠르게 처리해야 하므로 면이 익는 동안 미트볼을 함께 조리하며 멀티태스킹을 진행해야 합니다.
이 기법이 당사의 API 호출 프로세스에도 동일하게 이식되었습니다. 가령, Google Gemini가 비디오 내용 요약을 처리하고 수렴하는 동안, 당사는 동시에 TwelveLabs 및 AWS Nova에게도 요약 처리를 요청하여 시작하고 먼저 완료되는 쪽의 결과를 빠르게 받아 보게 됩니다.
이를 통해 각 제공업체의 API 호출이 순차적으로 하나씩 완료될 때까지 기다릴 필요 없이 다음과 같은 파생 데이터들을 한 번에 병렬적으로 얻을 수 있으며, 전체 추론 시간은 기존 약 5분에서 단 30초 내외로 급격히 단축됩니다.
요약 정보(Gist: 제목, 추천 태그, 주제)
타임라인 챕터
학습 속도 권장 주안점
핵심 요점
퀴즈 및 질문
학생 참여 유도 지표
최종 요약
대화 스크립트
이 API 엔드포인트들을 체계적으로 구축하기 위해, 아래 코드와 같이 개별 모델 제공업체를 위한 팩토리 클래스를 정의하여 관리합니다.
/api/providers/llm.py (1 - 31행)
from abc import ABC, abstractmethod class LLMProvider(ABC): @abstractmethod def __init__(self, *args, **kwargs): pass @abstractmethod def generate_chapters(self): pass @abstractmethod def generate_key_takeaways(self): pass @abstractmethod def generate_pacing_recommendations(self): pass @abstractmethod def generate_quiz_questions(self): pass @abstractmethod def generate_engagement(self): pass @abstractmethod def generate_gist(self): pass
해당 추상 클래스를 기반으로 파일 구조가 어떻게 체계적으로 관리되고 작동하는지 아래 이미지에서 손쉽게 파악해 볼 수 있습니다.

이를 통해 FastAPI 서버의 API 엔드포인트는 상황에 맞는 클래스와 메서드를 극도로 간단하고 안전하게 호출할 수 있게 됩니다.
개별 데이터 포인트를 각각 독립적인 REST API 엔드포인트로 분리해 처리함으로써, AI 모델이 출력을 처리해 반환하기까지 소요되는 절대적 지표인 '추론 속도'를 정량적으로 개별 모니터링할 수 있게 됩니다. 이 구조화된 파이썬 클래스 설계를 보시면, 향후 새로운 LLM 모델을 확장해 나가거나 필수 메서드가 빠짐없이 구현되었는지 유지 관리 측면에서 얼마나 큰 이점을 주는지 한눈에 직관적으로 이해하실 수 있습니다.
심층 분석: 모델 벤치마킹 및 비용 정밀 분석
실제 벤치마킹 분석 지표와 결과를 본격적으로 공유하기에 앞서, 우리가 어떠한 객관적인 기준에 따라 각 기성 모델들을 벤치마킹했는지 먼저 명확히 짚고 넘어가겠습니다.
TopP, topK, temperature 및 기타 사용자 정의 모델 추론 설정값들은 온전히 기본(Default)값으로 고정하여 진행했습니다.
기본값은 일반적으로 해당 모델이 범용적이고 일반적인 유스케이스에서 '가장 최적의 연산 효율과 퀄리티'를 출력하도록 튜닝된 지점입니다.
설정값에 대한 자세한 개념은 다음 가이드를 참고하세요: Temperature, Top-P, Top-K: 포괄적 가이드 | MoonlightDevs - 기술 블로그 (제공: MoonlightDevs)
모든 비교 대상 모델에는 각각 완벽히 일치하는 등가 프롬프트를 입력하여 콘텐츠 생성을 요했습니다.
제출된 프롬프트는 /api/helpers/prompts.py 경로의 프롬프트 폴더에서 상세히 보실 수 있습니다.
구조화된 출력 형식을 완벽하게 지원하는 모델의 경우, Pydantic을 활용해 구문 처리를 지원했습니다.
Pydantic은 프로그래밍에서 JSON 스키마 규격을 신뢰성 있게 보장해 주는 중요 개발자 도구입니다. 이 기능을 안정적으로 내장해 지원하지 않는 모델의 경우 복잡한 정형 요소를 파싱하기가 매우 까다롭기 때문에 제공 업체의 설계 결함 요소로도 봅니다.
Pydantic의 작동 방식에 대해 더 자세히 조율하고 싶으시다면 다음 가이드를 참고하세요: Pydantic 가이드 - Pydantic
모든 모델에는 다음 하나의 공유 강의 비디오 링크로 동일 조건 추론을 지시했습니다: https://www.youtube.com/watch?v=5LeZflr8Zfs.

자, 그럼 본격적으로 모델별 결과물 추론의 품질 지표 분석 결과를 함께 확인해 보시죠! 이 지표는 출력물의 전반적인 구조 정합성 및 정확성을 판단하는 데 매우 영향력이 큰 부분입니다.

상기 평가 지표에서 나타나듯, 모델 성향에 따라 결과물에서 극명한 특징과 차이가 확인되었습니다. 당연히 정성적인 평가는 도입 기업의 프로덕션 핵심 요건에 맞춰 수렴되겠으나, 해당 유튜브 비디오 결과물을 기반으로 요약해 본 요점은 다음과 같습니다:
Google Gemini: 전반적인 정합 지표는 훌륭했으나 세밀한 정합 밀도는 다소 부족했습니다. 모델이 비디오 안의 모든 지엽적 요소까지 나열해 버리는 현상을 막으려면 다소 세밀한 파인 튜닝 및 인텐트 프롬프트 엔지니어링이 추가적으로 요구됩니다. 필요 이상의 불필요한 추천 태그 목록을 과도하게 나열함으로써, 태그 매칭에 고도로 의존해야 하는 정교한 추천 파이프라인에서는 자칫 치명적 결함으로 작동할 리스크가 있습니다.
AWS Nova: 정확성과 결과 정확도는 발군이었으나 구조화된 JSON 출력을 온전히 폼팩팅하는 측면에서 다소 아쉬움이 남았습니다. 이 백서 작성 시점을 기준으로 AWS Nova는 Pydantic을 활용한 명시적인 스키마 구조 출력을 온전히 보장하지 못하여, 온도 파라미터를 조절하거나 강제로 출력을 바인딩하는 등 부가적인 예외 우회 트릭 처리가 필요했습니다.
더 알아보기: 구조화된 출력 규격 필요 가이드 - Amazon Nova
TwelveLabs: 필요한 최적의 정보 정확성 및 출력 밀도 사이의 완벽한 밸런스를 보여주었으며 Pydantic 구조화된 데이터 역시 결함 없이 고도로 정밀하게 가공해 응답했습니다. 요약 항목의 밀도가 다소 축약적으로 정제된 선이 있었으나, 이는 프롬프트 상으로 "최소 1개 이상의 필수 세부 요소를 포함할 것" 수준으로 요청했기에 조율 프롬프트 튜닝 영역에서 능히 개량될 수 있는 수준입니다.
이어 각 모델별로 실측 계산된 실제 응답 속도(Inference Time) 지표 분석을 다뤄 보겠습니다.

위 분석 그래프에서 확인되듯, TwelveLabs와 Google 모델은 거의 흡사하게 우수한 전체 응답 생성 지표를 기록했습니다. 단, 구조적인 세부 양상에서 주목할 만한 유의미한 차이들이 확인됩니다.
TwelveLabs 데이터 캐싱(Caching) 레이어: TwelveLabs의 경우 대화 자막 대본이나 전체 핵심 기스트 데이터 로드가 가히 전광석화처럼 즉시 응답되는 현상을 관찰할 수 있습니다! 비디오 제목처럼 언제나 주기적으로 호출되고 사용성이 보장된 범용 지표들은 플랫폼 내부에서 고성능 캐시 데이터를 보관해 주기 때문에 밀리초 수준의 초고속 반환을 가능하게 만듭니다.
장문형(Long-Form) vs 단문형(Short-Form) 텍스트 강세 차이:
Gemini 모델은 매우 긴 문장의 장문형 원본 텍스트를 구성하는 영역에서 연산 효율상의 소폭 우위가 검증되었습니다. 타임스탬프 기반 챕터 작성 영역이나 밀도 높은 타임라인 파이프라인의 연산 가공 시 지표가 빠르고 유려하게 수렴되는 것을 확인할 수 있습니다.
반면, TwelveLabs는 핵심 요점 불릿 포인트 도출이나 문맥 맥락을 짧고 임프레시브하게 한눈에 들어오는 서머리로 정제 가공할 때 응답 효율이 훨씬 속도감 있게 작용합니다.
자, 드디어 대망의 정량 평가인 총 소요 비용 시뮬레이션을 진행해 보겠습니다. 지표를 보다 직관적이고 공평하게 도출하기 위해, 1시간짜리 임의의 롱폼 비디오 학습 가공 처리를 전제로 깔고 각 사가 공식 문서에서 공표하는 인풋/아웃풋 단가를 일일이 적용하여 정밀 분석을 실시했습니다.
* 개별 추론 쿼리 API 호출 횟수: 총 8회 (데이터 인포 카테고리당 각 1회씩 병렬 호출)
TwelveLabs: $2.79
단가 산정 기준: TwelveLabs | 공식 가격 상세 계산 시스템
업로드 비디오 타임 총합 = 1시간
기타 부가 임베딩 API 비활성 처리 (타 모델 대조 효율 정밀화를 위해 벡터 임베딩 수수료 제외)
비디오 전후 분석 API 사용량 = 8회 (가공 카테고리 총합 8회 요청 대비)
검색 엔드포인트 호출 횟수 = 0회
Google Gemini: $10.62 (별도 수반될 수 있는 GCP 인프라 입출구 부가 네트워크 비용 제외 수치)
Google Gemini는 연산 토큰 수 비례 정량 과금 제도를 택하고 있으며, 전체 비디오 길이 단위 대비 인풋 슬라이스 토큰 점유 가중치에 따라 최종 계산 수수료가 결정됩니다.
기술 기준서 참고: Gemini API 상세 설명 기반 토큰수 세부 계측 방법 | Google AI 개발자 허브
비디오 슬라이스 초당 환산 점유 토큰 수: 1초당 약 295 토큰.
밀리언(100만) 토큰당 과금 단가: $1.25
1시간 영상 환산 총 토큰 연산량: 3,600초 * 295 토큰 / 초 = 1,062,000 토큰
최종 시뮬레이션 산출 공식: (1,062,000 토큰 / 1,000,000) * $1.25 * 8회 호출 = $10.62
AWS Nova: $0.22 (기타 수반될 수 있는 연계 결합된 아키텍처 인프라 연산 비용은 제외한 고유 값)
토큰 기준서 참고: Amazon Nova 기반 비디오 데이터 처리량 분석 기법
제조사 가이드 기준 1시간 무손실 비디오 데이터의 기준 예측 고정 토큰 환산값: 276,480 토큰.
공식 가격 문서 참고: AWS Nova 공식 리테일 과금 테이블
AWS Nova Pro 모델 등급 인풋 토큰 단가 = 입력 1,000 토큰 단위당 $0.0008
최종 시뮬레이션 산출 공식: (276,480 토큰 / 1,000) * $0.0008 = $0.22
포괄적인 정성 및 정량 분석 수치를 다각도로 매핑하여, 독자 여러분이 현업에서 직관적으로 한눈에 분석할 수 있도록 아래 상세 요약 매트릭스 표로 도출해 보았습니다.
평가 카테고리 | TwelveLabs | Google Gemini | AWS Nova |
출력 추론 품질 | ✅ 균형 및 지능화된 구조: 정보 정확성과 정합 밀도 간의 가장 조화로운 균형점을 제시합니다. | 🎯 정확하나 높은 나열 특성: 인텐트 정확도는 매우 우수하나, 정제되지 않은 유관 정보와 무수한 서브 태그 요소까지 과도하게 열거하여 불필요한 노이즈가 높은 편입니다. | ⚙️ 높은 정확도 대비 텍스트 미지정: 의미론적 완성도는 뛰어나지만 마크다운이나 구조화된 출력을 일관적으로 제어하기에 결함 확률이 높습니다. |
구조화된 출력 지원 여부 (Structured Output) | ✅ 지원 (안정성 탁월): 프레임워크 자체에서 네이티브하게 온전히 정형 JSON 데이터의 강제 출력을 높은 신뢰도로 구사합니다. | ✅ 지원 (안정성 우수): 안정적인 출력 구조를 명시적으로 문제없이 규격화하여 제공합니다. | ❌ 미지원 (출처 정제 불안정): 정형 데이터 규정을 일관성 있게 신뢰하기 어려우며, 정상적인 JSON 가공 처리를 보완하기 위한 전처리가 별도로 수반되어야 합니다. |
인프라 응답 속도 | 신속함 (특히 캐시된 영역): 공통 및 단문형 결과 생성 영역에서 고밀도 캐시 덕분에 극도의 지연 시간 단축 효과를 가져옵니다. | 우수함 (장문 텍스트): 장문의 연속적인 스크립트 작성 시 타의 추종을 불허하는 균형 잡힌 연산 도프 속도를 상회합니다. | 보통: 평균적으로 안정적인 처리 추이를 가지며 경쟁 모델 대비 구간별로 약 10~20초 수준의 딜레이가 소폭 가산됩니다. |
자체 캐싱 아키텍처 탑재 여부 | ✅ 지원: 비디오 데이터가 초기 로드될 때 핵심 내용, 요약 및 스크립트 정보들을 사전에 지능적으로 압축 보관해 두어 연속 인입을 처리합니다. | ❌ 미지원: 매회 쿼리 수행 시점마다 지속적으로 전체 비디오 원본 영역에 걸쳐 무거운 연산을 전면 재처리해야 합니다. | ❌ 미지원: 매회 쿼리 수행 시점마다 지속적으로 전체 비디오 원본 영역에 걸쳐 무거운 연산을 전면 재처리해야 합니다. |
실제 환산 단가 | 💸💸 $2.79 | 💸💸💸 $10.62 | 💵 $0.22 |
과금 설계 체계 | 시간 정액 + 실 호출 병행 설계: 업로드된 절대 비디오 재생 지수(시간 단위)로 고정 기준 단가를 먼저 깎은 뒤, 전후 분석 수행당 소액을 산입하는 형태입니다. | 종량 토큰제: 동일 비디오에 요청할 때마다 비디오에 축적되는 엄청난 수량의 인입 토큰 세그먼트를 쿼리 수만큼 계속 중복 곱하여 청구하는 과금 체계입니다. | 종량 토큰제: 동일 비디오에 요청할 때마다 비디오에 축적되는 엄청난 수량의 인입 토큰 세그먼트를 쿼리 수만큼 계속 중복 곱하여 청구하는 과금 체계입니다. |
기타 간접 가산 요소 | (올인원 플랫폼 내재 비용 포함 처리) | 대규모 GCP 버킷 리소스 및 부대 운영 비용 수반 | 수반되는 AWS 기본 리소스 적재 수수료 |
물론 기성 모델 제공사들은 향후에도 극적인 단가 인하나 추론 압축 효율 고도화를 달성하겠지만, 이 플랫폼을 구축해 보면서 독자 고유의 비디오 데이터를 마운팅하여 가공 정합성이 과연 어떠한 양상으로 비디오 인텔리전스 설계에 부합할 것인지 체계적인 통찰을 사전에 정량 정성적으로 충분히 체득해 볼 수 있습니다.
3단계: 학습자 피드백 루프 + 교육 대시보드 통찰력
이제 피날레를 장식할 마지막 장으로서, 학습을 마친 학생 측의 활성 피드백 데이터가 백엔드 채널을 돌며 어떻게 교육자에게 최적의 학생 관리 분석 지표로 전달되는지, 또한 TwelveLabs가 어째서 수많은 클라우드 설계 구성 중에서도 AWS 도구 생태계와 결합했을 때 극상의 프로덕션 탄력성과 엔지니어링 편의를 선사하는지 종합적으로 검토하겠습니다.

위 아키텍처 스크린샷과 같이 교실의 학습자들은 TwelveLabs를 통해 풍성하게 잉태된 강의 요약문, 챕터 세그먼트, 지능형 자습 퀴즈 데이터 세트를 유려하고 고해상도 환경 하에 소비하게 됩니다. 그간 일선 고등 교원이 수고스럽게 오프라인에서 수백 분씩 수작업하여 생산해 내야만 했던 개별 맞춤 부교재 제작 리소스를 TwelveLabs Pegasus 기반 인텔리전스 텍스트 제너레이션 파워와 강력하게 결속된 AWS 전도 인프라의 시너지로 단 수 초 만에 마법같이 처리해 냅니다.
학생들이 해당 강의 비디오 교육 과정을 수강하고 생성형 맞춤 학습 퀴즈를 모두 수행하면, 다음과 같이 심층 다차원 리포트를 인계받을 수 있습니다:
챕터 레벨 퀴즈 성취 인덱스 — 개별 학습 세그먼트 구간 내 문제 해결 오답률 분포 및 세부 비매칭 취약 과소비 구간의 원포인트 트래킹 리포트입니다.
맞춤형 후속 학습 피드백 — 학생 개개인의 취약 노출 양식에 부합하는 개인화된 정밀 세정 로드맵입니다.
외부 S3 비디오 인덱스 추천 고도화 — TwelveLabs Marengo만의 강력한 콘텍스트 비주얼 인지 능력을 적극 활용하여 S3 영상 뱅크에서 연관도가 극상에 달하는 맞춤형 심화 보조 유튜브 시청 채널을 추천해 줍니다.
종합 성취 점수 매트릭스 — 전체 단원 교과목 테마별 최종 분석 학업 달성도 점수입니다.
이를 염두에 두고 교육 설계 아키텍처 뒤단에서 어떠한 방식으로 데이터를 고밀도로 가공하는지, 그리고 왜 단일화된 AWS 결속 레이아웃 통합이 고성능 프로덕션 엔드 투 엔드 상용 앱 상에서 완벽한 차별점을 부여하는지 소스 라인을 직접 확인해 보겠습니다.

작성된 기술 아키텍처 다이어그램에서 확인할 수 있듯, 당사는 고정 지능 연산을 위해 AWS Bedrock 고유 관리형 서비스인 Claude 3.5 Sonnet 연산 환경을 심리스하게 이식했습니다. 불안정하게 매번 서드파티 신종 프레임워크 패키지나 외부 파이프라인 데이터 입출을 복잡하게 배선할 필요 없이, AWS 백본 레벨 내에서 DynamoDB 고유 원장에 안전하게 보안 마스킹된 핵심 데이터를 안전하게 바인딩함으로써, 완벽히 검증되고 통제된 형태로 초고속 추론 트랜잭션을 운용할 수 있습니다.
나아가, 학생의 맞춤형 학습을 유도하기 위해 고차원 벡터 임베딩 기술을 접목한 최적의 추천 비디오 매칭 라인을 인출해 보았습니다. TwelveLabs Marengo 모델의 핵심 역량인 다차원 시각-문맥 데이터 고도 통합 매핑 기술을 이용해 탄생한 벡터 임베딩 공간 지표 상에서 유클리드 임베딩 거리를 순회하는 고효율 KNN(K-nearest Neighbor) 계산 로직을 수행합니다.
/api/helpers/reasoning.py (262 - 289행)
def fetch_related_videos(self, video_id: str): # Fetch original video from S3 Bucket. presigned_urls = DBHandler().fetch_s3_presigned_urls() # Fetch embedding stored in Marengo Model video_object = self.twelvelabs_client.index.video.retrieve(index_id=os.getenv('TWELVE_LABS_INDEX_ID'), id=video_id, embedding_option=['visual-text']) video_duration = video_object.system_metadata.duration video_embedding_segments = video_object.embedding.video_embedding.segments combined_embedding = np.array([]) for segment in video_embedding_segments: combined_embedding = np.concatenate([combined_embedding, segment.embeddings_float]) # Generate embeddings of other YouTube videos. other_video_embeddings = {} for video_url in presigned_urls: video_embedding = self.generate_new_video_embeddings(video_url, combined_embedding, video_duration) other_video_embeddings[video_url] = video_embedding # Conduct K-Nearest Neighbor Search with Euclidian Distance. knn_results = self.knn_search(combined_embedding, other_video_embeddings, 5) return knn_results
이렇게 풍부한 아키텍처 특성들이 다른 번잡하고 이질적인 분산형 서드파티가 아닌, AWS라는 안전하고 일원화된 단일 데이터 통합 플랫폼 하에서 신뢰 수준 높게 고속 보장된다는 사실을 명심하십시오. 기업 인프라의 최고 명제인 엔터프라이즈 보안 레이어를 무결하게 확보하면서도 전방위 개발 생산성을 놀랍도록 향상시킬 수 있는 유일무이한 기법입니다.
최종적으로 학생들이 자율 평가와 과제를 응답하고 전송하게 되면, 담당 교육자는 일목요연하고 직관적으로 대시보드 화면상에서 전체 반 구성원들의 핵심 학업 분포 통계와 취약 영역들을 한눈에 확인하며 교육 전략을 보강할 수 있습니다.

이 완벽하게 짜인 교육 피드백 인프라 루프 모델은 결과적으로 학생들에게 풍족한 AI 가공 기반 교육 자원을 실시간 공급함으로써 가파른 성적 교정 효과를 도모하는 동시에, 교육자가 차주 강의 방향을 지능적으로 준비하는 데 필요한 데이터 통찰을 신뢰성 있게 도출해 냅니다.
이처럼 비디오를 그 어떤 플랫폼보다도 높은 수준으로 심도 있게 자율 직관 인지해 내는 독보적인 영상 지능 모델인 TwelveLabs가 선가공 파이프라인을 지능화해 준 덕에, 과거라면 꼬박 수일에서 길게는 수주간 교무 리소스를 소모했어야 할 고부가 교과 과정 설계를 순식간에 보조해 낼 수 있었습니다.
결론
긴 튜토리얼 과정을 끝까지 완주해 주신 여러분, 진심으로 감사드립니다! 당사는 이 실습 가이드를 통해 영상 인공지능 분야의 프론티어 리더인 TwelveLabs 제품군이 에듀테크나 교육 현장에 불러올 수 있는 놀라운 인공지능 패러다임 전환 기법뿐 아니라, 아래와 같은 가치 있는 통합 교육 통찰 리소스를 전해 드리고자 심혈을 기울였습니다:
TwelveLabs와 AWS의 유기적 결속 메커니즘 — TwelveLabs의 독보적인 멀티모달 솔루션이 AWS Bedrock 플랫폼의 기본 핵심 컴포넌트로 안착함에 따라, 개발자 및 엔지니어 입장에서 통합 개발 효율 증대는 물론 아키텍처 중앙화를 통해 얼마나 강력한 보안 거버넌스 이점을 가져가는지 증명해 드렸습니다.
아키텍처 실증 가이드 및 영리한 엔지니어링 의사 결정 — 기업 운영에서 성능 최적화와 인프라 단가 세이브라는 두 마리 토끼를 어떻게 설계적으로 달성해 낼 수 있는지 디테일하게 복기했습니다.
동영상 멀티모달 벤치마킹 — 글로벌 비디오 지능 모델의 응답 속도, 정격 실측 비용 단가 및 출력물의 인지적 전구조 양상을 직접 분석하여 차세대 프로젝트 설계 시 어떤 모델 전략을 채택해야 할지 가이드라인을 수립해 드렸습니다.
본 오픈소스 설계 아키텍처와 관련된 더 깊이 있는 가이드 규격 문서들은 아래 링크를 통해 상시 조회하실 수 있습니다:
TwelveLabs 분석 기술 백서: Google 드라이브 백서
전체 아키텍처 통합 설계 시스템 다이어그램: LucidCharts
상세 통합 API 개발 스펙 매뉴얼: Google 드라이브 API 문서
GitHub 실습 전체 코드베이스 저장소: https://github.com/nathanchess/twelve-labs-education-poc
라이브 시뮬레이터 애플리케이션 플랫폼: https://twelve-labs-education-poc-s7sz.vercel.app/
TwelveLabs의 검증되고 노련한 비디오 세분화 인지 파워를 광범위하고 입증된 AWS의 정밀 분산 클라우드 생태계 위에 이식하십시오. 이를 통해 귀사는 교육, 미디어, 엔터테인먼트를 비롯한 전 산업 전반에 걸쳐 기성의 한계를 뛰어넘는 가장 인텔리전트하고 독보적인 서비스 가치를 민첩하게 시장에 출시할 수 있습니다.




