아키텍처¶
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 다이어그램¶

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)¶
목적: 실시간 서비스 (RAG, Video QA)
수집 (Collection)¶
자동 동기화 (Airflow - 10분 주기):
수동 등록 (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: 모든 이력 보존