Skip to content

Latest commit

 

History

102 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

VAST DataEngine - Video Search and Summarization (VSS) Foundation Stack


Demo11


Overview

The system has three main parts:

  1. K8s Application - Web UI and REST API (Kubernetes)
  2. Ingest Pipeline - Serverless video processing (VAST DataEngine)
  3. Enrichment Pipeline - Scheduled prompt-suggester (search chips + key events)

VSS Blueprint Architecture — see also the interactive diagram in the app (Show Blueprint Diagram) or blueprint.html


Deployment

Component Guide
VSS - Retrieval Web UI; K8s Application (Backend, Frontend, Streaming, Batch Sync) vss-k8s-application
VSS - DataEngine; Ingest Pipeline (Segmenter, Detector, Reasoner, Embedder, Writer) dataengine-vss-ingest-pipeline
VSS - DataEngine; Enrichment Pipeline (prompt-suggester, optional) dataengine-vss-ingest-pipeline
GPU models (Cosmos-Reason2, Cosmos-Embed1, YOLO11 on Docker) vss-blueprint-models

Quick Start

  1. GPU models (Reason2, Embed1, YOLO on a GPU host): vss-blueprint-models

  2. Build and push images (REGISTRY is required; TAG defaults to v1):

    # K8s app (backend, frontend, streaming, batch-sync)
    REGISTRY=your.registry/vss source-code/scripts/build-retrieval-images.sh
    
    # DataEngine functions (ingest + prompt-suggester)
    REGISTRY=your.registry/vss source-code/scripts/build-vastde-functions.sh

    Details: K8s Step 2 · DataEngine build · scripts

  3. Deploy K8s Application:

    cd deployments/vss-k8s-application
    vim backend-secret.yaml  # Configure credentials
    ./QUICK_DEPLOY.sh <namespace> <cluster_name>
  4. Deploy Ingest Pipeline (choose one):

    • Using GUI: Configure vss-gui-secret-file-template.yaml, then use DataEngine UI
    • Using CLI: Configure vss-cli-secret-file-template.yaml, then run vastde commands

    See Ingest Pipeline Guide for full instructions (optional enrichment is the last step of the same GUI or CLI path).

  5. Test: Upload a video and search at http://video-lab.<cluster_name>.vastdata.com


Key Features

Feature Description Documentation
Video Analysis Prompts Configurable AI scenarios (surveillance, traffic, live_driving, etc.) video-reasoner
Ingest metadata config Single definition for upload metadata UI + S3 mapping (ingest_metadata.py) shared
Custom AI Prompts Per-video custom prompts (max length in ingest_metadata.py) video-reasoner
Metadata Filters Filter by camera_id, location, capture_type ingest
Advanced Search & AI Settings Max clip cards, synthesis clip count, caption/video weight, similarity video-backend
Explore mode Browse indexed uploads by day and location — no query; summarize any video on demand video-frontend
Data Dashboard VastDB stats, ingest health, S3 pipeline inventory, live key events video-frontend
Search suggestions & key events Grounded ≤8-word rephrases of segment reasoning_contentvss-prompts-events prompt-suggester
Object detection counts YOLO peak concurrent per class (object_counts); UI chips + dashboard heatmap video-detector
Agent APIs Tool wrappers + grounded Q&A for external agents video-backend
Time Filtering Filter by upload time (presets or custom range) video-backend
Video Streaming Capture YouTube videos to S3 video-streaming
Batch Sync Copy MP4 files between S3 buckets video-batch-sync
Authentication VAST username + password video-backend

Component Documentation

Component Description
shared Cross-service modules (ingest_metadata.py — upload metadata UI + S3)
scripts Build scripts for retrieval images and DataEngine functions
video-backend REST API, authentication, search
video-frontend Angular web UI (Search, Explore, Dashboard)
prompt-suggester Grounded search chips + key events → VastDB
video-streaming YouTube capture service
video-batch-sync S3 batch copy service
video-segmenter Splits videos into segments
video-detector YOLO11 object detection + peak counts + bbox sidecars
video-reasoner Plain searchable reasoning_content (Cosmos-Reason2)
video-embedder Text (reasoning_content) + visual embeddings
vastdb-writer Stores vectors and segment rows in VastDB

Pipeline Flow

Upload Video → vss-chunks bucket
                    ↓
            video-segmenter (~5s clips, trim to capture_interval)
                    ↓
            video-detector (YOLO11 → object_classes + peak object_counts + bbox sidecars)
                    ↓
            video-reasoner (Cosmos-Reason2 → searchable plain reasoning_content ≤1024)
                    ↓
            video-embedder (vectors from reasoning_content + vectors_visual from MP4)
                    ↓
            vastdb-writer (segment rows in VastDB)
                    ↓
              Search Ready
                    ↓
         prompt-suggester (optional enrichment)
                    ↓
         vss-prompts-events (grounded search chips + key events)

Search flow: query embed (Cosmos-Embed1) → hybrid search (reasoning_content + visual) → clip cards with upload-time badge and match timeline → Cosmos-Reason2 synthesis → player with bbox overlay and label N object chips

Explore flow: browse by upload date and location (fully indexed chunks only) → clip cards with segment timeline and upload-time badge → full-chunk player with bbox toggle and Summarize Video

Dashboard flow: VastDB KPIs + ingest quality + object instance heatmap (sum of peak counts) + S3 vs index alignment → key events (grounded rephrases) with in-place segment preview

Enrichment flow: sample recent reasoning_content → one grounded ≤8-word phrase per sample (no inventing) → search chips + key events

Agent flow: GET/POST /api/v1/tools/* for VastDB/search/explore/synthesize → POST /api/v1/agent/ask or /search-and-answer for grounded answers

Interactive diagram: open Show Blueprint Diagram in the app, or source-code/retrieval/video-frontend/src/assets/blueprint.html


Need Help?

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages