콘텐츠로 이동

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를 통해:

  1. 중복 처리 방지: 고비용 연산 결과를 중앙 관리
  2. 일관된 접근: 모든 연구자/엔지니어가 동일한 데이터 사용
  3. 실험 재현: 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 사용 가능:

"12월에 등록된 GPT-4 캡션을 모두 찾아줘"
"WuFL2bJm2yo 비디오의 coarse config 캡션을 보여줘"

자세한 내용은 MCP 활용 참조


다음 단계


참고 자료

📄 상세 설계 문서

VSS Feature Store의 전체 설계 문서는 다음 Notion 페이지를 참조하세요:

📚 Feast 학습 자료

Feature Store의 핵심 기술인 Feast에 대한 이해:


지원