LangChain を使用して、LLM を活用したアプリケーションを構築する

このページでは、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 のチャット メッセージ履歴

質問に回答するアプリケーションでは、ユーザーからの追加の質問に回答するのにアプリケーションにコンテキストを提供するために、行われた会話の履歴が必要です。LangChain ChatMessageHistory クラスを使用すると、アプリケーションがメッセージをデータベースに保存し、必要に応じてさらに回答を作成するためにそれらを検索できます。メッセージには、質問、回答、談話、挨拶、ユーザーまたはアプリケーションが会話中に行ったその他の文章が含まれます。ChatMessageHistory は各メッセージを保存し、会話ごとにメッセージを連結します。

AlloyDB では、このクラスを AlloyDBChatMessageHistory で拡張します。

チャット メッセージ履歴の手順ガイド

チャット メッセージ履歴に関する AlloyDB ガイドでは、次のことを行う方法について説明します。

  • 統合パッケージと LangChain をインストールする
  • AlloyDBEngine オブジェクトを作成し、AlloyDB データベースへの接続プールを構成する
  • テーブルを初期化する
  • メッセージの追加と削除のための AlloyDBChatMessageHistory クラスを初期化する
  • LangChain Expression Language(LCEL)を使用してメッセージ履歴のチェーンを作成する