このページでは、LangChain を使用して LLM 活用アプリケーションを構築する方法を紹介します。このページの概要は、GitHub の手続きガイドにリンクされています。
LangChain とは
LangChain は、デベロッパーが生成 AI アプリケーションや検索拡張生成(RAG)ワークフローを構築する際に役立つ LLM オーケストレーション フレームワークです。複雑な大規模言語モデル(LLM)ワークフローを合理化するための構造、ツール、コンポーネントが提供されます。LLM、そのユースケース、Google が提供する特定のモデルとサービスについて詳しくは、 Google Cloudの LLM のコンセプトとサービスの概要をご覧ください。
LangChain の詳細については、Google LangChain のページをご覧ください。LangChain フレームワークの詳細については、LangChain のプロダクト ドキュメントをご覧ください。
AlloyDB の LangChain コンポーネント
AlloyDB の LangChain クイックスタートで LangChain の使用方法を学習します。このクイックスタートでは、Netflix の映画データセットにアクセスするアプリケーションを作成し、ユーザーが映画データを扱えるようにします。
AlloyDB のベクトルストア
ベクトルストアによって、ドキュメントとメタデータがベクトル データベースから取得され、保存されます。ベクトルストアをアプリケーションで使用すると、ユーザークエリの意味を解釈するセマンティック検索が可能になります。この種の検索はベクトル検索と呼ばれ、これを利用すると概念的にクエリに一致するトピックを見つけることができます。クエリ時に、検索リクエストのエンベディングに最も類似したエンベディング ベクトルがベクトルストアによって取得されます。LangChain の中では、デベロッパーの代わりにベクトルストアが、エンベディングされたデータの保存とベクトル検索の実行を担当します。
AlloyDB でベクトルストアを扱うには、AlloyDBVectorStore
クラスを使用します。
詳細については、LangChain ベクトルストアのプロダクト ドキュメントをご覧ください。
ベクトルストア手順ガイド
ベクトルストアに関する AlloyDB ガイドでは、次のことを行う方法について説明します。
- インテグレーション パッケージと LangChain をインストールする
AlloyDBEngine
オブジェクトを作成し、AlloyDB データベースへの接続プールを構成する- ベクトルストアのテーブルを初期化する
VertexAIEmbeddings
を使用してエンベディング サービスを設定するAlloyDBVectorStore
を初期化する- ドキュメントを追加または削除する
- 類似ドキュメントを検索する
- ベクトル インデックスを追加して検索パフォーマンスを改善する
- カスタム ベクトルストアを作成して、ベクトル エンベディングを含むテーブルがある既存の AlloyDB for PostgreSQL データベースに接続する
AlloyDB のドキュメント ローダ
ドキュメント ローダによって、LangChain の Document
オブジェクトの保存、読み込み、削除が行われます。たとえば、処理対象のデータをエンベディングに読み込んでから、これをベクトルストアに格納することも、チェーンに具体的なコンテキストを提供するツールとして使用することもできます。
AlloyDB からドキュメントを読み込むには、AlloyDBLoader
クラスを使用します。AlloyDBLoader
はテーブルからドキュメントのリストを返しますが、これにはページ コンテンツを表す最初の列と、メタデータを表す他のすべての列が使用されます。デフォルトのテーブルでは、最初の列がページ コンテンツで、2 番目の列が JSON メタデータです。行のそれぞれが 1 つのドキュメントになります。これらの設定をカスタマイズする手順については、手順ガイドをご覧ください。
ドキュメントの保存と削除を行うには AlloyDBSaver
クラスを使用します。
詳細については、LangChain ドキュメント ローダのトピックをご覧ください。
ドキュメント ローダの手順ガイド
ドキュメント ローダに関する AlloyDB ガイドでは、次のことを行う方法を説明します。
- インテグレーション パッケージと LangChain をインストールする
- ドキュメントをテーブルから読み込む
- ローダにフィルタを追加する
- 接続と認証をカスタマイズする
- お客様のコンテンツとメタデータを指定してドキュメントの作成をカスタマイズする
- ドキュメントを保存および削除するために
AlloyDBSaver
を使用してカスタマイズする方法
AlloyDB のチャット メッセージの履歴
Q&A のアプリケーションでは、会話内の発言の履歴が必要です。これは、そのユーザーからのそれ以降の質問に回答するためのコンテキストをアプリケーションに与えるためです。LangChain の ChatMessageHistory
クラスをアプリケーションで使用すると、メッセージをデータベースに保存しておいて、さらに回答を考案するために必要になったときに取り出すことができます。このメッセージとは、質問、回答、主張、挨拶などの、ユーザーまたはアプリケーションから会話中に発せられたテキストのことです。ChatMessageHistory
によって各メッセージが保存され、会話ごとにメッセージが連結されます。
AlloyDB では、このクラスを AlloyDBChatMessageHistory
で拡張します。
チャット メッセージ履歴の手順ガイド
チャット メッセージ履歴に関する AlloyDB ガイドでは、次のことを行う方法について説明します。
- インテグレーション パッケージと LangChain をインストールする
AlloyDBEngine
オブジェクトを作成し、AlloyDB データベースへの接続プールを構成する- テーブルを初期化する
- メッセージの追加または削除のための
AlloyDBChatMessageHistory
クラスを初期化する - LangChain Expression Language(LCEL)を使用してメッセージ履歴のチェーンを作成する