概要
- RAGの限界と、複数ページにまたがる情報検索の課題
- 仮想ファイルシステム「ChromaFs」による高速・低コストな解決策
- just-bashとChromaDBを活用したUNIXコマンドの仮想化
- 柔軟なアクセス制御(RBAC)とキャッシュによる効率化
- 実運用での大規模なコスト削減と即時性の実現
RAGの課題と仮想ファイルシステムへの転換
- RAG はクエリに一致するテキスト断片しか取得できず、 複数ページにまたがる回答 や 正確な構文検索 に弱点
- ユーザーがコードベースを探索するように、 エージェントがドキュメントを横断的に探索 する必要性
- grep, cat, ls, find などのUNIXコマンドを使い、ファイルシステム的にドキュメントを扱う発想
- 各ドキュメントページを「ファイル」、各セクションを「ディレクトリ」として仮想化
- 実際のファイルシステムを使う従来方式では、 サンドボックス起動の遅延(約46秒) や 高額なインフラコスト が発生
ChromaFs:仮想ファイルシステムの設計
- ChromaDB に既にインデックス・分割保存されたドキュメントを活用し、 ChromaFs を構築
- UNIXコマンドを仮想ファイルシステムにリダイレクトし、 DBクエリとして変換実行
- セッション生成時間が約100ミリ秒 に短縮、 マージナルコストはゼロ
- 既存インフラを再利用するため、 追加コストや新規インフラ不要
just-bashとChromaFsの連携
- just-bash(Vercel Labs製) はTypeScript実装のbashで、 IFileSystemインターフェース を提供
- ChromaFsはこのインターフェースを実装し、 ls, cat, grep, find, cd 等をChromaDBクエリに変換
- パイプやフラグ処理はjust-bash側で担当 し、ファイル操作部分のみChromaFsが担当
ディレクトリツリーの構築とキャッシュ
- 全ファイルツリーをgzipped JSON(path_tree)としてChromaコレクションに格納
- 初期化時にサーバーがこのツリーを展開し、 Set<string>とMap<string, string[]> でインメモリ管理
- ls, cd, findはローカルメモリで即時解決、ネットワークコール不要
- 同一サイトのセッションでは キャッシュ利用で更に高速化
アクセス制御(RBAC)の実装
- isPublic, groups フィールドでファイルごとにアクセス制御を設定
- ユーザーのセッショントークン に基づき、ファイルツリー構築時に 閲覧可能ファイルのみ抽出
- Linuxユーザーグループやchmod管理不要、 数行のフィルタリング処理で完結
ページの再構成とキャッシュ
- catコマンド実行時、対象ページの全チャンクを chunk_index順に結合 して完全なページを再現
- キャッシュにより繰り返しアクセス時のDB負荷を削減
- 巨大なOpenAPI仕様書などはlazy pointer登録、実際にアクセスされるまで取得しない設計
- 書き込み操作は常にEROFS(Read-Only File System)エラー、システムの完全なステートレス化
grep高速化とネットワーク効率
- grep -r 等の再帰検索は、ChromaDBでまず粗いフィルタをかけ、 該当チャンクをRedisキャッシュへ一括取得
- マッチファイルのみjust-bash側で詳細フィルタ、 大規模検索もミリ秒単位で完了
実運用と成果
- ChromaFsは1日3万件超の会話・数十万ユーザーのドキュメントアシスタントを支える基盤
- サンドボックス不要・即時起動・ゼロコスト・柔軟なRBAC を実現
- Mintlifyドキュメントサイトやmintlify.com/docsで体験可能