GridJapan Open source MIT v1.5.0
Google Drive の共有フォルダをセマンティック検索できるようにし、MCP(Model Context Protocol)経由で Claude Cowork / Claude Desktop / 任意の MCP クライアントから遠隔検索する。
GridJapan が自社の業務で日々運用している本番のソースを、そのまま MIT で公開しています。製品の販売ページではありません。
search 840ms — 条件: warm / AWS API Gateway 経由 / リランカー込み / RTX 4070 SUPER。測定条件と CPU との比較
できること
社内 Google Drive の資料(数万件)を横断的に検索し、別 PC の Claude Cowork から遠隔で呼び出すために構築したものです。
Index
Google Drive の共有フォルダ群を、構造認識チャンク+ベクトルで索引します。変更検知は Drive の Changes API で、有効化したドライブを 4 ワーカー並列で常時追跡します。
Search
PostgreSQL 17 + pgvector に格納し、BGE-m3 の cross-encoder で Top-K を並び替えます(ENABLE_RERANKER=1)。埋め込みは 768 次元。
Remote
Streamable HTTP + Basic Auth の MCP サーバーを公開し、別マシンの Claude Cowork / Claude Desktop / 任意の MCP クライアントから検索できます。クエリログ付き。
Operate
Web モニターと Electron ミニモニター、日次 7 + 週次 4 世代のバックアップ、品質を定量監視する Eval Suite。障害時はゾンビ GC と多重起動防止が効きます。
このページについて
WinServerRAG は、GridJapan が自社で日々運用している Windows 常駐 RAG サーバーのソースを MIT で公開したものです。このブランチのコードは、実際に業務で使っている本番のコピーです。
本ページは製品の販売ページではありません。構成・実測性能・セキュリティ設計を公開することと、同種の AI × 業務システム開発のご相談窓口を兼ねています。この 2 つを兼ねていることを、隠さずに書いておきます。
導入事例・価格・他製品との比較は掲載していません。手元にある事実は、自社運用の実物と、その測定値だけです。
構成
下の 2 枚は、運用中の管理画面のスクリーンショットです。
http://127.0.0.1:17600/)。GPU 利用率・worker カード・ドライブ一覧・MCP 検索設定タブを 1 画面に。FastAPI 上で動く SPA で、Mini Monitor と同じ /api/stats を裏で叩いています。
always-on-top の小窓(360×400)。デーモンの状態を常時見ておくためのものです。
sc query を 5 秒間隔で直接見るため、API が停止していても正しく表示されるfd_<drive_id>.documents/VECTOR(768)/mcp出典: README(アーキテクチャ図・画面の説明)
性能
同じクエリ・同じ DB で比較したものです。環境は RTX 4070 SUPER(12GB VRAM)。
| 項目 | CPU only(OMP=1) | GPU(RTX 4070 SUPER) | 改善倍率 |
|---|---|---|---|
| search warm | 3〜13 秒 | 840 ms | 4〜15 倍 |
| search cold | 23 秒 | 17.7 秒 | 1.3 倍 |
| フルビルド(221 files) | 6〜8 分 | 5 分 | 1.2〜1.6 倍 |
| GPU 使用率 ピーク | — | 78% | — |
| VRAM ピーク | — | 7 GB(12 GB 中) | — |
| 消費電力(推論中) | CPU 200W 級 | 122 W | — |
出典: docs/EVOLUTION.md Phase 4(同一クエリ・同一 DB での比較)。README 記載の warm search 840ms は、AWS API Gateway 経由・リランカー込み・RTX 4070 SUPER の条件です。
効いた場所
ビルドは Google Drive API(Sheets / Docs / PDF)の I/O が支配的で、埋め込みを GPU にしても待ち時間が大半を占めるため頭打ちになりました。一方、検索時のリランカー(BAAI/bge-reranker-v2-m3)は候補 50 件 × クエリのペアを cross-encoder に通す処理で、これが CPU で重い。ここが GPU で捌けるようになり、warm 検索が 3 秒台から 840ms になりました(上の表の warm 行と同じ測定。AWS API Gateway 経由・リランカー込み・RTX 4070 SUPER)。
原因
torch=2.11.0+cpu が入っており(pip の既定挙動)、torch.cuda.is_available() が False を返していました。物理 GPU は正常。cu124 ビルドに入れ替えたところ、_pick_device() が既に cuda.is_available() を見ていたためコード変更ゼロ、デーモン再起動だけで GPU に切り替わりました。
セキュリティ
管理者権限を要求するのはインストールの 1 回だけです。日常の運用に管理者権限は要りません。
1. インストール時
インストーラーが NSSM で 2 つのサービスを登録し、SDDL を設定し、ローカルグループ WinServerRAG Operators を作成します。
2. 日常運用
付与するのは SERVICE_QUERY_STATUS と SERVICE_START のみで、SERVICE_STOP は付与しません。一般ユーザーや全認証ユーザーは起動できません。
3. ミニモニター
Electron の通常権限(UAC 不要)で動き、SDDL 緩和済みサービスの起動のみ可能。install 系コマンドは一切実行しません。
認証・分離
API_BEARER_TOKEN を設定可。空の場合は localhost のみ耐障害性
pg_try_advisory_lock でプロセス跨ぎの排他制御出典: README(セキュリティ境界・耐障害性)
MCP
| tool | 引数 | 説明 |
|---|---|---|
list_drives | — | 検索スコープのドライブ一覧 |
search | query, n_results=10, owner? | セマンティック検索 |
lookup | url | 特定 Drive URL の全文取得 |
stats | — | インデックス統計 |
接続手順は MCP.md にあります。
| OS | Windows 11 |
|---|---|
| DB | PostgreSQL 17 + pgvector(Windows ネイティブ) |
| GPU | RTX 4070(CUDA 12.4) |
| Python | 3.12+ |
| Embedding | paraphrase-multilingual-mpnet-base-v2(768 次元) |
| Reranker | BGE-m3 cross-encoder(BAAI/bge-reranker-v2-m3) |
| 管理 API | 127.0.0.1:17600 |
| ワーカー数 | 既定 4(DAEMON_WORKER_THREADS、UI から 1〜10 に変更可) |
導入手順は README のクイックスタートを参照してください。インストーラーは GridWorldOrganization/GridWorldRAG の Releases で配布しています。
開発の相談
GridJapan は日本の小さなエンジニアリングショップです。このページで公開しているようなシステムを含め、以下のようなテーマでご相談を歓迎します。