FalkorDB/GraphRAG-SDK
Build fast and accurate GenAI apps with GraphRAG SDK at scale 🌟
GraphRAG‑SDK – グラフベースの検索拡張生成フレームワーク
何であるか – ドキュメント(テキスト、PDF、Markdown、CSVなど)のコレクションを FalkorDB に格納された 知識グラフ に変換できる Python SDK。自然言語の質問に対して、そのグラフを検索・探索することで回答を生成します。このライブラリの中心的な考え方は、検索ステップがLLMよりも重要であるということです。グラフのノードとエッジに基づいて回答を根拠づけることで、幻覚を大幅に削減できます。
なぜ重要か – 伝統的な RAG パイプラインはフラットなベクトル類似度検索に依存しており、マルチホップの事実を逃すことが多く、トレーサビリティもありません。GraphRAG‑SDK は以下の機能を追加します:
- 関係の探索 – エンティティを通じてリンクされた事実も、テキスト的に類似していなくても発見できます。
- 出典エッジ(
MENTIONED_IN) – すべての回答は、その根拠となった正確なソースチャンクに遡ることができます。 - 拒否サポート – グラフに十分な証拠がない場合、ライブラリは「証拠不足」と明示的に返すことができ、回答を捏造しません。
- ベンチマーク最優位の精度 – README によると、GraphRAG‑Bench での全体精度は 71.48 % であり、標準的なベクトル RAG ベースラインを上回っています。
コアコンセプト
| コンセプト | 役割 |
|---|---|
| グラフスキーマ | オプションの GraphSchema でエンティティタイプ(例:Person、Organization)や関係タイプ(例:WORKS_AT)を宣言できます。スキーマは抽出をガイドし、型付きで検証可能な事実を保証します。 |
| インジェスト | rag.ingest(text, document_id) は LLM でエンティティ/関係を抽出し、重複を排除、埋め込みを作成し、FalkorDB にノード/エッジをアップサートします。 |
| ファイナライズ | rag.finalize() はドキュメント間の重複排除と埋め込みの補完を実行します。これはグラフサイズに比例するため、一括変更後に一度だけ実行する必要があります。 |
| 検索+生成 | rag.completion(question, return_context=True) はグラフベースの検索(ベクトル、全文、オプションのテキスト→Cypher)を行い、取得したコンテキストをLLMに渡して回答を生成します。 |
| インクリメンタル更新 | update()、delete_document()、apply_changes() を使って、ソースリポジトリ(例:CIパイプライン)とグラフを同期できます。完全再構築は不要です。 |
通常のワークフロー(5分デモ)
- インストール –
pip install graphrag-sdk[litellm](PDFサポートが必要な場合は[pdf]を追加)。FalkorDB コンテナを起動(docker run … falkordb/falkordb:latest)。 GraphRAGインスタンスの作成 –ConnectionConfig(ホスト+グラフ名によるテナント分離)とLLM/埋め込みプロバイダを指定します(SDK は LiteLLM に薄いラッパーを備えているため、OpenAI互換モデルであれば何でも動作します)。- ドキュメントのインジェスト – 各ソースに対して
ingest()を呼び出します。LLM がエンティティを抽出し、埋め込み生成器がベクトルを作成し、SDK が Cypher のアップサートを書き込みます。 - ファイナライズ – 一括処理後に
finalize()を一度実行して重複排除とインデックス化を行います。 - クエリ –
await rag.completion("Where does Alice work?")はAnswerオブジェクトを返し、answer.answerと、必要に応じて完全な検索トレース(ans.context)を含みます。
インストールとクイックスタートスニペット
pip install graphrag-sdk[litellm]
# FalkorDB(Docker)を起動し、OpenAIキーを設定
export OPENAI_API_KEY=sk-…
import asyncio
from graphrag_sdk import GraphRAG, ConnectionConfig, LiteLLM, LiteLLMEmbedder
async def main():
async with GraphRAG(
connection=ConnectionConfig(host="localhost", graph_name="demo"),
llm=LiteLLM(model="openai/gpt-4o-mini"),
embedder=LiteLLMEmbedder(model="openai/text-embedding-3-large", dimensions=256),
) as rag:
await rag.ingest(text="Alice Johnson works at Acme Corp in London.", document_id="doc1")
await rag.finalize()
ans = await rag.completion("Where does Alice work?", return_context=True)
print(ans.answer)
print(ans.context) # 出典エッジ、ソースチャンクなど
asyncio.run(main())
主な機能(READMEに記載)
- ベンチマーク最優位の精度(執筆時点では GraphRAG‑Bench で1位)。
- グラフベースの検索と出典エッジによる幻覚低減。
- 高速でマルチテナント – 各グラフは名前で隔離。FalkorDB はサブミリ秒レベルの Cypher クエリを提供。
- モジュール式パイプライン – カスタムインジェスト戦略、LLMプロバイダ、埋め込みバックエンドを自由に差し替え可能。
- インクリメンタル更新 – クラッシュリカバリを備えた安全で同値な
update();CI向けのバッチ処理。 - 拡張可能なスキーマ – オントロジーを宣言または進化可能。SDK は新規タイプを入力ドキュメントから発見できます。
- 観測性フック – 2026年Q2リリース予定。プロダクションレベルのメトリクスを追加予定。
誰が使うべきか
- 企業:法務、医療、金融など、幻覚が許されない信頼性・監査可能な RAG 回答が必要な分野。
- 開発者:チャットボット、Q&Aアシスタント、社内知識ベースを構築する人で、マルチホップの事実やエンティティ中心のクエリを必要とする人。
- 研究者:グラフベース RAG と純粋なベクトル RAG の比較に興味がある人。SDK にはベンチマークスクリプトと再現性ドキュメントが同梱。
さらに学ぶには
- 全ドキュメント: https://docs.falkordb.com/graphrag
- セットアップガイド、アーキテクチャ概要、信頼性・根拠ドキュメント(すべて README からリンク)。
- 例のギャラリー(
graphrag_sdk/examples/…):クイックスタート、PDFインジェスト、カスタム戦略、オントロジー進化、および「拒否付き根拠のある回答」パターンをカバー。
コミュニティと貢献
- Apache 2.0 ライセンスでオープンソース。
- サポートと機能リクエスト用に、アクティブな Discord、GitHub Discussions、イシュー追跡システム。
- 貢献ガイドとコードオブコンダクトが提供されています。
結論 – GraphRAG‑SDK は、FalkorDB のグラフエンジンとLLM駆動のエンティティ抽出を組み合わせた、プロダクション対応の Python ファーストフレームワークです。単なるベクトル検索パイプラインよりも、精度が高く、トレーサビリティがあり、制御性が高い RAG システムを提供します。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト