VSS Feature Store¶
비디오 캡션, ASR(음성 인식), 요약 등 비디오 분석 결과를 체계적으로 저장하고 조회하기 위한 데이터 관리 시스템
시스템 소개¶
VSS-Feature Store는 Feast를 기반으로 구축된 비디오 분석 결과 관리 시스템입니다.
주요 기능:
- 모델, 설정, 생성 시점에 따른 비디오 분석 결과 통합 관리
- Point-in-Time 조회를 통한 특정 시점 데이터 재현
- 메타데이터 검색을 통한 Entity Discovery
- 외부 모델(GPT-4, Claude, Gemini) 결과 등록 지원
시스템 아키텍처¶

구성 요소¶
| 구성 요소 | 역할 | 비고 |
|---|---|---|
| VSS Framework | 비디오 분석 수행 | VLM(캡션), ASR(음성인식), LLM(요약) |
| Milvus DB | 벡터 검색 시스템 | VSS 서비스(RAG, Video QA) 전용 |
| Feature Store | 데이터 버전 관리 | Point-in-Time 조회, 연구/분석용 |
| Metadata Store | Entity Discovery | UUID/모델/설정/시점 기반 검색 |
| Airflow | 자동 동기화 | Milvus → Feature Store (10분 주기) |
데이터 흐름¶
생성 (Generation)
- VSS Framework가 비디오를 입력받아 캡션(VLM), ASR, 요약(LLM) 생성
- 결과는 Milvus DB에 저장되어 실시간 서비스 제공
수집 (Collection)
- 자동: Airflow가 10분마다 Milvus → Feature Store 동기화
- 수동: GPT-4, Claude 등 외부 모델 결과를 API로 직접 등록
활용 (Consumption)
- 연구원/엔지니어가 Feature Store API를 통해 데이터 조회
- 모델 비교, 데이터셋 큐레이션, 실험 재현 등
왜 Feature Store인가?¶
문제점¶
동일한 비디오라도 다양한 조건에 따라 서로 다른 캡션이 생성됨:
- 모델: GPT-4o, Claude-3.5, Gemini 등
- 설정 (Config): prompt, temperature, chunk_duration 등
- 생성 시점: 모델 업데이트, 재처리
Config의 중요성
동일한 모델, 동일한 비디오라도 config 설정에 따라 완전히 다른 결과가 생성됩니다!
예: scene_detection: fine-grained vs coarse-grained
→ 동일 120초 영상이 45개 vs 15개 세그먼트로 생성
Config는 간단하게 작성 가능하며, 사용자가 자유롭게 정의할 수 있습니다.
자세한 내용은 Configuration 참조
해결책¶
Feature Store를 통해:
- 중복 처리 방지: 고비용 연산 결과를 중앙 관리
- 일관된 접근: 모든 연구자/엔지니어가 동일한 데이터 사용
- 실험 재현: Point-in-Time 조회로 과거 실험 정확히 재현
빠른 시작¶
설치¶
# 1. 가상환경 설정
uv venv
source .venv/bin/activate
# 2. 라이브러리 설치
uv pip install -e "packages/mantis_common" -e "services/svc-vss/data/feast"
# 3. 환경 변수 설정
export AWS_ACCESS_KEY_ID=minioadmin
export AWS_SECRET_ACCESS_KEY=minioadmin
export AWS_ENDPOINT_URL_S3=http://andrew-minio-2025-12-03-svc.dev.idc.k8s:9000
export FEAST_S3_ENDPOINT_URL=http://andrew-minio-2025-12-03-svc.dev.idc.k8s:9000
# 4. MCP 서버 실행 (확인)
python services/svc-vss/data/feast/mcp_server.py
# 5. 기능 테스트
python services/svc-vss/data/feast/test_feast.py
기본 사용법¶
import api
from constants import FEATURE_VIEW_VIDEO_DESCRIPTION
# 0) Target Feature View
fv = FEATURE_VIEW_VIDEO_DESCRIPTION
# 1) Register New Captions (required step)
result = api.register_captions(
feature_view=fv,
uuid='yt-video-001',
mp4_source='https://www.youtube.com/watch?v=wjZofJX0v4M',
model='gpt-4o',
segments=[
{'index': 0, 'start': 0.0, 'end': 10.0, 'text': 'Intro segment...'},
{'index': 1, 'start': 10.0, 'end': 20.0, 'text': 'Content segment...'},
],
)
# 2) Retrieve Captions (verify registration result)
captions = api.get_captions(
feature_view=fv,
uuid='yt-video-001',
model='gpt-4o',
)
# 3) Search Metadata (optional)
metadata = api.search_metadata(
feature_view=fv,
models=['gpt-4o'],
)
자세한 내용은 시작하기 참조
API 레퍼런스¶
캡션 조회¶
| API | 설명 |
|---|---|
| search_metadata | 비디오 메타데이터 검색 (UUID, 모델, 날짜 필터) |
| get_captions | 단일 비디오 캡션 조회 |
| get_captions_batch | 여러 비디오 캡션 배치 조회 |
캡션 등록¶
| API | 설명 |
|---|---|
| register_captions | 단일 비디오 캡션 등록 (GPT-4, Claude 등) |
| register_captions_batch | 여러 비디오 캡션 배치 등록 (JSON 파일) |
비디오 관리¶
| API | 설명 |
|---|---|
| get_video | 단일 비디오 정보 조회 |
| get_all_videos | 모든 비디오 정보 조회 |
MCP 통합¶
MCP (Model Context Protocol)를 통해 자연어로 Feature Store 사용 가능:
자세한 내용은 MCP 활용 참조
다음 단계¶
- 시작하기 - 5분 안에 시작하기
- Configuration - Config 설정 가이드 (중요!)
- API 레퍼런스 - 전체 API 문서
- 아키텍처 - 시스템 구조 이해하기
- MCP 활용 - 자연어 인터페이스 사용법
참고 자료¶
📄 상세 설계 문서¶
VSS Feature Store의 전체 설계 문서는 다음 Notion 페이지를 참조하세요:
- VSS-Feature Store 설계 문서 (v1)
배경, 동기, ER 다이어그램, API 상세, FAQ 등 전체 설계 내용
📚 Feast 학습 자료¶
Feature Store의 핵심 기술인 Feast에 대한 이해:
-
Feast 개념 정리 문서
Training-Serving Skew, Feature Store 개념, Feast 아키텍처 정리 -
Feast 공식 문서
Feast 프레임워크 공식 레퍼런스
지원¶
- 📧 이메일: sunghyun.ahn@pyler.tech
- 🐛 이슈 제보: GitHub Issues
- 💬 GitHub: github.com/pylerAI/mantis-ml-platform