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

このページでは、LangChain を使用して LLM 活用アプリケーションを構築する方法を紹介します。このページの概要は、GitHub の手続きガイドにリンクされています。

LangChain とは

LangChain は、デベロッパーが生成 AI アプリケーションや検索拡張生成(RAG)ワークフローの構築に役立つ LLM オーケストレーション フレームワークです。複雑な LLM ワークフローを合理化するための構造、ツール、コンポーネントが提供されます。

LangChain の詳細については、Google LangChain のページをご覧ください。LangChain フレームワークの詳細については、LangChain のプロダクト ドキュメントをご覧ください。

Cloud SQL for MySQL の LangChain コンポーネント

Cloud SQL for MySQL には、LangChain とのインターフェースとして次のものがあります。

LangChain の使用方法を学習するには、Cloud SQL for MySQL の LangChain クイックスタートをご覧ください。

Cloud SQL for MySQL のベクトルストア

ベクトルストアによって、ドキュメントとメタデータがベクトル データベースから取得され、保存されます。ベクトルストアをアプリケーションで使用すると、ユーザークエリの意味を解釈するセマンティック検索が可能になります。この種の検索はベクトル検索と呼ばれ、これを利用すると概念的にクエリに一致するトピックを見つけることができます。クエリ時に、検索リクエストのエンベディングに最も類似したエンベディング ベクトルがベクトルストアによって取得されます。LangChain の中では、デベロッパーの代わりにベクトルストアが、エンベディングされたデータの保存とベクトル検索の実行を担当します。

Cloud SQL for MySQL でベクトルストアを使用するには、MySQLVectorStore クラスを使用します。

詳細については、LangChain ベクトルストアのプロダクト ドキュメントをご覧ください。

ベクトルストア手順ガイド

Cloud SQL for MySQL ベクトルストア ガイドでは、次のことを行う方法について説明します。

  • インテグレーション パッケージと LangChain をインストールする
  • MySQLEngine オブジェクトを作成し、Cloud SQL for MySQL データベースへの接続プールを構成する
  • テーブルを初期化する
  • VertexAIEmbeddings を使用してエンベディング オブジェクトを作成する
  • デフォルトの MySQLVectorStore を初期化する
  • テキストを追加する
  • テキストを削除する
  • ドキュメントを検索する
  • ベクトルでドキュメントを検索する
  • インデックスを追加してベクトル検索クエリを高速化する
  • インデックスを削除する
  • カスタム ベクトルストアを作成する
  • メタデータ フィルタを使用してドキュメントを検索する

Cloud SQL for MySQL のドキュメント ローダ

ドキュメント ローダによって、LangChain の Document オブジェクトの保存、読み込み、削除が行われます。たとえば、処理対象のデータをエンベディングに読み込んでから、これをベクトルストアに格納することも、チェーンに具体的なコンテキストを提供するツールとして使用することもできます。

Cloud SQL for MySQL でドキュメント ローダからドキュメントを読み込むには、MySQLLoader クラスを使用します。MySQLLoader メソッドは、テーブルから 1 つ以上のドキュメントを返します。MySQLDocumentSaver クラスを使用して、ドキュメントの保存と削除を行います。

詳細については、LangChain ドキュメント ローダのトピックをご覧ください。

ドキュメント ローダの手順ガイド

Cloud SQL for MySQL ドキュメント ローダ ガイドでは、次のことを行う方法について説明します。

  • インテグレーション パッケージと LangChain をインストールする
  • ドキュメントをテーブルから読み込む
  • ローダにフィルタを追加する
  • 接続と認証をカスタマイズする
  • お客様のコンテンツとメタデータを指定してドキュメントの作成をカスタマイズする
  • ドキュメントを保存および削除するために MySQLDocumentSaver を使用してカスタマイズする方法

Cloud SQL for MySQL のチャット メッセージ履歴

Q&A のアプリケーションでは、会話内の発言の履歴が必要です。これは、そのユーザーからのそれ以降の質問に回答するためのコンテキストをアプリケーションに与えるためです。LangChain の ChatMessageHistory クラスをアプリケーションで使用すると、メッセージをデータベースに保存しておいて、さらに回答を考案するために必要になったときに取り出すことができます。このメッセージとは、質問、回答、主張、挨拶などの、ユーザーまたはアプリケーションから会話中に発せられたテキストのことです。ChatMessageHistory によって各メッセージが保存され、会話ごとにメッセージが連結されます。

Cloud SQL for MySQL では、このクラスが MySQLChatMessageHistory で拡張されます。

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

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

  • LangChain をインストールして Google Cloud に対する認証を行う
  • MySQLEngine オブジェクトを作成し、Cloud SQL for MySQL データベースへの接続プールを構成する
  • テーブルを初期化する
  • メッセージの追加と削除のための MySQLChatMessageHistory クラスを初期化する
  • LangChain Expression Language(LCEL)と Google の Vertex AI チャットモデルを使用して、メッセージ履歴のチェーンを作成する