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 インテグレーションの概要をご覧ください。