BigQuery データの LangChain アプリケーションへの統合
Google Cloud Japan Team
※この投稿は米国時間 2024 年 1 月 19 日に、Google Cloud blog に投稿されたものの抄訳です。
データは AI ソリューションの心臓部です。大量にある価値の高い BigQuery データを LLM アプリケーションに統合するには、どうすればよいでしょうか?大規模言語モデルは、非構造化データの使用に優れています。構造化データを含めることで、モデルの回答を充実させ、根拠あるものにして、データの新しい関係を捉えることができます。ここでは、LangChain BigQuery データローダを使ってこれを行う方法をご紹介します。
LangChain は、LLM をデータソースに接続し、データソース間の情報の流れを制御できるようにするオープンソース フレームワークです。LangChain を使用すると、モジュール式アーキテクチャと事前構築済みコネクタにより、LLM 開発を簡素化できます。一般的なユースケースには、大規模言語モデルを使用する chatbot や仮想アシスタント、コード生成ツール、カスタム ウェブ アプリケーションなどがあります。複数のステップや統合ポイントで構成された LLM ワークフローがある場合、そのタスクには LangChain を使用することをおすすめします。
LangChain を初めて使用する方やデータローダを使ったことがない方も、この投稿でステップごとに順を追って説明しますのでご参照ください。この例のモデルでは、複数の e コマース テーブルを分析して、マーケティング キャンペーンに最適なお客様を選択します。要約からコード生成まで、生成 AI のユースケースに対応するデータローダの使い方を学べます。
LangChain の使用を開始する
BigQuery と LangChain について同時に理解を深めるには、Vertex AI テキスト基盤モデルに質問するだけです。6 行のコードで完結できるというのは、なかなか優秀ですね。
さて、どのような回答が返ってくるでしょうか?
BigQuery is a fully managed, petabyte-scale analytics data warehouse that enables businesses to analyze all their data very quickly. It is a cloud-based service that offers fast performance, scalability, and flexibility. BigQuery is easy to use and can be integrated with other Google Cloud Platform services.(BigQuery は、ペタバイト規模のフルマネージドな分析データ ウェアハウスで、企業がすべてのデータを迅速に分析できるようにします。クラウドベースのサービスであり、高速なパフォーマンス、スケーラビリティ、柔軟性を提供します。BigQuery は使いやすく、Google Cloud Platform の他のサービスと統合できます。)
上級者向けのヒント: BigQuery Studio を使ってノートブックを実行し、このブログ投稿の SQL を BigQuery 内で直接試せるようになりました。
データローダを使用する
最初の例題をクリアしたので、次はドキュメント ローダの使い方を学びましょう。ここでは、BigQuery の一般公開データセットとして提供されている、TheLook という架空の衣料品 e コマースサイトのデータを使用します。
よく知らない多数のテーブルを使ってゼロから作成するとします。しかも、マーケティング チームは日本でキャンペーンを始めようとしています。ターゲットとするお客様を LLM に特定してもらうことはできるでしょうか?
データを理解するための最初のステップは、データを読み込むことです。このデータセットのスキーマにクエリを実行して、データ定義言語(DDL)を抽出しましょう。DDL を使用してテーブルを作成、変更します。また、DDL により個々の列とそれぞれの型について知ることができます。
前提条件として、BigQuery クライアント ライブラリを確実にインストールしておきます。
それでは、クエリを定義してデータを読み込みましょう。
このクエリでは、各テーブルのテーブル名と DDL を抽出しています。その後、メタデータ列にテーブル名、コンテンツに DDL を指定して、データローダを作成しています。
結果は、以下のようなドキュメントの配列になります。
最初のチェーンを書く
ドキュメントを読み込んだので、実際に動かしてみましょう。必要なのは、マーケティング キャンペーンを理解して必要な答えを与えてくれるクエリです。このタスクにはコード生成モデルを使用します。
すべてのテーブル メタデータを 1 つのプロンプトに stuff する(詰め込む)基本チェーンを作成します。テーブル数の多い大規模なデータセットの場合、より高度なチェーン アプローチが必要になります。というのも、各プロンプトの長さ、つまりコンテキスト ウィンドウの長さに制限があるからです。
たとえば、各テーブルの内容の要点を小さなドキュメントに圧縮し、map-reduce(マッピングしてから減らす)メソッドを使って要約することができます。また、各テーブルを反復処理しながらクエリを refine する(絞り込む)こともできます。
方法は以下のとおりです。LangChain Expression Language(LCEL)を使用して、3 ステップでチェーンを定義します。
- 各ドキュメントの page_content(各テーブルの DDL)を content という文字列にまとめます。
- 価値の高いお客様を見つけるプロンプトを作成し、テーブルのメタデータを結合した content を渡します。
- プロンプトを LLM に渡します。
クエリを見てみましょう。
これでクエリができました。まずはドライランで試してみることをおすすめします。それでは、日本のユーザーを取得するクエリへの回答を見てみましょう。
index |
user_id |
first_name |
last_name |
|
total_spend |
country |
0 |
86707 |
Robin |
Oneill |
robinoneill@example.com |
1533.96 |
Japan |
1 |
68275 |
Michael |
Fisher |
michaelfisher@example.org |
1422.46 |
Japan |
2 |
1988 |
Alexander |
Gill |
alexandergill@example.com |
1061.95 |
Japan |
以上、BigQuery データを LLM ソリューションに統合する方法をご紹介しました。ぜひ、生成 AI サンプル リポジトリで入手できるノートブックを使ってご自身でお試しください。
-Cloud プロダクト DevRel 担当責任者 Karl Weinmeister