diff --git a/README.md b/README.md index 1508271..453ae7b 100644 --- a/README.md +++ b/README.md @@ -8,72 +8,38 @@ ## 📝 イントロダクション -Model Context Protocol (MCP) に準拠した、ローカル実行用のベクトル検索サーバーです。以前の設計から Tauri v2 および Rust をベースにした構成に整理しました。 +Model Context Protocol (MCP) に準拠した、ローカル実行用のベクトル検索サーバーです。Tauri v2 および Rust をベースに構築されています。 -Gemma 3 300M Embedding モデルや `llama-server` をサイドカー(外部プロセス)として利用することで、外部ネットワークに依存せず、ローカル環境のみでテキストのベクトル化と検索を行うことができます。 +Gemma 3 300M Embedding モデルや `llama-server` をサイドカーとして利用することで、外部ネットワークに依存せず、ローカル環境のみでテキストのベクトル化と検索を行うことができます。 --- ## ✨ 主な機能 -### 1. Tauri v2 + Rust による軽量な基盤 - -- バックエンドを Rust で構築しており、OS 標準の WebView を利用するため、アプリケーションの実行サイズとメモリ使用量を低減しています。 -- システムトレイに常駐し、バックグラウンドで動作し続けることが可能です。 - -### 2. SQLite + sqlite-vec 拡張による統合データ探索 - -- リレーショナルデータとベクトルデータを一つの SQLite ファイルで管理できます。 -- `sqlite-vec` を利用した高速なベクトル近傍検索(`MATCH` 演算子)に対応しています。 - -### 3. MCP (Model Context Protocol) 準拠 - -- SSE (Server-Sent Events) をベースにした MCP プロトコルを実装しており、Claude Desktop などの外部エージェントからツールとして呼び出すことができます。 - -### 4. Sidecar 方式による内蔵 LLM サーバー - -- `llama.cpp` の `llama-server` をアプリケーション内に内蔵(Sidecar)しています。 -- 外部 API に依存せず、ローカル環境のみでテキストのベクトル変換(Embedding)や文章生成(Completion)を行えます。 - -### 5. 自動化されたデータ管理 - -- SeaORM を採用し、データベーススキーマの型安全な操作を実現しています。 -- `created_at` や `updated_at` の自動付与、トリガーによる更新日時の管理、WAL モードの有効化などを内部で自動処理します。 - -### 6. 運用・診断機能 - -- `tauri-plugin-log` を利用したログ記録(標準出力、および OS 標準のログディレクトリへの出力)。 -- ログファイルのサイズローテーション(10MB × 5世代)に対応しています。 - -### 8. ステータス可視化 - -- UIヘッダーにて、サイドカープロセス (`llama-server`) の稼働状況(Running/Stopped)をリアルタイムに確認できます。 -- MCPクライアントの接続数やデータベースのアイテム数も表示されます。 - -### 7. 簡略化された開発環境構築 - -- `bun setup` を実行するだけで、必要なサイドカーバイナリや LLM モデルを自動的に収集・配置します。 -- 環境変数を `.env` ファイルで柔軟にカスタマイズ可能です。 +1. **Tauri v2 + Rust**: 軽量で高速なバックエンド基盤。 +2. **SQLite + sqlite-vec**: リレーショナルデータとベクトルデータの一元管理。 +3. **MCP 準拠**: SSE プロトコルにより、外部エージェント(Claude 等)からのツール呼び出しに対応。 +4. **Sidecar LLM**: `llama-server` を内蔵し、オフラインでのテキスト処理が可能。 +5. **SeaORM**: 型安全なデータベース操作。 +6. **運用支援**: 詳細なログ記録とステータス可視化。 --- ## 📁 ディレクトリ構成 -プロジェクトの役割に応じて、以下のようにディレクトリを整理しています。 - ```text . +├── .agent/ # エージェント用ルール・ドキュメント ├── bin/ # 外部バイナリ (llama-server等) ├── data/ # データベースファイル (vector.db) ├── document/ # 仕様・設計ドキュメント -├── journals/ # 開発記録 -├── logs/ # 開発用ログ -├── resources/ # アイコン等のアセット -├── scripts/ # 各種ユーティリティ +├── journals/ # 開発記録 (Git管理外) +├── logs/ # アプリケーションログ +├── resources/ # アセット類 +├── scripts/ # ユーティリティスクリプト (analyze_nesting, count_lines等) ├── src/ │ ├── backend/ # Rust / Tauri バックエンド -│ └── frontend/ # Webview 用 UI -├── target/ # ビルド成果物 +│ └── frontend/ # Webview UI └── test/ # テストコード ``` @@ -81,8 +47,6 @@ ## 🏗️ システム構造 -本システムは、高い分離性と連携性を両立したアーキテクチャを採用しています。詳細な設計については [document/architecture.md](document/architecture.md) を参照してください。 - ```mermaid graph TD subgraph "Frontend Layer (WebView2)" @@ -92,9 +56,9 @@ subgraph "Tauri Backend Layer (Rust)" Axum["MCP Server (SSE/JSON-RPC)"] Tray["System Tray Manager"] - Sidecar["Sidecar Manager (tokio::process)"] + Sidecar["Sidecar Manager"] ORM["SeaORM Layer"] - Llama["Llama API Client (reqwest)"] + Llama["Llama API Client"] end subgraph "External Process Layer" @@ -106,95 +70,36 @@ Model["Gemma 3 300M (GGUF)"] end - UI <-->|Tauri Commands| Tray + UI <--> Axum Axum <--> ORM ORM <--> DB - Llama <-->|HTTP/JSON| LS - Sidecar -->|Process Control| LS - LS -->|Memory Map| Model + Llama <--> LS + Sidecar --> LS + LS --> Model ``` --- -## 🚀 クイックスタート - -### 1. セットアップ - -プロジェクトの実行に必要なアセットを一括で準備します。環境構築の詳細は [document/development_guide.md](document/development_guide.md) に記載されています。 +## 🚀 セットアップ ```bash bun install bun setup -``` - -**`bun setup` の実行内容:** - -### 2. LM Studio への統合 (オプション) - -LM Studio の `mcp.json` エディタを開き、以下の SSE エンドポイントを追加します。これにより、常駐しているバックエンドサーバーと直接通信が可能になります。 - -```json -{ - "mcpServers": { - "sqlite-vector": { - "url": "http://127.0.0.1:3000/sse" - } - } -} -``` - -設定後、LM Studio を再起動するかプラグインをロードしてください。 - -### 3. 実行 - -```bash bun dev ``` -または、`launch.cmd` を実行しても起動できます。 - ---- +詳細は [document/development_guide.md](document/development_guide.md) を参照してください。 --- ## 🛠️ MCP ツール -利用可能なツールとプロトコルの詳細は [document/mcp_specification.md](document/mcp_specification.md) を参照してください。 - | ツール名 | 用途 | | :--- | :--- | -| `add_item_text` | 文書の追加とベクトル化 | -| `search_text` | 文書の類似検索 | -| `add_item` | ベクトル指定での追加 | -| `search_vector` | ベクトル検索 | +| `save_document` | 文書の追加とベクトル化 | +| `find_documents` | 文書の類似検索 | | `llm_generate` | テキスト生成 | - ---- - -## 📘 詳細ドキュメント - -`document/` フォルダには、システムの理解を深めるための詳細な資料を整備しています。 - -- **[📖 アーキテクチャ詳細](document/architecture.md)**: 内部モジュールの責務、データフロー、ディレクトリ設計の解説。 -- **[⚙️ サイドカー統合](document/sidecar_integration.md)**: `llama.cpp` の外部プロセス実行、DLL の探索パス解決、Vulkan 対応についての詳細。 -- **[🗄️ データベース設計](document/database.md)**: スキーマ定義、`sqlite-vec` による仮想テーブル、自動更新トリガーの仕組み。 -- **[💻 開発ガイド](document/development_guide.md)**: 新機能追加の手順、テストの実行方法、リリースフロー。 -- **[🔗 MCP 仕様](document/mcp_specification.md)**: 提供するツールの詳細なスキーマ定義。 - ---- - -## 🛠️ メンテナンス - -### リリース作業 - -本プロジェクトには、バージョンアップとブランチ作成を自動化するスクリプトが用意されています。 - -```bash -# 例: バージョン 0.2.0 をリリースする場合 -bun run release 0.2.0 -``` - -このコマンドにより、リリースブランチの作成、各設定ファイルのバージョン更新、およびコミットが自動で行われます。詳細は [開発ガイド](document/development_guide.md) を参照してください。 +| ... | (詳細は `mcp_specification.md` 参照) | ---