# vuongnguyen16/aic_2026 architecture

> Architecture diagram of the GitHub repository vuongnguyen16/aic_2026, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/vuongnguyen16/aic_2026
- Repository: https://github.com/vuongnguyen16/aic_2026

## Overview

This is an end-to-end multimodal video retrieval platform. Its lifecycle runs from video keyframe extraction and filtering, through OCR and model-specific embeddings, into catalog/index construction; a user query is planned and routed across visual, OCR, and ASR evidence, then fused and reasoned over temporally before results reach the review UI or submission workflow. The graph preserves README capabilities whose implementation was not sampled, using only supported enclosing paths. Runtime wiring beyond the cited excerpts is based on the README’s explicit architecture; detailed internal calls are not inferred.

Main entry points: [`Retrieval/rsys/engine.py`](https://github.com/vuongnguyen16/aic_2026/blob/main/Retrieval/rsys/engine.py) (Search engine), [`Retrieval/rsys/service/app.py`](https://github.com/vuongnguyen16/aic_2026/blob/main/Retrieval/rsys/service/app.py) (HTTP API), [`framme_extracting/src/framme_extracting/quality_filter.py`](https://github.com/vuongnguyen16/aic_2026/blob/main/framme_extracting/src/framme_extracting/quality_filter.py) (Quality and dedup), [`Retrieval/rsys/fusion.py`](https://github.com/vuongnguyen16/aic_2026/blob/main/Retrieval/rsys/fusion.py) (Rank fusion)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_capture["Video preparation"]
  node_extract["Keyframe extraction<br/>[pipeline.py]"]
  node_filter["Quality and dedup<br/>[quality_filter.py]"]
end

subgraph group_enrich["Evidence enrichment"]
  node_ocr["OCR pipeline<br/>[pipeline.py]"]
  node_encoders["Embedding spaces"]
  node_catalog[("Catalog and indexes")]
end

subgraph group_retrieval["Retrieval runtime"]
  node_planner["Query planning<br/>[planner.py]"]
  node_router["Query routing<br/>[router.py]"]
  node_engine["Search engine<br/>[engine.py]"]
  node_branches["Visual OCR ASR branches<br/>[search.py]"]
  node_fusion["Rank fusion<br/>[fusion.py]"]
  node_temporal["Temporal reasoning<br/>[temporal.py]"]
  node_rerank["Optional reranking<br/>[pipeline.py]"]
end

subgraph group_serve["Review and delivery"]
  node_api["HTTP API<br/>[app.py]"]
  node_results["Evidence results<br/>[engine.py]"]
  node_ui["Review workspace<br/>[App.tsx]"]
  node_submission["Submission workflow<br/>[submission.py]"]
end

node_videos(("Video corpus"))
node_query_user(("Reviewer or agent"))

node_videos -->|"decodes frames"| node_extract
node_extract -->|"filters candidates"| node_filter
node_filter -->|"provides keyframes"| node_ocr
node_filter -->|"provides keyframes"| node_encoders
node_ocr -->|"adds text evidence"| node_catalog
node_encoders -->|"builds vector indexes"| node_catalog
node_catalog -->|"supplies indexed evidence"| node_engine
node_query_user -->|"enters query"| node_ui
node_ui -->|"sends requests"| node_api
node_api -->|"plans query"| node_planner
node_planner -->|"routes query"| node_router
node_api -->|"executes search"| node_engine
node_engine -->|"searches modalities"| node_branches
node_branches -->|"provides ranked lists"| node_fusion
node_engine -->|"reasons over time"| node_temporal
node_fusion -->|"provides ranked evidence"| node_temporal
node_engine -.->|"offers candidate results"| node_rerank
node_temporal -->|"returns evidence"| node_results
node_fusion -->|"returns rankings"| node_results
node_api -->|"validates and exports"| node_submission
node_results -->|"displays evidence"| node_ui

click node_extract "https://github.com/vuongnguyen16/aic_2026/blob/main/framme_extracting/src/framme_extracting/pipeline.py"
click node_filter "https://github.com/vuongnguyen16/aic_2026/blob/main/framme_extracting/src/framme_extracting/quality_filter.py"
click node_ocr "https://github.com/vuongnguyen16/aic_2026/blob/main/baseline02/src/baseline02/ocr/pipeline.py"
click node_encoders "https://github.com/vuongnguyen16/aic_2026/tree/main/embedding"
click node_catalog "https://github.com/vuongnguyen16/aic_2026/tree/main/Retrieval/rsys"
click node_api "https://github.com/vuongnguyen16/aic_2026/blob/main/Retrieval/rsys/service/app.py"
click node_planner "https://github.com/vuongnguyen16/aic_2026/blob/main/Retrieval/rsys/planning/planner.py"
click node_router "https://github.com/vuongnguyen16/aic_2026/blob/main/Retrieval/rsys/planning/router.py"
click node_engine "https://github.com/vuongnguyen16/aic_2026/blob/main/Retrieval/rsys/engine.py"
click node_branches "https://github.com/vuongnguyen16/aic_2026/blob/main/Retrieval/rsys/search.py"
click node_fusion "https://github.com/vuongnguyen16/aic_2026/blob/main/Retrieval/rsys/fusion.py"
click node_temporal "https://github.com/vuongnguyen16/aic_2026/blob/main/Retrieval/rsys/temporal.py"
click node_rerank "https://github.com/vuongnguyen16/aic_2026/blob/main/Retrieval/rsys/rerank/pipeline.py"
click node_results "https://github.com/vuongnguyen16/aic_2026/blob/main/Retrieval/rsys/engine.py"
click node_ui "https://github.com/vuongnguyen16/aic_2026/blob/main/Retrieval/web/src/App.tsx"
click node_submission "https://github.com/vuongnguyen16/aic_2026/blob/main/Retrieval/rsys/submission.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_extract,node_filter,node_query_user toneBlue
class node_ocr,node_encoders,node_catalog toneAmber
class node_planner,node_router,node_engine,node_branches,node_fusion,node_temporal,node_rerank toneMint
class node_api,node_results,node_ui,node_submission toneRose
class node_videos toneIndigo
```

## Components

### Video preparation

- [Keyframe extraction](https://github.com/vuongnguyen16/aic_2026/blob/main/framme_extracting/src/framme_extracting/pipeline.py): `framme_extracting/src/framme_extracting/pipeline.py`
- [Quality and dedup](https://github.com/vuongnguyen16/aic_2026/blob/main/framme_extracting/src/framme_extracting/quality_filter.py): `framme_extracting/src/framme_extracting/quality_filter.py`

### Evidence enrichment

- [OCR pipeline](https://github.com/vuongnguyen16/aic_2026/blob/main/baseline02/src/baseline02/ocr/pipeline.py): `baseline02/src/baseline02/ocr/pipeline.py`
- [Embedding spaces](https://github.com/vuongnguyen16/aic_2026/tree/main/embedding): `embedding`
- [Catalog and indexes](https://github.com/vuongnguyen16/aic_2026/tree/main/Retrieval/rsys): `Retrieval/rsys`

### Retrieval runtime

- [Query planning](https://github.com/vuongnguyen16/aic_2026/blob/main/Retrieval/rsys/planning/planner.py): `Retrieval/rsys/planning/planner.py`
- [Query routing](https://github.com/vuongnguyen16/aic_2026/blob/main/Retrieval/rsys/planning/router.py): `Retrieval/rsys/planning/router.py`
- [Search engine](https://github.com/vuongnguyen16/aic_2026/blob/main/Retrieval/rsys/engine.py): `Retrieval/rsys/engine.py`
- [Visual OCR ASR branches](https://github.com/vuongnguyen16/aic_2026/blob/main/Retrieval/rsys/search.py): `Retrieval/rsys/search.py`
- [Rank fusion](https://github.com/vuongnguyen16/aic_2026/blob/main/Retrieval/rsys/fusion.py): `Retrieval/rsys/fusion.py`
- [Temporal reasoning](https://github.com/vuongnguyen16/aic_2026/blob/main/Retrieval/rsys/temporal.py): `Retrieval/rsys/temporal.py`
- [Optional reranking](https://github.com/vuongnguyen16/aic_2026/blob/main/Retrieval/rsys/rerank/pipeline.py): `Retrieval/rsys/rerank/pipeline.py`

### Review and delivery

- [HTTP API](https://github.com/vuongnguyen16/aic_2026/blob/main/Retrieval/rsys/service/app.py): `Retrieval/rsys/service/app.py`
- [Evidence results](https://github.com/vuongnguyen16/aic_2026/blob/main/Retrieval/rsys/engine.py): `Retrieval/rsys/engine.py`
- [Review workspace](https://github.com/vuongnguyen16/aic_2026/blob/main/Retrieval/web/src/App.tsx): `Retrieval/web/src/App.tsx`
- [Submission workflow](https://github.com/vuongnguyen16/aic_2026/blob/main/Retrieval/rsys/submission.py): `Retrieval/rsys/submission.py`

### Other components

- **Video corpus**
- **Reviewer or agent**

## Connections

- Video corpus → Keyframe extraction: decodes frames
- Keyframe extraction → Quality and dedup: filters candidates
- Quality and dedup → OCR pipeline: provides keyframes
- Quality and dedup → Embedding spaces: provides keyframes
- OCR pipeline → Catalog and indexes: adds text evidence
- Embedding spaces → Catalog and indexes: builds vector indexes
- Catalog and indexes → Search engine: supplies indexed evidence
- Reviewer or agent → Review workspace: enters query
- Review workspace → HTTP API: sends requests
- HTTP API → Query planning: plans query
- Query planning → Query routing: routes query
- HTTP API → Search engine: executes search
- Search engine → Visual OCR ASR branches: searches modalities
- Visual OCR ASR branches → Rank fusion: provides ranked lists
- Search engine → Temporal reasoning: reasons over time
- Rank fusion → Temporal reasoning: provides ranked evidence
- Search engine → Optional reranking: offers candidate results
- Temporal reasoning → Evidence results: returns evidence
- Rank fusion → Evidence results: returns rankings
- HTTP API → Submission workflow: validates and exports
- Evidence results → Review workspace: displays evidence
