콘텐츠로 이동

아키텍처

VSS Feature Store의 시스템 구조


전체 아키텍처

시스템 아키텍처

구성 요소

구성 요소 역할 비고
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분 주기)

ER 다이어그램

ER 다이어그램

Video (비디오 정보)

필드 타입 설명
uuid string (PK) 비디오 고유 식별자
file_size int 파일 크기 (bytes)
duration float 비디오 길이 (초)
mp4_source string 파일 경로 또는 YouTube URL

Video Description / Audio Transcript / Caption Summary

필드 타입 설명
uuid string (FK) 비디오 UUID
segment_id string (PK) 세그먼트 ID
model string 모델 이름
index int 세그먼트 순서
start float 시작 시간 (초)
end float 종료 시간 (초)
text string 캡션/ASR 텍스트
config_source string Config 파일 경로

관계: VIDEO (1) ──< (N) VIDEO_DESCRIPTION/AUDIO_TRANSCRIPT/CAPTION_SUMMARY


데이터 흐름

생성 (Generation)

비디오 입력
VSS Framework 처리
    ├─→ VLM 캡셔닝
    ├─→ ASR 음성 인식
    └─→ LLM 요약
Milvus DB 저장

목적: 실시간 서비스 (RAG, Video QA)


수집 (Collection)

자동 동기화 (Airflow - 10분 주기):

Milvus에서 완료된 비디오 조회
Feature Store로 복사
Metadata Store 업데이트

수동 등록 (API):

외부 모델 실행 (GPT-4, Claude)
JSON 파일 생성
register_captions_batch() 호출
Feature Store 저장 + Metadata 업데이트

활용 (Consumption)

사용자 요청
search_metadata() 호출
Metadata Store 검색
Segment IDs 획득
Feature Store에서 데이터 조회
결과 반환 (DataFrame)

디렉토리 구조

/gpfs/public/artifacts/feature_store/vss_feature_store
├── data/                          # 실제 feature 데이터 (날짜별 파티션)
│   ├── video/                     # video 단위의 고유/정적 정보
│   │   ├── 2024-12-01.parquet     # 2024-12-01에 생성/수집된 video 메타
│   │   ├── 2024-12-02.parquet
│   │   └── 2024-12-03.parquet
│   │
│   ├── video_description/         # video 기반 텍스트 설명 (LLM/caption)
│   │   ├── 2024-12-01.parquet     # 해당 날짜에 생성된 video description
│   │   ├── 2024-12-02.parquet
│   │   └── 2024-12-03.parquet
│   │
│   ├── audio_transcript/          # 음성 인식 결과 (ASR transcript)
│   │   ├── 2024-12-01.parquet     # 날짜별 transcript 결과
│   │   ├── 2024-12-02.parquet
│   │   └── 2024-12-03.parquet
│   │
│   └── caption_summary/           # caption/transcript 기반 요약 결과
│       ├── 2024-12-01.parquet
│       ├── 2024-12-02.parquet
│       └── 2024-12-03.parquet
├── segment_index/                 # segment 단위 메타데이터 (참조용)
│   ├── meta_video_description.parquet   # video_description segment 매핑
│   ├── meta_audio_transcript.parquet    # audio_transcript segment 매핑
│   └── meta_caption_summary.parquet     # caption_summary segment 매핑
│   # ※ 실제 feature가 아니라, chunk/segment ↔ 원본 ID 연결 목적
└── config/                        # 모델 및 파이프라인 설정 파일
    ├── gemini_coarse.yaml         # Coarse Gemini 설정
    ├── gemini_fine.yaml           # Fine Gemini 설정
    └── custom_config.yaml         # 사용자 정의 설정

Config 파일 관리

Config 파일은 /gpfs/public/artifacts/feature_store/vss_feature_store/config/에 저장되며,
config_source 필드에는 파일명만 저장됩니다 (예: gemini_fine.yaml)

자세한 내용은 Configuration 참조


Point-in-Time 조회

동일한 비디오의 여러 버전 관리:

시점 모델 세그먼트 수 비고
2024-12-01 GPT-4o 28 초기 처리
2024-12-15 GPT-4o 30 prompt 개선
2025-01-10 GPT-4o 32 모델 업데이트
# 특정 시점 조회
captions_v1 = api.get_captions(
    uuid='...',
    model='gpt-4o',
    timestamp='2024-12-01T10:00:00'
)

# 최신 버전 조회 (timestamp 생략)
captions_latest = api.get_captions(
    uuid='...',
    model='gpt-4o'
)

보안

접근 제어: GPFS 파일 시스템 권한 관리

데이터 보호:

  • Immutable: 수정 불가
  • Append-only: 추가 전용
  • Version History: 모든 이력 보존