Communitygithub.com

graphrag

ドキュメントから抽出したエンティティとリレーションシップをグラフデータベースに格納し、そのグラフ構造上でLLMが推論することで、複数ホップの推論や関係性の理解を実現するRAGパイプラインを構築します。

graphrag とは?

このスキルは、ベクトル検索とグラフベースの検索のギャップを埋める、GraphRAGパイプライン全体を構築するためのスキルです。ドキュメントからエンティティとその関係性を抽出し、Kuzu(組み込み埋め込み型)やNeo4j(拡張型)といったグラフデータベースに格納します。単なる類似チャンク検索ではなく、複数ホップにわたる推論を必要とするクエリ(例:「プラントXの停止の影響を受けたサプライヤーは?」や「プロジェクトYに関する既知情報の要約」など)に特に有効です。このスキルは、スキーマの定義、LLMを用いたエンティティ/関係抽出、Kuzuへのデータロード、Cypherクエリによる局所検索・多ホップ推論・大局的(コミュニティ)要約、そしてLLMによる回答合成をステップとして含みます。抽出品質の担保(手動スポットチェック)、ロード時の重複排除(MERGE使用)、大規模チャンクの回避といったアンチパターンへの注意も促します。また、エージェントのセッション間記憶(時間グラフ)の実装パターンも提供され、単純な事実検索にはベクトルRAGの方が適切であるという判断基準も示します。全体として、関係性を重視した高度な質問応答やエージェントの長期記憶に適した堅牢なRAGパイプラインを実現します。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/unisone/openclaw-skill-suite/tree/main/skills/graphrag

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

GraphRAG スキル

フラットなチャンクではなく、ナレッジグラフ上での検索拡張生成。 エンティティとリレーションシップはドキュメントから抽出され、 グラフデータベースに格納され、クエリ時にLLMがグラフ構造に基づいて推論します。

なぜベクトルではなくグラフなのか

ベクトル検索は類似したチャンクを見つけます。関連をたどることはできません。

  • 「プラントXの停止の影響を受けたサプライヤーは?」は 停止 → 影響 → プラント → 供給元 → サプライヤー という2ホップの関係を必要としますが、単一のチャンクには含まれていません。
  • 「プロジェクトYについて知っているすべてを要約して」は、最も類似した10個の段落ではなく、Yを中心としたエンティティのコミュニティを必要とします。

質問が単一の事実を調べるものであれば、ベクターRAG(よりシンプルです)を使い続けてください。質問が関係性にまたがる場合は、GraphRAGに手を伸ばしてください。

スタック

  • Kuzu — 埋め込みグラフデータベース(pip install kuzu)、サーバーは不要、Cypherクエリ言語。ここから始めてください。
  • Neo4j — 埋め込みデータベースでは手狭になった場合:マルチユーザー、より大きなグラフ、Bloom可視化。同じCypherスキルがそのまま使えます。
  • LLM抽出 — エンティティ/リレーションシップ抽出のための構造化出力を備えた、任意の強力なモデル。

パイプライン

1. 最初にスキーマを定義する

抽出器に自由にタイプを発明させないでください — 同じリレーションシップの40通りの綴りができてしまいます。ノードとエッジのタイプを事前に宣言します:

CREATE NODE TABLE Person(name STRING, PRIMARY KEY(name));
CREATE NODE TABLE Project(name STRING, status STRING, PRIMARY KEY(name));
CREATE NODE TABLE Document(title STRING, date DATE, PRIMARY KEY(title));
CREATE REL TABLE WORKS_ON(FROM Person TO Project, role STRING);
CREATE REL TABLE MENTIONS(FROM Document TO Person);
CREATE REL TABLE MENTIONS_PROJECT(FROM Document TO Project);

スキーマは小さく保ちます(5〜10ノードタイプ)。拡張は可能ですが、乱雑なグラフを安価に抽出し直すことはできません。

2. エンティティとリレーションシップを抽出する

ドキュメントをチャンク化し(500〜1000トークン、オーバーラップあり)、その後抽出器にプロンプトを与えます:

以下のテキストからエンティティとリレーションシップを抽出してください。

許可されるノードタイプ:Person, Project, Document
許可されるエッジタイプ:WORKS_ON (Person→Project), MENTIONS (Document→Person),
                    MENTIONS_PROJECT (Document→Project)

ルール:
- 名前を正規化する(「J. Smith」と「John Smith」は同じPersonとする)
- テキストに明示されているか、明確に暗示されているリレーションシップのみを抽出する
- JSONで返す:{"nodes": [...], "edges": [...]}

テキスト:
<chunk>

10〜20チャンクを手動でスポットチェックします。抽出品質は、その後のすべての処理の上限です — ノイズの多いグラフはノイズの多い回答を生みます。

3. Kuzuにロードする

import kuzu
db = kuzu.Database("./knowledge.kz")
conn = kuzu.Connection(db)
# スキーマを作成し、次に抽出されたノード/エッジごとにパラメータ化されたMERGE/CREATEを実行

ロード時に重複排除する(主キーに対してMERGE)— 同じエンティティが多くのチャンクに現れます。

4. クエリパターン

ローカルルックアップ — エンティティに接続されているすべて:

MATCH (p:Person {name: $name})-[r]-(neighbor)
RETURN type(r), neighbor;

マルチホップ推論 — グラフ全体のリレーションシップをたどる:

// 停止についてのドキュメントで言及されているプロジェクトで働いている人は誰か?
MATCH (d:Document)-[:MENTIONS_PROJECT]->(proj:Project)<-[:WORKS_ON]-(p:Person)
WHERE d.title CONTAINS 'outage'
RETURN DISTINCT p.name, proj.name;

グローバル要約 — コミュニティ検出を行い、各コミュニティを要約する:

// 密に接続されたクラスタを見つける(一度実行し、コミュニティIDをノードに保存)
CALL show_tables();  // その後、グラフのコミュニティ検出を使用

各コミュニティをLLMで要約する:「これらのエンティティはトピックXを中心にクラスタリングされています。」これがGraphRAGの「グローバルクエリ」です — 「これらのドキュメントの主要テーマは何か?」といった質問です。

5. LLMで回答する

機能するクエリパターン:

  1. エージェントが質問を1〜3のCypherクエリに変換する
  2. 結果が構造化された行として返される
  3. LLMが行から回答を合成し、ノード/エッジの証拠を引用する
  4. クエリが何も返さない場合、エージェントは再定式化する — グラフの内容を決して幻覚しない

時間的知識(エージェントメモリ)

セッションをまたぐエージェントメモリのために、エッジに時間を追加します:VALID_FROM / VALID_TOタイムスタンプ、上書きされるのではなく、取って代わられた事実にマークを付けます。これが時間的ナレッジグラフパターンです(Graphiti/Zepを参照):「ユーザーは以前はXを好んでいたが、今はYを好む」が、上書きされる代わりにクエリ可能なままになります。

アンチパターン

  • スキーマなしでの抽出。 自由形式の抽出は、誰もクエリできないグラフを生成します。
  • すべてにGraphRAGを使う。 クリーンなドキュメントに対する単一の事実検索? ベクター検索の方が安価で優れています。関係性が重要な場合にグラフを使用してください。
  • 抽出を盲目的に信頼する。 すべてのパイプラインにはスポットチェックループが必要です。抽出エラーは静かに蓄積されます。
  • 巨大なチャンク。 エンティティ抽出は約1000トークンを超えると品質が低下します — モデルがリレーションシップを見逃し始めます。より小さなチャンクを、より多く用意してください。
  • ロード時の重複排除なし。 「John Smith」、「J. Smith」、「Smith」が3つのノードとして存在すると、マルチホップクエリが静かに壊れます。

Individual skills in this repo

This repo contains 10 individual skills — each has its own dedicated page.

astra-operator

Delegate computer-use and browser tasks to OpenAI

design-inspo

Find design inspiration from curated gallery sites. Use when a user needs UI/UX references, design examples, or inspiration for specific components (navbars, CTAs, hero sections, landing pages, etc.), full websites, SaaS products, mobile apps, animations, icons, branding, or design systems. Helps select the right inspiration source and browse examples.

mundane-demos

Demo strategy that leads with mundane real-life utility instead of benchmarks. Use when presenting an AI agent or product to non-technical audiences. Covers picking tasks the viewer did this morning, showing end-to-end completion, and letting speed be the wow factor.

release-notes

Generate polished release notes from git history. Use when cutting a release, before publishing a GitHub release, or when you need a changelog from commits between two tags. Groups changes by type, surfaces breaking changes, and drafts highlights.

remotion-product-demos

Create Apple-keynote-quality product demo videos with Remotion. Covers glass phone mockups, floating 3D spheres, typing animations, card UIs, ripple effects, and smooth scene transitions. Use when asked to create product demos, app showcase videos, UI walkthrough animations, or

repo-security-scan

Scan a repository for high-signal security issues and produce a report. Use when auditing a codebase for leaked secrets or vulnerable dependencies, before a release, or when onboarding an unfamiliar repo. Runs gitleaks secret scanning and osv-scanner dependency checks.

secure-agent-design

Security architecture patterns for personal AI agents that touch real accounts. Use when designing an agent with access to inbox, calendar, finances, or shopping. Covers per-user isolated VMs, pre-action sentinel checks, least-privilege connectors, human approval gates, and single-use payment credentials.

testimonial-launch

Turn user testimonials into launch distribution. Use when launching a product or feature and you want real user proof to carry the announcement instead of marketing copy. Covers soliciting specific testimonials, curating them, and amplifying via quote-posts.

unisone/openclaw-skill-suite

Create Apple-keynote-quality product demo videos with Remotion. Covers glass phone mockups, floating 3D spheres, typing animations, card UIs, ripple effects, and smooth scene transitions. Use when asked to create product demos, app showcase videos, UI walkthrough animations, or

validator-quotes

Earn and deploy third-party validator quotes for a launch. Use when you need credibility beyond your own claims. Covers who to approach, how to get honest reactions, and how to amplify them via quote-posts, based on the founder/CEO validators behind the Muse launch.

関連スキル