diff --git a/README.md b/README.md index f7169cf..632ec8d 100644 --- a/README.md +++ b/README.md @@ -6,14 +6,16 @@ ## 概要 このプロジェクトは、元々 Electron + Bun で構成されていた `sqlitevector` アプリケーションを、パフォーマンスとリソース効率を最大化するために **Tauri + Rust** へ完全に移植したものです。バックエンドには型安全な **SeaORM** を採用し、データベース操作の堅牢性を高めています。 +さらに、**Gemma 3 300M Embedding** モデルのフルサポートと、`llama-server` の **Sidecar 統合** により、別途サーバーを立てることなくスタンドアロンで動作するようになりました。 ## 特徴 - 🎯 **常駐型デザイン**: システムトレイに格納され、最小限のメモリで MCP サーバーとして動作。 - 🔍 **ベクトル検索**: `sqlite-vec` を Rust からネイティブ操作し、高速な近傍検索(MATCH 句)を実現。 -- 🧠 **LLM 統合**: `llama.cpp` サーバーと連携し、Embedding 取得やテキスト補完をバックエンドで完結。 +- 🤖 **内蔵 LLM サーバー (Sidecar)**: アプリ起動時に `llama-server` を自動起動。Gemma 3 300M モデルを標準サポート。 +- 🧠 **高度な Embedding**: Gemma 3 による高精度なベクトル変換をローカル環境で完結。 - 🛠 **SeaORM**: 型安全なクエリビルダにより、複雑なデータベース操作を確実に実行。 -- 🚀 **開発体験**: `bun` と `tauri` CLI による、シンプルかつ高速なビルドフロー。 +- 🚀 **ワンバイナリ体験**: DLL やバイナリ、モデルを含んだポータブルな配布が可能。 ## システムアーキテクチャ @@ -29,10 +31,12 @@ DB[(SQLite + SeaORM)] VEC[sqlite-vec Extension] LLM[Llama Client: reqwest] + SC[Manage Sidecar Process] end - subgraph "External Resources" - llama[llama.cpp Server] + subgraph "Sidecar" + llama[llama-server.exe] + Model[Gemma 3 300M GGUF] end UI <--> CMD @@ -40,6 +44,8 @@ DB <--> VEC DB <--> LLM LLM <--> llama + SC -->|Spawn| llama + llama -->|Load| Model ``` ## フォルダ構成 @@ -49,14 +55,18 @@ ├── src/ │ └── frontend/ # UI 資産 (HTML/JS/CSS) ├── src-tauri/ +│ ├── bin/ # Sidecar バイナリ (llama-server) +│ ├── resources/ # 依存 DLL 等 │ ├── src/ │ │ ├── entities/ # SeaORM エンティティ定義 │ │ ├── db.rs # データベース接続・初期化 │ │ ├── llama.rs # LLM (llama.cpp) クライアント │ │ ├── mcp.rs # MCP SSE ハンドラー実装 -│ │ └── lib.rs # エントリーポイント・Tauri 設定 +│ │ └── lib.rs # エントリーポイント・Sidecar 制御ロジック │ ├── tests/ # 統合テスト │ └── Cargo.toml # Rust 依存関係 +├── models/ # LLM モデル (Gemma 3 等) +├── scripts/ # セットアップスクリプト ├── journals/ # 開発記録 └── package.json # Node.js/Bun 設定 ``` @@ -67,32 +77,39 @@ - [Rust](https://www.rust-lang.org/) - [Bun](https://bun.sh/) -- [llama.cpp](https://github.com/ggerganov/llama.cpp) (サーバーモードで起動していること) -### 開発・起動 +### 1. 依存バイナリとモデルのセットアップ -1. **パッケージのインストール** +以下のスクリプトを実行して、`llama-server` バイナリと Gemma 3 モデルを自動ダウンロードします。 - ```bash - bun install - ``` +```powershell +# llama-server (Vulkan 1.3サポート) のダウンロード +pwsh -File scripts/setup-llama-server-vulkan.ps1 -2. **開発サーバーの起動** +# Gemma 3 300M モデルのダウンロード +pwsh -File scripts/setup-model.ps1 +``` - ```bash - bun tauri dev - ``` +### 2. 開発・起動 -3. **テストの実行** +```bash +# パッケージのインストール +bun install - ```bash - cd src-tauri - cargo test --lib - ``` +# 開発サーバーの起動 (Sidecar も自動起動します) +bun tauri dev +``` + +## 統合テスト + +```bash +cd src-tauri +cargo test --lib +``` ## ビルド -リリース用バイナリ (EXE/MSI) を生成します。 +リリース用バイナリ (EXE/MSI) を生成します。DLL や Sidecar バイナリも自動的にバンドルされます。 ```bash bun tauri build