このページでは、LangChain を使用して LLM 活用アプリケーションを構築する方法を紹介します。このページの概要は、GitHub の手続きガイドにリンクされています。
LangChain とは
LangChain は、デベロッパーが生成 AI アプリケーションや検索拡張生成(RAG)ワークフローを構築するのに役立つ LLM オーケストレーション フレームワークです。複雑な LLM ワークフローを合理化するための構造、ツール、コンポーネントが提供されます。
LangChain の詳細については、Google LangChain のページをご覧ください。LangChain フレームワークの詳細については、LangChain のプロダクト ドキュメントをご覧ください。
Spanner 用の LangChain コンポーネント
Spanner には、LangChain とのインターフェースとして次のものがあります。
これらのコンポーネントをアプリケーションで使用する方法については、Spanner の LangChain クイックスタートで学習します。
Spanner 用のベクトルストア
ベクトルストアによって、ドキュメントとメタデータがベクトル データベースから取得され、保存されます。ベクトルストアをアプリケーションで使用すると、ユーザークエリの意味を解釈するセマンティック検索が可能になります。この種の検索はベクトル検索と呼ばれ、これを利用すると概念的にクエリに一致するトピックを見つけることができます。クエリ時に、検索リクエストのエンベディングに最も類似したエンベディング ベクトルがベクトルストアによって取得されます。LangChain の中では、デベロッパーの代わりにベクトルストアが、エンベディングされたデータの保存とベクトル検索の実行を担当します。
Spanner でベクトルストアを扱うには、SpannerVectorStore
クラスを使用します。
詳細については、LangChain ベクトルストアのプロダクト ドキュメントをご覧ください。
ベクトルストア手順ガイド
ベクトルストアに関する Spanner ガイドでは、次の方法について説明します。
- インテグレーション パッケージと LangChain をインストールする
- ベクトルストアのテーブルを初期化する
VertexAIEmbeddings
を使用してエンベディング サービスを設定するSpannerVectorStore
を初期化する- ドキュメントを追加または削除する
- 類似ドキュメントを検索する
- カスタム ベクトルストアを作成して、ベクトル エンベディングのテーブルを持つ既存の Spanner データベースに接続する
Spanner 用ドキュメント ローダ
ドキュメント ローダによって、LangChain の Document
オブジェクトの保存、読み込み、削除が行われます。たとえば、処理対象のデータをエンベディングに読み込んでから、これをベクトルストアに格納することも、チェーンに具体的なコンテキストを提供するツールとして使用することもできます。
Spanner からドキュメントを読み込むには、SpannerLoader
クラスを使用します。ドキュメントの保存と削除を行うには SpannerDocumentSaver
クラスを使用します。
詳細については、LangChain ドキュメント ローダのトピックをご覧ください。
ドキュメント ローダの手順ガイド
ドキュメント ローダに関する Spanner ガイドでは、次の方法について説明します。
- インテグレーション パッケージと LangChain をインストールする
- ドキュメントをテーブルから読み込む
- ローダにフィルタを追加する
- 接続と認証をカスタマイズする
- 顧客のコンテンツとメタデータを指定してドキュメントの構築をカスタマイズする
- ドキュメントを保存および削除するために
SpannerDocumentSaver
を使用してカスタマイズする方法
Spanner のチャット メッセージ履歴
Q&A のアプリケーションでは、会話内の発言の履歴が必要です。これは、そのユーザーからのそれ以降の質問に回答するためのコンテキストをアプリケーションに与えるためです。LangChain の ChatMessageHistory
クラスをアプリケーションで使用すると、メッセージをデータベースに保存しておいて、さらに回答を考案するために必要になったときに取り出すことができます。このメッセージとは、質問、回答、主張、挨拶などの、ユーザーまたはアプリケーションから会話中に発せられたテキストのことです。ChatMessageHistory
によって各メッセージが保存され、会話ごとにメッセージが連結されます。
Spanner では、このクラスを SpannerChatMessageHistory
で拡張します。
チャット メッセージ履歴の手順ガイド
チャット メッセージ履歴に関する Spanner ガイドでは、次のことを行う方法について説明します。
- LangChain をインストールして Google Cloudに対して認証を行う
- テーブルを初期化する
- メッセージの追加と削除のための
SpannerChatMessageHistory
クラスを初期化する - クライアントを使用して接続と認証をカスタマイズする
SpannerChatMessageHistory
セッションを削除する
Spanner のグラフストア
グラフストアは、グラフ データベースからノードとエッジを取得して保存します。グラフストアを使用すると、アプリケーションで次のことができます。
- グラフにノードとエッジを追加する
- グラフの走査と分析を実行する
- グラフのスキーマを調べる
グラフ QA チェーンでグラフストアを使用して、グラフとチャットできるアプリケーションを作成することもできます。
Spanner Graph でグラフストアを使用するには、SpannerGraphStore
クラスを使用して、ドキュメントから抽出されたノードとエッジを保存します。SpannerGraphStore
は Graph Query Language(GQL)をサポートしています。
グラフストアの手順ガイド
グラフストアに関する Spanner ガイドでは、次の方法について説明します。
- インテグレーション パッケージと LangChain をインストールする
- さまざまなデータソースからグラフを準備する
- 既存の Spanner Graph データベースを使用して
SpannerGraphStore
を初期化する - Spanner Graph にノードとエッジを追加する
- GQL クエリを使用して走査を実行する
- グラフクエリの結果を可視化する
- グラフをクリーンアップする
Spanner のグラフ QA チェーン
Spanner のグラフ QA チェーンは、Spanner グラフを使用して質問に回答します。質問に回答するグラフ QA ワークフローは次のとおりです。
- グラフ QA が、LangChain LLM を使用して自然言語の質問を GQL クエリに変換します。
- Spanner Graph が、グラフストア インターフェースを使用して GQL クエリを実行します。
- GQL クエリの結果が LLM に返されます。
- LLM が質問に対する回答を生成して返します。
グラフ QA の手順ガイド
グラフ QA に関する Spanner ガイドでは、Spanner とグラフ QA を使用して質問に回答する方法を紹介します。ここでは、次の方法について説明します。
LLMGraphTransformer
を使用して、非構造化テキストブロブからグラフを作成する。SpannerGraphStore
クラスを使用して、グラフを Spanner Graph に保存する。SpannerGraphQAChain
インスタンスを初期化する。- Spanner Graph のグラフストアを使用して、自然言語による質問に対して回答を生成する。