Newer
Older
TelosDB / document / 05_sidecar_integration.md

サイドカー統合仕様書 (Sidecar Integration Specification)

1. コンセプト

本システムは、Tauri の Sidecar 機能を活用し、内蔵された llama-server バイナリを動的に制御することで、外部 LLM サービスに依存しないローカル嵌入環境を提供します。

2. Sidecar 管理仕様

2.1 実行バイナリ

  • 名称: llama-server (Windows x64 用サイドカー)
  • モデル: Gemma-3-270m-it-Q4_K_M.gguf
  • 依存拡張: sqlite-vec (vec0.dll)

2.2 DLL 供給体制 (Hermetic Build)

Windows 環境での実行を確実にするため、以下の自動化を行っています。

  1. 自動コピー: ビルド時 (build.rs) に、sqlite-vec の DLL を開発ノードから抽出し、実行ディレクトリ(および bin)へ自動配置します。
  2. 位置解決: Tauri の resource_dir 基点に、bin/ フォルダ内のモデルと、実行ルート直下の vec0.dll を動的にバインドします。

3. 推論エンジン設定 (llama-server)

起動時に以下のパラメータを指定します。

引数 説明
--model {path} モデルファイルへの絶対パス。
--port 8080 内部通信用。
--embedding (flag) 埋め込み生成 API を有効化。
--pooling mean ベクトル集約方式の指定(推奨設定)。

4. ライフサイクル

  1. Spawn: lib.rs 内でアプリ起動時に sidecar("llama-server") を呼び出し。
  2. Health Check: /health エンドポイントが running を返すまで待機。
  3. Inbound Notification: llama-server の Stdout/Stderr を Rust 側のロガーへパイプし、一元管理。
  4. Cleanup: アプリ終了時にチャイルドプロセスを Kill 処理。

5. 推論最適化

  • Vulkan 支援: 互換 DLL が存在する場合、自動的にハードウェア加速が適用されます。
  • ログ隔離: 生成時の一時的なノイズ(post_embedding 等)は、Rust 側でフィルタリングしてログの視認性を確保。