Files
momentry_core/docs/RELEASE_PHASES.md
Accusys 3a4fd4136d docs: wiki vs RAG distinction in model lifecycle
wiki is not traditional RAG:
- RAG: ephemeral query-time augmentation
- Wiki: permanent model corrections, versioned, packaged with model
- Edits accumulate across versions as ground truth
2026-05-09 14:28:47 +08:00

7.9 KiB
Raw Blame History

Momentry Model — 分階段交付

核心架構

Pipeline (training)
  │  每個 processor 產出 .json
  │  Rule 1/3 Ingestion → chunks + embeddings
  ▼
momentry model for {video}      ← 每部影片 = 一個 model
  │  release/phase1/latest/
  │  release/phase2/latest/
  ▼
momentry core (inference engine)  ← Rust API server
  │  momentry_playground (dev)
  │  momentry (production)
  ▼
Search / Query / Identity APIs
  • Pipeline = training phase影片 → processor output → chunks → embeddings
  • Model = 每部影片的產出 packageoutput_json + chunks + vectors
  • Engine = momentry core吃 model 提供 APIsearch, trace, identity

每個影片可有多個 model 版本,命名保留升級空間:

Model 版本 Qdrant Collection 內容 觸發時機
{uuid}_v1 momentry_dev_v1 sentence chunk embeddingbase ASR + ASRX + Rule 1 完成
{uuid}_v2 momentry_dev_v2 完整 pipeline + 5W1H 全部完成
{uuid}_v3 momentry_dev_v3 object identity + custom detector v2 + object instance matching 完成

各版本共存不覆蓋。

階段劃分

Phase 1Sentence Chunk Embeddingbase model

觸發時機: ASR + ASRX 完成 + Rule 1 Ingestion + vectorize 完成

交付內容:

  • {uuid}.asr.json
  • {uuid}.asrx.json
  • chunkschunk_type = 'sentence'
  • chunk_vectorssentence embedding

用途: 終端使用者可進行語意搜尋

Phase 2完整 Pipelinev2 model

觸發時機: 全部 processor 完成 + Rule 3 Ingestion + 5W1H Agent

交付內容:

  • Phase 1 全部內容
  • 所有 {uuid}.*.jsoncut, yolo, face, pose, ocr, ...
  • chunkschunk_type = 'cut', 'visual', 'trace', 'story'
  • chunk_vectorssummary embedding
  • identities / identity_bindings / face_detections

用途: 完整搜尋 + 摘要 + 人物識別


Worker Pipeline

ASR 完成 → ASRX 完成
  ↓
Rule 1 Ingestion (sentence chunks)
  ↓
vectorize_chunks (sentence embedding)
  ↓
📦 Phase 1 release  ───→ release/phase1/latest/  (base model)
  ↓
其他 processors 繼續 (yolo, face, pose, ocr, ...)
  ↓
Rule 3 Ingestion + 5W1H Agent
  ↓
📦 Phase 2 release  ───→ release/phase2/latest/  (full model)

產出目錄結構

release/
├── phase1/
│   ├── {version}_{timestamp}/
│   │   ├── output_json/      ← 所有已完成的 .json
│   │   ├── chunks.csv        ← sentence chunks
│   │   ├── vectors.csv       ← sentence embeddings
│   │   ├── schema.sql        ← chunks table DDL
│   │   └── RELEASE_INFO.txt
│   └── latest → {version}_{timestamp}
│
└── phase2/
    ├── {version}_{timestamp}/
    │   ├── output_json/      ← 所有 .json
    │   ├── chunks.csv        ← 所有 chunks
    │   ├── vectors.csv       ← 所有 embeddings
    │   ├── identities.csv    ← 人物身分
    │   ├── schema.sql        ← 完整 schema
    │   └── RELEASE_INFO.txt
    └── latest → {version}_{timestamp}

momentry model vs momentry core

momentry model momentry core
類比 訓練好的 weights inference engine
內容 .json + chunks + vectors Rust binary
生命週期 每部影片產出一個 一個 binary 服務所有影片
版本 {uuid}_v1base / {uuid}_v2 / {uuid}_v3 momentry_playground / momentry
交付對象 終端使用者 部署工程師

Wiki 機制:每個 model 都可被調整

每個 momentry model{uuid}_v1 / v2 / v3)不只是唯讀的產出,而是可透過 wiki 機制持續改善。

與傳統 RAG 的區別

傳統 RAG momentry wiki
知識儲存 vector DBephemeral model packagepermanent
修正方式 query 時 LLM 決定是否採用 使用者/Agent 直接編輯
修正持久性 下次 query 就消失 寫入 model版本化保存
模型改進 無(僅改變 prompt 下次 version bump 時合併為 ground truth
協作方式 單向retrieve → generate 雙向(編輯 → 合併 → 改進)
離線可用 需 vector DB + LLM 離線查閱 wiki 目錄

momentry wiki 不是 RAG 的替代品,而是 model 的生命週期管理機制。

概念

momentry model (release package)
  ├── output_json/          ← 唯讀processor 產出
  ├── chunks.csv            ← 唯讀ingestion 產出
  ├── vectors.csv           ← 唯讀embedding 產出
  └── wiki/                 ← 可編輯,使用者貢獻知識
        ├── identities.json   ← "trace 5 = Audrey Hepburn"
        ├── objects.json      ← "object 42 = 郵票 #1"
        ├── corrections.json  ← "ASR 'Hello' → 'Halo'"
        └── changelog.json    ← 編輯歷史

資料流向

使用者/Agent 編輯 wiki
        ↓
  DB wiki_entries + wiki_revisions 寫入
        ↓
  下次 release 打包時 merge 進 model
        ↓
  TKG label 更新 (tkg_nodes.label)
        ↓
  新版 model version bump

與 TKG 的關係

wiki 的 identity 和 object 標註會回寫到 TKG node label

(face_trace:5) label="Audrey Hepburn"     ← wiki 編輯
(object_instance:42) label="郵票 #1"       ← wiki 編輯

這些編輯累積後,可做為下一版 model training 的 ground truth。

實作方向

DB 層 — 新 table wiki_entries + wiki_revisions

wiki_entries (target_type, target_id, title, body, summary, status, version, file_uuid)
wiki_revisions (entry_id, version, title, body, summary, change_summary, edited_by)

API 層 — CRUD + 版本歷史:

GET    /api/v1/wiki/{target_type}/{target_id}
PUT    /api/v1/wiki/{target_type}/{target_id}
GET    /api/v1/wiki/{target_type}/{target_id}/revisions
POST   /api/v1/wiki/search

打包層release_pack.py 加入 wiki 匯出,與 model 共存


Phase 3Object Identityv3 model

目標

從影片中提取關鍵物體(郵票、手槍、信封、放大鏡...),對同類物體做 instance-level 的跨畫面追蹤與辨識,達到類似 face trace 的效果 — 不只是 detect class還能區分「這一張郵票」vs「那一張郵票」。

現狀問題

  1. COCO 80 類不包含關鍵物體 — 郵票、手槍、信封、放大鏡等不在 COCO 資料集中
  2. YOLOv5nano 偵測率低 — 即使是 COCO 類別knife, cell phone在 nano 模型上 recall 不足
  3. 無 object instance matching — 目前只有 frame-level detection沒有跨 frame 的物體追蹤

技術方向

YOLOv8m/OWL-ViT → 改善 detection coverage
        ↓
 Object Tracker (IoU + embedding類似 face tracker)
        ↓
 object_trace → TKG CO_OCCURS_WITH edges
        ↓
 object identity → 同物體跨場景辨識
方向 方法 效果
Model upgrade yolov5nuyolov8s.pt / yolov8m.pt COCO recall 提升
Custom fine-tune 收集 stamps/guns 資料 fine-tune YOLO 可偵測非 COCO 物件
Zero-shot OWL-ViT / Grounding DINO by text prompt 不用 training但速度慢
Object trace IoU + embedding 跨 frame 匹配 instance-level 追蹤
Object identity clustering 跨場景辨識同一物體 可在全片搜尋「這把槍」

與 TKG 整合

face_trace -[:CO_OCCURS_WITH]-> object_instance:5  (這把槍)
face_trace -[:CO_OCCURS_WITH]-> object_instance:42 (這張郵票)

查詢: "Audrey Hepburn 拿這把槍的畫面"
→ face_trace:5 -[:SPEAKS_AS]-> SPEAKER_0
→ face_trace:5 -[:CO_OCCURS_WITH]-> object_instance:5

交付順序

  1. YOLO model upgrade低難度立即見效
  2. Object tracker中難度參考 face tracker 實作)
  3. Custom fine-tune / zero-shot高難度需資料或新模型