Newer
Older
TelosDB / docs / architecture.md

システムアーキテクチャ概要

本システムは、Tauri v2 を基盤とした常駐型デスクトップアプリケーションであり、ローカル LLM (Gemma 3) を活用したベクトル検索バックエンドを提供します。

全体コンポーネント構成

システムは大きく分けて「フロントエンド」「Rust バックエンド」「Sidecar (LLM サーバー)」の3つの層で構成されています。

graph TD
    subgraph "Frontend Layer (WebView2)"
        UI[React / HTML / JS]
    end

    subgraph "Rust Backend Layer (Tauri v2)"
        Core[Tauri Core]
        Axum[Axum SSE / MCP Server]
        SeaORM[SeaORM / DB Logic]
        LlamaClient[Llama Client / reqwest]
        SidecarMgr[Sidecar Process Manager]
    end

    subgraph "Sidecar Layer (External Process)"
        LS[llama-server.exe]
        Model[Gemma 3 300M GGUF]
    end

    subgraph "Data Layer"
        DB[(SQLite + sqlite-vec)]
    end

    UI <-->|Invoke / Events| Core
    Core <--> Axum
    Core <--> SeaORM
    Core <--> LlamaClient
    Core <--> SidecarMgr

    Axum <--> DB
    SeaORM <--> DB
    LlamaClient <-->|HTTP/JSON| LS
    SidecarMgr -->|Spawn / Lifecycle| LS
    LS -->|Load| Model

各コンポーネントの役割

1. Frontend Layer

  • User Interface: 状態表示、簡易的な検索インターフェースを提供。
  • IPC通心: invoke を通じて Rust 側のコマンドを呼び出し、システムの状態を取得または操作。

2. Rust Backend Layer

  • Tauri Core: アプリケーションのライフサイクル(起動、システムトレイ常駐、終了)を管理。
  • Axum (MCP Server): Model Context Protocol (MCP) に準拠した SSE サーバーを提供。外部エージェントからのリクエストを受付。
  • SeaORM: SQLite データベースへの型安全なアクセス。アイテムのメタデータ管理を担当。
  • Llama Client: llama-server と通信し、文章のベクトル化 (Embedding) やテキスト生成を依頼。
  • Sidecar Manager: llama-server プロセスの起動、環境変数パスの解決、DLL 依存関係の処理。

3. Sidecar Layer

  • llama-server: llama.cpp の HTTP サーバー版。Gemma 3 アーキテクチャをサポートし、Vulkan によるハードウェア加速を利用。
  • Gemma 3 300M: 埋め込み抽出に特化した軽量高精度モデル。

4. Data Layer

  • SQLite: メタデータの保存。
  • sqlite-vec: ベクトル演算拡張。vec0 仮想テーブルを用いた高速な ANN (Approximate Nearest Neighbor) 検索を提供。

技術スタックまとめ

カテゴリ 採用技術
Core Framework Tauri v2
Language Rust / JavaScript
Database SQLite (rusqlite)
ORM SeaORM
Vector Engine sqlite-vec (vec0)
LLM Engine llama.cpp (llama-server)
MCP Protocol Axum (SSE)
Model Gemma 3 300M