- Fix markdown lint issues (MD030, MD047, MD051, MD028, MD005) - Update AI agents, architecture, implementation docs - Add new identity, face recognition, and API documentation - Remove deprecated face/person API guides
17 KiB
17 KiB
document_type, service, title, date, version, status, owner, created_by, tags, ai_query_hints
| document_type | service | title | date | version | status | owner | created_by | tags | ai_query_hints | ||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| architecture_design | MOMENTRY_CORE | Momentry Core 架構總覽 | 2026-04-22 | V1.0 | active | Warren | OpenCode |
|
|
Momentry Core 架構總覽
| 項目 | 內容 |
|---|---|
| 建立者 | OpenCode |
| 建立時間 | 2026-04-22 |
| 文件版本 | V1.2 |
| 最後更新 | 2026-04-22 |
版本歷史
| 版本 | 日期 | 目的 | 操作人 | 工具/模型 |
|---|---|---|---|---|
| V1.1 | 2026-04-22 | 更新文檔索引,整合新文檔 | OpenCode | OpenCode / deepseek-v3.2 |
| V1.0 | 2026-04-22 | 創建架構總覽文件 | OpenCode | OpenCode / Qwen3.6-Plus |
1. 系統概覽
Momentry Core 是一個基於 Rust 的數字資產管理系統,專注於視頻分析與多模態檢索能力。系統結合了語音識別(ASR/ASRX)、人臉識別(Face Recognition)、物體檢測(YOLO)、場景分類(Places365)等多種 AI 模型,實現全面的視頻內容理解。
核心設計理念
- 邊緣 AI 優先:在本地設備上運行,減少雲端依賴
- 多模態融合:結合視覺、聽覺、文本等多種信號
- 層級分片架構:將連續視頻轉化為結構化知識單元
- 實時處理能力:支持 on-the-fly 處理,縮短等待時間
2. 整體架構圖
┌─────────────────────────────────────────────────────────────────────────┐
│ Momentry Core Architecture │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ API Layer (Axum) │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ Core Business Logic │ │
│ │ ┌────────────┐ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ │
│ │ │ Chunking │ │Processor │ │Text │ │Embedding │ │ │
│ │ │ Engine │ │Registry │ │Processing │ │Engine │ │ │
│ │ └────────────┘ └────────────┘ └────────────┘ └────────────┘ │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ Data Access Layer │ │
│ │ ┌────────────┐ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ │
│ │ │PostgreSQL │ │Redis │ │MongoDB │ │Qdrant │ │ │
│ │ │(Primary) │ │(Cache) │ │(Cache) │ │(Vectors) │ │ │
│ │ └────────────┘ └────────────┘ └────────────┘ └────────────┘ │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ External Tool Integration │ │
│ │ ┌────────────┐ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ │
│ │ │Python │ │FFmpeg/ │ │WhisperX │ │InsightFace │ │ │
│ │ │Scripts │ │FFprobe │ │(ASR) │ │(Face) │ │ │
│ │ └────────────┘ └────────────┘ └────────────┘ └────────────┘ │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────┘
3. 核心模塊
3.1 API 層 (src/api/)
- 技術棧: Axum + Tower + Serde
- 功能: RESTful API 接口,支持同步/異步處理
- 關鍵文件:
server.rs: 主 API 服務器search.rs: 搜索相關 APIface_recognition.rs: 人臉識別 APIperson_identity.rs: 人物身份管理 API
3.2 核心業務邏輯 (src/core/)
- 分片引擎 (
chunk/): 視頻分片與知識萃取 - 處理器註冊表 (
processor/): AI 模型執行管理 - 文本處理 (
text/): 同義詞擴展、分詞 - 嵌入引擎: 語義向量生成
3.3 數據訪問層 (src/core/db/)
- PostgreSQL: 主數據存儲,關係型數據
- Redis: 緩存和隊列管理
- MongoDB: 文檔緩存
- Qdrant: 向量數據庫,語義搜索
3.4 外部工具集成 (scripts/)
- Python 腳本: ASR、Face、YOLO、OCR、Scene 等處理器
- FFmpeg/FFprobe: 視頻處理與元數據提取
- AI 模型: WhisperX、InsightFace、YOLOv8 等
4. 數據流架構
4.1 視頻註冊流程
1. 用戶上傳視頻 → 2. 生成 UUID → 3. 提取元數據 (FFprobe)
→ 4. 存入 PostgreSQL → 5. 觸發處理任務 → 6. 返回響應
4.2 分片處理流程
1. 原始視頻 → 2. 各處理器執行 (ASR, Face, YOLO, Scene)
→ 3. 生成 Pre-Chunk 數據 → 4. 應用分片規則 (Rule 1-4)
→ 5. 存入對應數據表 → 6. 向量化並存入 Qdrant
4.3 搜索查詢流程
1. 用戶查詢 → 2. 同義詞擴展 → 3. BM25 文本搜索
→ 4. 向量語義搜索 → 5. 結果融合排序 → 6. 返回檢索結果
5. 技術棧
5.1 後端 (Rust)
- Web 框架: Axum + Tower
- 異步運行時: Tokio (full features)
- 序列化: Serde + Serde JSON
- 數據庫驅動: SQLx, Redis 1.0.x, MongoDB, Qdrant-client
- 錯誤處理: Anyhow + Thiserror
- 日誌: Tracing + Tracing-subscriber
5.2 數據存儲
- 主數據庫: PostgreSQL (SQLx)
- 緩存: Redis 1.0.x + MongoDB
- 向量數據庫: Qdrant
- 文件存儲: SFTPGo
5.3 AI 模型
- 語音識別: WhisperX (Python)
- 人臉識別: InsightFace (Python)
- 物體檢測: YOLOv8 (Python)
- 場景分類: Places365 (Python)
- 語義嵌入: Nomic-embed-text-v2-moe (Ollama)
- 文本生成: Gemma4 (llama.cpp)
5.4 基礎設施
- 反向代理: Caddy
- CI/CD: GitHub Actions
- 監控: 自定義指標 + 日誌聚合
- 配置管理: 環境變量 + 配置文件
6. 實現狀態
6.1 分片規則實現狀態
基於詳細的設計與實現差異分析(參見 DESIGN_IMPLEMENTATION_GAP.md):
| 分片規則 | 設計概念 | 實現狀態 | 實現對應 | 完成度 |
|---|---|---|---|---|
| Rule 1 | 句子級分片 (sentence) |
✅ 完整實現 | ChunkType::Sentence |
95% |
| Rule 2 | 視覺物件級分片 (visual) |
❌ 未實現 | 無對應實現 | 0% |
| Rule 3 | 場景級分片 (scene) |
⚠️ 部分實現 | ChunkType::Cut |
60% |
| Rule 4 | 摘要級分片 (summary) |
⚠️ 概念調整 | ChunkType::Story |
40% |
| 附加規則 | 時間基準分片 (time) |
✅ 完整實現 | ChunkType::TimeBased |
100% |
| 附加規則 | 軌跡追蹤分片 (trace) |
✅ 完整實現 | ChunkType::Trace |
100% |
6.2 核心功能實現狀態
| 功能模塊 | 實現狀態 | 備註 |
|---|---|---|
| 視頻註冊 | ✅ 完整實現 | 支持多種視頻格式 |
| ASR 處理 | ✅ 完整實現 | WhisperX 集成 |
| OCR 處理 | ✅ 完整實現 | GPU 加速支持 |
| 人臉識別 | ✅ 完整實現 | InsightFace 集成 |
| YOLO 檢測 | ✅ 完整實現 | 物件檢測與分類 |
| 場景分類 | ✅ 完整實現 | Places365 模型 |
| 向量搜索 | ✅ 完整實現 | Qdrant 集成 |
| 同義詞擴展 | ✅ 完整實現 | 在線+離線模式 |
6.3 近期開發重點
- 設計與實現一致性:統一術語,更新文檔
- 視覺分片框架:實現 Rule 2 基礎功能
- 場景語義增強:改進 Rule 3 質量
- LLM 集成:為 Rule 4 添加摘要生成
7. 部署架構
6.1 本地部署 (當前)
┌─────────────────────────────────────────┐
│ macOS (M4 Mac Mini) │
│ │
│ ┌────────────┐ ┌────────────┐ │
│ │ Momentry │ │ Redis │ │
│ │ Core │ │ │ │
│ │ (Rust) │ │ │ │
│ └────────────┘ └────────────┘ │
│ │
│ ┌────────────┐ ┌────────────┐ │
│ │ PostgreSQL │ │ Python │ │
│ │ │ │ Scripts │ │
│ │ │ │ │ │
│ └────────────┘ └────────────┘ │
└─────────────────────────────────────────┘
6.2 未來擴展架構
┌─────────────────────────────────────────────────────┐
│ Momentry Platform │
│ │
│ ┌─────────────────────────────────────────────┐ │
│ │ Core API Server │ │
│ │ (Load Balancer + Service Discovery) │ │
│ └─────────────────────────────────────────────┘ │
│ │ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ Worker Node │ │ Worker Node │ │ Worker Node │ │
│ │ (ASR) │ │ (Face) │ │ (YOLO) │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
│ │
│ ┌─────────────────────────────────────────────┐ │
│ │ Data Storage Cluster │ │
│ │ PostgreSQL | Redis | Qdrant | Object Store │ │
│ └─────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────┘
8. 擴展性設計
8.1 水平擴展
- 無狀態 API 服務器: 可通過負載均衡器擴展
- 處理器工作節點: 可動態添加/移除 AI 處理節點
- 數據庫分片: PostgreSQL 可配置讀寫分離
8.2 垂直擴展
- GPU 加速: 支持多種 AI 模型的 GPU 加速
- 內存優化: 支持大內存配置的視頻處理
- 存儲擴展: 支持 TB 級視頻文件存儲
8.3 模塊化設計
- 插件化處理器: 可熱插拔 AI 模型
- 可替換組件: 數據庫、緩存、向量存儲可替換
- API 擴展: 可添加新的 API 端點而不影響現有功能
9. 相關文件索引
8.1 核心架構文檔
| 文件 | 描述 | 位置 | 狀態 |
|---|---|---|---|
| ARCHITECTURE_OVERVIEW.md | 架構總覽 | ARCHITECTURE/ |
✅ 最新版 |
| ARCHITECTURE_ROADMAP.md | 架構發展路線圖 | ARCHITECTURE/ |
✅ 最新版 |
| TECHNICAL_DECISION_RECORDS.md | 技術決策記錄 | ARCHITECTURE/ |
✅ 最新版 |
| DESIGN_IMPLEMENTATION_GAP.md | 設計與實現差異分析 | ARCHITECTURE/ |
✅ 最新版 |
| ARCHITECTURE_DOCUMENTATION_MAP.md | 文檔關係圖與導航 | ARCHITECTURE/ |
✅ 最新版 |
8.2 功能專題文檔
| 文件 | 描述 | 位置 | 狀態 |
|---|---|---|---|
| CHUNKING_ARCHITECTURE.md | 分片架構總綱 | ARCHITECTURE/chunking/ |
🔄 部分更新 |
| CHUNK_RULE_1_SENTENCE.md | Rule 1: 句子級檢索 | ARCHITECTURE/chunking/ |
✅ 最新版 |
| CHUNK_RULE_2_VISUAL.md | Rule 2: 視覺物件級檢索 | ARCHITECTURE/chunking/ |
📋 設計階段 |
| CHUNK_RULE_3_SCENE.md | Rule 3: 場景級檢索 | ARCHITECTURE/chunking/ |
🔄 部分實現 |
| CHUNK_RULE_4_SUMMARY.md | Rule 4: 摘要級檢索 | ARCHITECTURE/chunking/ |
🔄 概念調整 |
8.3 質量與安全文檔
| 文件 | 描述 | 位置 | 狀態 |
|---|---|---|---|
| PERFORMANCE_AND_SCALABILITY.md | 效能與可擴展性架構 | ARCHITECTURE/ |
✅ 最新版 |
| SECURITY_ARCHITECTURE.md | 安全架構設計 | ARCHITECTURE/ |
✅ 最新版 |
| MONITORING_ARCHITECTURE.md | 監控架構設計 | ARCHITECTURE/ |
✅ 最新版 |
| API_KEY_ARCHITECTURE.md | API Key 管理系統 | ARCHITECTURE/ |
✅ 最新版 |
8.4 服務與處理器文檔
| 文件 | 描述 | 位置 | 狀態 |
|---|---|---|---|
| SERVICE_REGISTRY_ARCHITECTURE.md | 服務資源管理架構 | ARCHITECTURE/ |
✅ 最新版 |
| PROCESSOR_REGISTRY_ARCHITECTURE.md | 處理器資源管理架構 | ARCHITECTURE/ |
✅ 最新版 |
| PROCESSOR_LIFECYCLE.md | 處理器生命週期管理 | ARCHITECTURE/ |
✅ 最新版 |
| PROCESSING_PIPELINE.md | 處理流程文檔 | ARCHITECTURE/ |
✅ 最新版 |
| MODULE_STANDARDIZATION_IMPLEMENTATION_PLAN.md | 模塊標準化計劃 | ARCHITECTURE/ |
✅ 最新版 |
| 新增文件 | |||
| TERMINOLOGY_MAPPING.md | 術語對照表 | ARCHITECTURE/ |
✅ 最新版 |
| DESIGN_IMPLEMENTATION_GAP.md | 設計與實現差異分析 | ARCHITECTURE/ |
✅ 最新版 |
| ARCHITECTURE_DECISION_EXECUTION_PLAN.md | 架構決策執行計劃 | ARCHITECTURE/ |
✅ 最新版 |
| PERFORMANCE_AND_SCALABILITY.md | 效能與可擴展性架構 | ARCHITECTURE/ |
✅ 最新版 |
| SECURITY_ARCHITECTURE.md | 安全架構設計 | ARCHITECTURE/ |
✅ 最新版 |
| MONITORING_ARCHITECTURE.md | 監控架構設計 | ARCHITECTURE/ |
✅ 最新版 |
10. 更新記錄
| 日期 | 版本 | 變更內容 | 操作人 |
|---|---|---|---|
| 2026-04-22 | V1.2 | 術語標準化:添加術語對照表索引 | OpenCode |
| 2026-04-22 | V1.1 | 更新文檔索引,添加新創建的架構文檔 | OpenCode |
| 2026-04-22 | V1.0 | 創建架構總覽文件 | OpenCode |
最後更新: 2026-04-22 (V1.2)