バージョンアップ情報
Graphiti情報
Graphitiとは
GraphitiはAIアプリケーション向けに時間的な概念を含むナレッジグラフを構築・管理するためのPythonフレームワークです。
大規模言語モデル(LLM)を活用したアプリケーションでは、問合せに対応するために収集したデータをどのように構造化し、文脈に合わせて適切に利用可能にするかが大きなテーマとなっています。
その代表的な手法として、まずRAG(Retrieval-Augmented Generation : 検索拡張生成) があげられます。RAGでは文書をインプットとしてデータのベクトル化を行い、問い合わせ時にはこのベクトル情報を手掛かりに類似度検索を行うことでLLMに文書断片を提供します。しかし、この方法では情報どうしの間にどのような関係性があるかを扱うことが難しく、複雑な推論には限界がありました。
そこで情報をグラフ構造(ノード=エンティティ、エッジ=関係)として表現するGraphRAGという技術が開発されました。これにより関連情報をたどりやすくし、複数文書にまたがる推論や俯瞰的な理解が可能になりました。
しかしそれでもなお、時系列的な変化を扱うことが難しいという課題が残りました。これを解決するのがGraphitiです。
Graphiti は「時間」の概念をナレッジグラフに組み込んだ点が大きな特徴です。Graphitiでは情報がいつ有効であったか、どのように変化したかを追跡できるため、LLMが常に最新の状況や過去の経緯を踏まえた回答を生成することを可能にします。
このようにGraphitiは従来のRAGを起点に GraphRAG を経て、さらに 時間(時系列)の概念を加えて発展してきたものになります。Graphitiはグラフ構造だけでなくベクトル構造も保持し、両者を併用しています。
Graphitiの開発はAIエージェント向けのコンテキストレイクを提供するZep社(https://getzep.com)によって主導されており、2024年8月28日にオープンソース化が発表されました。
主な特徴
Graphitiはエンティティや関係性をテキストから自動抽出し、時間的な変化を考慮したナレッジグラフを動的に構築・更新できるフレームワークです。セマンティック検索とグラフ探索を組み合わせたハイブリッド検索に対応しており、変化する情報を文脈とともに効率的に管理・活用できます。
Graphitiのおおまかな動作の仕組みは以下のようになります。
まず、自然言語で書かれたテキスト(会話履歴、議事録、ニュース記事など)を「エピソード」としてGraphitiに投入します。すると LLMの力を借りてエンティティと関係性を抽出し、ナレッジグラフのノード・エッジとして自動的に追加します。各エピソードの出所(データソース)を保持するため、情報のトレーサビリティも確保されます。
次にユーザーが自然言語で問合せを行うと、Graphitiはベクトルデータベースを用いたセマンティック検索とナレッジグラフ上のグラフ探索を組み合わせたハイブリッド検索を行い、関連性の高いノード・エッジ・エピソードを抽出します。その後、 LLMがこれらのグラフ情報を参照しながら回答を生成します。
Graphiti の具体的な特徴として以下があげられます。
|
特徴 |
説明 |
|---|---|
|
動的なナレッジグラフの自動構築 |
テキストデータを入力するだけでLLMを活用して自動的にエンティティや関係性を抽出し、ナレッジグラフを構築・更新できる。手動でのスキーマ定義は不要。 |
|
時系列ファクト管理(Temporal Fact Management) |
エッジやノードに時間的な有効性(いつからいつまで有効か)を付与し、情報の更新時は削除せず無効化することで履歴を保持する。Bi-Temporal Modelにより、過去の任意点における状態の検索や情報の鮮度管理、変更履歴の追跡を実現する。 |
|
エピソード処理(Episodic Processing) |
テキストや会話などを「エピソード」単位で逐次投入し、エンティティと関係性をインクリメンタルに抽出する。各エピソードの出所(データソース)を保持するため、情報のトレーサビリティを確保できる。 |
|
リアルタイム更新 |
従来のRAGアプローチがバッチ処理と静的なデータ要約に依存していたのに対し、Graphitiはリアルタイムでグラフを更新するため、バッチ再計算が不要。 |
|
ハイブリッド検索 |
ベクトルデータベースを用いた意味検索(セマンティック検索)とグラフ構造に基づいた探索を組み合わせることで、関連性が高くかつ文脈に沿った情報検索を効率的に低レイテンシで実現する。 |
|
Pythonネイティブ |
Pythonライブラリとして提供されており、既存のAI/MLパイプラインに容易に統合できる。 |
メリット・デメリット
メリット・必要性
Graphitiを採用するメリットやAI開発における必要性は以下になります。
- AIの「記憶力」の向上: LLMが断片的な情報だけでなく、物事の関係性や文脈を構造化して記憶できるようになります。時系列を含む事実を正確に記憶し、より人間に近い、深い理解に基づいた対話が可能となります。
- 情報の変化に対応できる: 時間的なコンテキスト(bi-temporalモデル)を扱えるため、「以前はAだったが、現在はBである」といった状況変化を正しく理解し回答に反映できます。情報は無効化できるため削除の必要がなく、過去時点のクエリも正確に回答できます。これは人事情報、プロジェクトの進捗、ニュース記事などを扱う際に特に有用です。
- RAGの高度化(GraphRAG): 従来のベクトル検索だけのRAGでは難しかった「Aと関連するBについて、最新の状況を教えて」といった複合的なクエリに対してもグラフ構造を辿ることで的確な情報を提供できます。
- 開発工数の削減: ナレッジグラフの構築プロセスを自動化するため、手動でのデータモデリングやグラフデータベースの複雑な管理から解放され、アプリケーションロジックの実装に集中できます。
デメリット・注意点・課題
Graphitiの利用にあたっては、以下の点に注意が必要です。
- 開発途上のプロジェクト: 2024年8月にオープンソース化された非常に新しいプロジェクトであるため、APIや機能が将来的に変更される可能性があります。
- LLMへの依存: グラフ構築の品質(エンティティ抽出や関係性特定の正確さ)は利用するLLMの性能に大きく依存します。高性能なLLMを利用することで品質向上が期待できる一方、APIコストが増加する可能性があります。
- スケーラビリティの検証: 現時点では大規模なデータセットに対してどの程度のパフォーマンスを発揮するかについて十分な情報がなく、特にグラフが巨大になることが想定される場合の検索速度については慎重な検証が求められます。
- グラフデータベースの運用が必要:Neo4j(v5.26以上)またはFalkorDB(v1.1.2以上)等のグラフデータベースのセットアップと運用管理が必要です。Neo4j Community EditionはDockerで容易に起動可能ですが、本番環境での運用には別途インフラ設計が求められます。
類似プロダクト
Graphitiと類似の機能を持つOSSやプロダクトとして、以下のようなものがあります。
|
プロダクト名 |
特徴・比較 |
|---|---|
|
Microsoft |
Microsoftが開発したRAGのグラフ拡張フレームワークです。情報同士の「関連性」をグラフ構造化して学習させることで知識のネットワーク(ナレッジグラフ)を構築し「複数の文書にまたがる複雑な関連性の推論」や「データ全体の俯瞰的な把握」を飛躍的に向上させます。 |
|
LlamaIndex (Knowledge Graph Index) |
LLMアプリケーション向けのデータフレームワークです。ナレッジグラフを構築するインデックス機能を持っています。Graphitiの方がより「時間的変化」の管理に重点を置いている点に違いがあります。 |
|
LangChain |
LLMアプリケーション開発の人気フレームワークです。グラフデータベース(Neo4jなど)と連携してQAを行う機能などがあります。Graphitiはナレッジグラフの自動構築そのものに特化している点が異なります。 |
ユースケース
-
動的なナレッジグラフの自動構築:
「社内の議事録・メール・チャットなど、継続的に追加・更新される情報からナレッジグラフを自動構築し、常に最新の知識を維持したい」
「製品マニュアルや仕様書など、更新頻度の高いドキュメントを変更履歴とともにナレッジベース化し、AIが常に最新の情報を参照できるようにしたい」 -
時系列ファクト管理(Temporal Fact Management):
「人事情報・組織変更の履歴を正確に管理したい」
「契約条件や価格改定の変遷を時系列で追跡したい」
「議事録や報告書から"誰が・何を・いつ決定したか"という事実を自動抽出して管理したい」
「サポートチケットや問い合わせ履歴から"顧客・問題・解決策"の関係を時系列で管理し、対応履歴をグラフ化、分析したい」 -
ハイブリッド検索:
「意味的な類似性とナレッジグラフ上の関係性を組み合わせて、関連性の高い情報を効率的に検索したい」
「会話履歴の中から関連性の高いコンテキストをリアルタイムで取得したい」 -
エピソード処理(Episodic Processing):
「チャットボットの会話履歴を継続的に取り込み、ナレッジグラフに反映したい」
「ログやイベントストリームからリアルタイムに知識を継続的に蓄積・更新したい」
動作環境
Graphitiの基本的な動作環境は以下の通りです。詳細は公式ドキュメント(https://help.getzep.com/graphiti)を参照してください。
- Python: バージョン3.10以上が必要です。
-
グラフデータベース:以下のいずれか1つ
Neo4j v5.26以上 / FalkorDB 1.1.2以上 / Amazon Neptune - LLM APIキー: グラフ構築や検索のためにOpenAI APIなどのLLMへのアクセスが必要です。
Graphitiのライセンス
GraphitiはApache License 2.0の下で公開されています。 商用利用、修正、配布が認められている非常に寛容なオープンソースライセンスです。利用の際はライセンス条項を確認してください。
参考情報
オープンソース年間サポートサービス
OpenStandiaではOSSを安心してご利用いただけるように、オープンソース年間サポートサービスをご提供しております。
サポートしているOSSは下記ページをご参照ください。

