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