| name | graphrag |
| description | PostgreSQL + pgvector + PGroonga で GraphRAG を構築。自然言語でプロジェクトを説明すると、最適なEntity/Edge型、スキーマ、クエリパターンを設計・生成。Use when the user mentions "GraphRAG", "knowledge graph", or wants to build RAG with relationships. |
GraphRAG PostgreSQL Skill
PostgreSQL単体(pgvector + PGroonga拡張)でGraphRAGを構築するためのスキル。 自然言語でプロジェクトを説明すると、最適なGraphRAGスキーマを設計・生成する。
How It Works
/graphrag 小説のキャラクター関係を管理したい。時系列で関係が変化する
↓ Claude が分析
Entity型: Character, Location, Organization, Event, Item
Edge型: friend_of, enemy_of, ally_of, family_of, participates_in
追加機能: 時系列サポート(events テーブル)
↓ ユーザー確認後、生成
sql/schema.sql, sql/indexes.sql, sql/queries/*.sql, docs/
Output Location
{project}/
├── sql/
│ ├── schema.sql # カスタマイズされたスキーマ
│ ├── indexes.sql # インデックス定義
│ └── queries/
│ ├── local_search.sql # Entity中心検索
│ ├── global_search.sql # 全体俯瞰検索
│ ├── hybrid_search.sql # Hybrid Search
│ └── custom_*.sql # 要件固有のクエリ
└── docs/
├── graphrag-guide.md # 運用ガイド
└── prompts/
├── entity_extraction.md
└── edge_extraction.md
Execution Flow
Phase 1: Analyze User Requirements
ユーザーの自然言語の説明を分析:
- データの種類: 何を管理したいか(小説、技術文書、FAQ、障害報告...)
- 追跡したい関係: どんな関係が重要か(人間関係、依存関係、因果関係...)
- 検索・分析の要件: どんなクエリが必要か(関連検索、パス検索、影響分析...)
- 特別な要件: 時系列、ネタバレ制御、承認フロー、重要度など
Phase 2: Read Reference Documents
以下のリファレンスを参照して設計:
- references/use-cases.md - 既存パターンを参考に
- references/architecture.md - アーキテクチャ基本
- references/schema-design.md - スキーマ設計
- references/entity-extraction.md - Entity/Edge抽出
Phase 3: Design Entity/Edge Types
ユーザー要件に最適なEntity型とEdge型を設計:
参考パターン(use-cases.md より):
| パターン | Entity型例 | Edge型例 |
|---|---|---|
| 物語・コンテンツ | Character, Location, Item | friend_of, enemy_of, possesses |
| 技術文書 | Technology, API, Component | depends_on, implements, extends |
| ナレッジベース | Concept, Process, Document | defines, precedes, references |
| 障害・トラブル | Symptom, Cause, Solution | causes, solved_by, affects |
| 法務・規約 | Clause, Requirement, Exception | refers_to, overrides, exception_of |
これらを参考に、ユーザー要件に合わせてカスタム設計する。
Phase 4: Confirm Design with User
AskUserQuestionで設計を確認:
- プロジェクト名
- Entity型の確認: 「以下のEntity型を提案します。追加/削除があれば教えてください」
- Edge型の確認: 「以下のEdge型を提案します」
- オプション:
- Embedding dimension: 1536 / 768 / Custom
- Primary language: Japanese / English
- 時系列サポート: Yes / No
- Global Search (Community): Yes / No
Phase 5: Generate Schema
- Read
templates/schema-core.sql - 設計したEntity/Edge型をスキーマに反映:
- コメントとして型定義を追加
- 必要な拡張テーブルを追加
- Write to
sql/schema.sql
Phase 6: Generate Indexes
参照: references/indexing-strategies.md
- pgvector: HNSW(推奨)
- PGroonga: Japanese → TokenMecab / English → TokenBigram
Phase 7: Generate Custom Queries
参照: references/query-patterns.md
ユーザーの検索要件に基づいてクエリを生成:
local_search.sql- Entity中心のn-hop展開global_search.sql- Community reports検索hybrid_search.sql- PGroonga + pgvector (RRF)custom_*.sql- 要件固有(依存ツリー、因果パス、類似検索等)
Phase 8: Generate Entity Extraction Prompts
参照: references/entity-extraction.md
設計したEntity/Edge型に基づいてLLM抽出プロンプトを生成:
docs/prompts/entity_extraction.md- Entity抽出用docs/prompts/edge_extraction.md- Edge抽出用
Phase 9: Generate Documentation
参照: references/chunking-strategies.md
docs/graphrag-guide.md:- Entity/Edge型の定義と説明
- Chunking戦略
- クエリの使い方
- パフォーマンスチューニング
Phase 10: Completion Report
生成完了を報告:
- 設計したEntity/Edge型のサマリー
- 生成されたファイル一覧
- 次のステップ
Reference Files
共通:
- references/architecture.md - 全体アーキテクチャ
- references/schema-design.md - テーブル設計詳細
- references/indexing-strategies.md - インデックス戦略
- references/query-patterns.md - 検索パターン
ユースケース固有:
- references/use-cases.md - ユースケース別Entity/Edge型定義
- references/chunking-strategies.md - ユースケース別Chunking
- references/entity-extraction.md - 抽出プロンプト
オプション:
- references/community-detection.md - コミュニティ検出
Template Files
- templates/schema-core.sql - コアテーブル
- templates/schema-extensions.sql - 拡張テーブル
- templates/indexes.sql - インデックス
- templates/query-local.sql - Local Search
- templates/query-global.sql - Global Search
- templates/query-hybrid.sql - Hybrid Search