grepai-storage-gob について
GrepAI のローカルファイルストレージとして GOB を使うためのガイドです。個人開発や中小規模のコードベース向けで、外部サービス不要ですが、大規模な索引や同時共有には適しません。
主な機能
- 01埋め込みとメタデータを単一ファイルに保存
- 02grepai コマンドで索引を作成・確認
- 03索引ファイルのバックアップや移行
- 04メモリ使用量と拡張上の制限を説明
活用シーン
- 01ローカル開発プロジェクトのコード索引
- 02.grepai 索引のバックアップや再作成
- 03PostgreSQL または Qdrant への移行判断
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ yoanbernabeu/ grepai-skills --skill grepai-storage-gobインストール後、Claude Code で/grepai-storage-gobを入力して読み込まれたか確認します。
詳細
GrepAI の GOB ストレージ
このスキルでは、GrepAI のストレージバックエンドとして GOB(Go Binary)を使用する方法を説明します。GOB はデフォルトであり、最もシンプルな選択肢です。
このスキルを使う場面
- 1 人の開発者で進めるプロジェクト
- 小規模から中規模のコードベース
- 外部依存関係のないシンプルなセットアップ
- ローカル開発環境
GOB ストレージとは
GOB は Go ネイティブのバイナリーシリアライズ形式です。GrepAI は次のデータの保存に使用します。
- ベクトル埋め込み
- ファイルのメタデータ
- チャンク情報
すべて単一のローカルファイルに保存されます。
メリット
| メリット | 説明 |
|---|---|
| 🚀 シンプル | 外部サービスは不要です |
| ⚡ セットアップが高速 | すぐに動作します |
| 📁 ポータブル | 単一ファイルで、簡単にバックアップできます |
| 💰 無料 | インフラストラクチャの費用はかかりません |
| 🔒 プライベート | データはローカルに保存されます |
制限事項
| 制限事項 | 説明 |
|---|---|
| 📏 スケーラビリティ | 非常に大きなコードベースには適していません |
| 👤 シングルユーザー | 同時アクセスには対応していません |
| 🔄 共有不可 | マシン間でインデックスを共有できません |
| 💾 メモリ | 検索時にメモリへ読み込まれます |
設定
デフォルト設定
GOB はデフォルトのバックエンドです。最小限の設定は次のとおりです。
# .grepai/config.yaml
store:
backend: gob
明示的な設定
store:
backend: gob
# Index stored in .grepai/index.gob (automatic)
ストレージの場所
GOB ストレージは、プロジェクトの .grepai/ ディレクトリにファイルを作成します。
.grepai/
├── config.yaml # Configuration
├── index.gob # Vector embeddings
└── symbols.gob # Symbol index for trace
ファイルサイズ
.grepai/index.gob のおおよそのサイズ:
| コードベース | ファイル数 | チャンク数 | インデックスサイズ |
|---|---|---|---|
| 小規模 | 100 | 500 | ~5 MB |
| 中規模 | 1,000 | 5,000 | ~50 MB |
| 大規模 | 10,000 | 50,000 | ~500 MB |
操作
インデックスの作成
# Initialize project
grepai init
# Start indexing (creates index.gob)
grepai watch
インデックスの状態確認
grepai status
# Output:
# Index: .grepai/index.gob
# Files: 245
# Chunks: 1,234
# Size: 12.5 MB
# Last updated: 2025-01-28 10:30:00
インデックスのバックアップ
# Simple file copy
cp .grepai/index.gob .grepai/index.gob.backup
インデックスのクリア
# Delete and re-index
rm .grepai/index.gob
grepai watch
新しいマシンへの移行
# Copy entire .grepai directory
cp -r .grepai /path/to/new/location/
# Note: Only works if using same embedding model
パフォーマンスに関する考慮事項
メモリ使用量
GOB は検索時にインデックス全体をメモリに読み込みます。
| インデックスサイズ | RAM 使用量 |
|---|---|
| 10 MB | ~20 MB |
| 50 MB | ~100 MB |
| 500 MB | ~1 GB |
検索速度
GOB は一般的なコードベースで高速な検索を実現します。
| コードベースのサイズ | 検索時間 |
|---|---|
| 小規模(100 ファイル) | <50ms |
| 中規模(1K ファイル) | <200ms |
| 大規模(10K ファイル) | <1s |
アップグレードを検討するタイミング
次のような場合は、PostgreSQL または Qdrant を検討してください。
- インデックスが 1 GB を超える
- 同時アクセスが必要
- チーム内でインデックスを共有したい
- コードベースに 50K 以上のファイルがある
.gitignore の設定
.gitignore に .grepai/ を追加してください。
# GrepAI (machine-specific index)
.grepai/
理由: インデックスは次の理由により、マシン固有です。
- バイナリー埋め込みを含む
- 使用する埋め込みモデルに依存する
- 各マシンで独自に生成する必要がある
インデックスの共有(非推奨)
インデックスファイルをコピーすることはできますが、次の理由から推奨されません。
- 同一の埋め込みモデルを使用する必要がある
- ファイルパスが絶対パスである
- マシンごとにコードのバージョンが異なる場合がある
より良い方法: 各開発者が独自に grepai watch を実行します。
他のバックエンドへの移行
PostgreSQL への移行
- 設定を更新します。
store:
backend: postgres
postgres:
dsn: postgres://user:pass@localhost:5432/grepai
- インデックスを再作成します。
rm .grepai/index.gob
grepai watch
Qdrant への移行
- 設定を更新します。
store:
backend: qdrant
qdrant:
endpoint: localhost
port: 6334
- インデックスを再作成します。
rm .grepai/index.gob
grepai watch
よくある問題
❌ 問題: インデックスファイルが大きすぎる
✅ 解決策: 除外パターンを追加するか、PostgreSQL/Qdrant に移行してください
❌ 問題: 大規模なコードベースで検索が遅い
✅ 解決策: パフォーマンスを向上させるため、Qdrant に移行してください
❌ 問題: インデックスが破損している
✅ 解決策: 削除してインデックスを再作成してください。
rm .grepai/index.gob .grepai/symbols.gob
grepai watch
❌ 問題: 「Index not found」エラー
✅ 解決策: grepai watch を実行してインデックスを作成してください
ベストプラクティス
- 小規模・中規模のプロジェクトで使用する: ファイル数が約 10K まで
- .gitignore に追加する: インデックスをコミットしない
- 大きな変更の前にバックアップする: 実験の前に index.gob をコピーする
- モデルの変更後にインデックスを再作成する: 埋め込みモデルを変更した場合
- ファイルサイズを監視する: インデックスが 1GB を超えたら移行する
出力形式
GOB ストレージの状態:
✅ GOB Storage Configured
Backend: GOB (local file)
Index: .grepai/index.gob
Size: 12.5 MB
Contents:
- Files: 245
- Chunks: 1,234
- Vectors: 1,234 × 768 dimensions
Performance:
- Search latency: <100ms
- Memory usage: ~25 MB