LlamaIndex と Spanner Graph を使用して、グラフ検索拡張生成(GraphRAG)を使用する大規模言語モデル(LLM)アプリケーションを構築できます。
Spanner Graph は、プロパティ グラフストア機能を介して LlamaIndex と統合され、次のものを使用してデータ取得ワークフローを作成できます。
プロパティ グラフストア: グラフ データベースにノードとエッジを保存して、データをグラフとして表すことができます。グラフ データベースを使用すると、データ内の複雑な関係をクエリできます。
グラフ リトリーバー: LLM を使用して、ユーザーの自然言語による質問をグラフストアのクエリに変換できます。これにより、アプリケーションはグラフデータの構造化された関係を使用して質問に答えることができます。
LlamaIndex とは
LlamaIndex は、LLM アプリケーションを構築するためのデータ フレームワークです。検索拡張生成(RAG)やその他のコンテキスト認識システムの開発を効率化するのに役立ちます。LlamaIndex は、LLM をデータに接続するツールを提供することで、データの取り込み、インデックス作成、クエリを支援します。LlamaIndex と LLM を使用して、正確で関連性の高いレスポンスを提供するアプリケーションを構築できます。
LlamaIndex フレームワークの詳細については、LlamaIndex プロダクトのドキュメントをご覧ください。
Spanner のプロパティ グラフストア
プロパティ グラフ ストアは、アプリケーションで次のことを行うために使用できます。
ドキュメントからエンティティと関係を抽出し、グラフとして保存します。
グラフ構造で複雑な走査と分析を実行します。
Graph Query Language(GQL)を使用してグラフをクエリし、LLM に特定のコンテキストを提供します。
Spanner Graph でプロパティ グラフストアを操作するには、SpannerPropertyGraphStore
クラスを使用します。
プロパティ グラフストアのチュートリアル
Spanner でプロパティ グラフ ストアを使用する方法については、Spanner のプロパティ グラフ ストアのチュートリアルをご覧ください。このチュートリアルでは、次の方法について説明します。
llama-index-spanner
パッケージと LlamaIndex をインストールするSpannerPropertyGraphStore
クラスを初期化し、それを使用して Spanner データベースに接続します。LlamaIndex ナレッジグラフ抽出ツールを使用してドキュメントから抽出されたデータを含むノードとエッジを Spanner Graph に追加します。
GQL を使用してグラフをクエリし、構造化された情報を取得します。
グラフクエリの結果を可視化します。
Spanner のグラフ リトリーバー
LlamaIndex のグラフ リトリーバーは、LLM を使用してユーザーの自然言語による質問をグラフストアのクエリに変換するコンポーネントです。アプリケーションは、生成されたクエリを使用して、グラフデータの構造化された関係を使用して質問に回答します。グラフ リトリーバーは、次のワークフローを使用して自然言語クエリから回答を生成します。
LLM にプロンプトを送信して、自然言語の質問を GQL クエリに変換します。
Spanner Graph と
SpannerPropertyGraphStore
クラスを使用して、グラフストアに対して GQL クエリを実行します。Spanner Graph を使用して、クエリから返された構造化データを LLM に送信します。
LLM を使用して人間が読める回答を生成します。
LlamaIndex 取得ツールクラスを使用する
次の LlamaIndex グラフ リトリーバー クラスは、Spanner Graph で使用して、LLM プロンプトに対する人間が読める回答を生成できます。
SpannerGraphTextToGQLRetriever
クラス
SpannerGraphTextToGQLRetriever
クラスは、自然言語を GQL クエリに変換して、グラフからデータを抽出します。
SpannerGraphCustomRetriever
クラス
SpannerGraphCustomRetriever
クラスは、ハイブリッド検索アプローチを実装します。SpannerGraphCustomRetriever
は、次の手順で具体的かつ概念的な質問に対応します。
次の検索を同時に実行します。
自然言語の質問を GQL クエリに変換し、グラフを使用して回答を見つけるグラフ検索。
概念的に関連する情報を見つけるためのベクトル検索またはセマンティック検索。
グラフ検索とベクトル検索の結果を組み合わせます。
LLM を使用して、結合された結果を評価して再ランク付けします。LLM は、元の質問に回答するために、最も関連性が高く、コンテキストを認識した情報を選択します。
グラフ リトリーバーのチュートリアル
Spanner でグラフ リトリーバーを使用して質問に回答する方法については、Spanner のグラフ リトリーバーのチュートリアルをご覧ください。このチュートリアルでは、次の方法について説明します。
非構造化テキストブロブからグラフを作成する。
SpannerPropertyGraphStore
クラスを使用して、グラフを Spanner に保存するグラフストアと LLM を使用して、
SpannerGraphTextToGQLRetriever
クラスとSpannerGraphCustomRetriever
インスタンスを初期化します。Spanner に保存されているグラフデータを使用して、自然言語による質問に対する回答を生成する。
次のステップ
他の Google Cloud プロダクトで Spanner を使用して生成 AI アプリケーションを構築する方法については、Spanner AI の概要をご覧ください。
Spanner のベクトル検索については、Spanner Graph でベクトル検索を使用するをご覧ください。
Spanner を使用してベクトル エンベディングを保存する方法については、Spanner テキスト エンベディングを取得するをご覧ください。
Spanner での ML の詳細については、Vertex AI インテグレーションの概要をご覧ください。