Looker Studio、BigQuery、Vertex AI を利用した生成 AI チャットボット搭載ダッシュボード

  • Google Cloud
  • データ分析
  • AI/ML
  • エンジニア

投稿日:

はじめに

本記事では、Google の提供する BI ツールLooker Studioと、データウェアハウスBigQuery、及び ML プラットフォームVertex AIを利用して、生成 AI チャットボットを搭載したダッシュボードを作成する手順について解説します。

全体イメージ

全体イメージ

ダッシュボード例

ダッシュボード例

事前準備

  • Google Cloud のプロジェクトを作成し、課金を有効化します。
  • 下記 API を有効化します。
    • BigQuery API
    • BigQuery Connection API
    • Vertex AI API

ここでは詳細な手順は割愛します。Google の公式ドキュメントを参照してください。
参考:Google Cloud プロジェクトをセットアップする
参考:API を有効にしています

手順

  1. 1. データの準備
  2. 2. データの可視化
  3. 3. モデルの作成
  4. 4. 生成 AI チャットボットの作成

1. データの準備

本手順では、BigQuery の一般公開データセット iowa_liquor_sales(アイオワ州のお酒の販売データ)を元に簡素化したテーブルを作成します。

1-1. データセットの作成

BigQuery のコンソール画面にて、エクスプローラ内のプロジェクト名の右にあるを選択し、データセットを作成を選択します。

データセットの作成1

データセット ID とロケーションタイプを設定し、データセットを作成します。
ロケーションタイプはiowa_liquor_salesのロケーションと同じ、マルチリージョンUSを選択してください。

データセットの作成2

1-2. テーブルの作成

クエリエディタにて以下のクエリを実行してテーブルを作成します。
元のテーブルから、2024 年 5 月最終週の日ごとのお酒の種類別の販売量(ℓ)を抽出しています。
また、日ごとに上位 10 種のみを抽出しています。

CREATE TABLE blog_demo.table_demo AS
WITH RankedSales AS (
  SELECT
    date,
    category_name,
    ROUND(SUM(volume_sold_liters)) as total_volume_sold,
    ROW_NUMBER() OVER (PARTITION BY date ORDER BY SUM(volume_sold_liters) DESC) as rank
  FROM
    `bigquery-public-data.iowa_liquor_sales.sales`
  WHERE
    date >= "2024-05-26" AND date <= "2024-05-31"
  GROUP BY
    date, category_name
)
SELECT
  date,
  category_name,
  total_volume_sold
FROM
  RankedSales
WHERE
  rank <= 10
ORDER BY
  date, rank;
テーブルの作成

2. データの可視化

本手順では、Looker Studio を利用してテーブルの内容を可視化します。

2-1. レポートの作成

Looker Studio のコンソール画面にて、作成レポートを選択します。

レポートの作成

2-2. データの接続

データのレポートへの追加からBigQueryを選択し、作成したテーブルを選択します。

データの接続

2-3. グラフの作成

グラフを追加から積み上げ縦棒グラフを選択し、以下の通りに設定します。

設定項目設定値
ディメンションdate
内訳ディメンションcategory_name
指標total_volume_sold
並べ替えdate(昇順)
サブの並べ替えtotal_volume_sold(降順)
グラフの作成

3. モデルの作成

本手順では、BigQuery ML にて、Vertex AI のリモートモデルを作成します。

3-1. 外部接続の作成

BigQuery のコンソール画面にて、+追加外部データソースへの接続を選択します。
接続タイプにVertex AI リモートモデル、リモート関数、BigLake(Cloud リソース)を選択し、接続 ID に任意の名称を設定して接続を作成します。

外部接続の作成

3-2. Vertex AI へのアクセス権の付与

接続情報を確認し、サービスアカウントIDをコピーしてから、IAMと管理コンソール画面へ移動します。

アクセス権の付与1

アクセス権を付与を選択し、新しいプリンシパルにコピーしたサービスアカウントIDを貼り付け、ロールVertex AIユーザーを選択します。

アクセス権の付与2

3-3. モデルの作成

BigQuery のコンソール画面へ戻り、クエリエディタにて以下のクエリを実行してリモートモデルを作成します。
リモートモデルはgemini-proを選択しています。

CREATE MODEL IF NOT EXISTS `blog_demo.model_demo`
    REMOTE WITH CONNECTION `us.connection_demo`
    OPTIONS(
        ENDPOINT = 'gemini-pro'
    )
モデルの作成

4. 生成 AI チャットボットの作成

本手順では、作成したモデルと Looker Studio を接続し、チャットボット機能として実装します。

4-1. データの接続

Looker Studio のレポート編集画面へ戻り、データを追加BigQueryを選択後、
カスタムクエリ課金プロジェクトを選択して以下の SQL 文を入力します。
WITH 句でテーブルの情報を取得し、受け取った質問と組み合わせてプロンプトとしています。

WITH
table_data AS(
  SELECT
    STRING_AGG(CONCAT('date: ', CAST(date AS STRING), ', category_name: ', category_name, ', total_volume_sold: ', CAST(total_volume_sold AS STRING)), '\n') AS table_info
  FROM
  `blog_demo.table_demo`
)
SELECT
  STRING(unnest_ml_generate_text_result_candidates.content.parts[0].text) AS content_text
FROM
  ML.GENERATE_TEXT(
    MODEL `blog_demo.model_demo`,
    (
      SELECT
      CASE
      WHEN @prompt IS NULL OR @prompt = '' THEN ''
      ELSE CONCAT('以下のアイオワ州における日ごとのお酒の種類別の販売量(ℓ)のデータに関する質問です。\n',@prompt,'\n',table_info)
      END AS prompt
      FROM table_data
    ),
    STRUCT(
      800 AS max_output_tokens
    )
  )
LEFT JOIN
  UNNEST(JSON_EXTRACT_ARRAY(ml_generate_text_result.candidates)) AS unnest_ml_generate_text_result_candidates
データの接続1

パラメータを追加から、質問を@prompt として受け取るように設定し、データを追加します。

データの接続2

4-2. 入力フォームの作成

コントロールを追加から入力ボックスを選択し、コントロールフィールドに質問を設定します。

フォームの作成

4-3. 回答の表示欄の作成

グラフを追加からを選択し、以下の通りに設定します。

設定項目設定値
指標なし
タイトル回答
ヘッダーを表示しますなし
行番号を表示なし
テキストを折り返すあり
データが欠落「」(空白)を表示
背景と枠線枠線に黒を指定
回答欄の作成

動作確認

表示を選択し、レポートを確認します。
質問入力フォームにグラフに関する質問を入力し、回答が生成されることを確認します。

レポート

まとめ

Looker Studio、BigQuery、Vertex AI を利用した生成 AI チャットボット搭載ダッシュボードの作成方法について解説しました。

要点は、BigQuery 内のデータの Looker Studio での可視化と、BigQuery ML にて 作成した Vertex AI のリモートモデルと Looker Studio との接続になります。

次回予告

Google Cloud Dataprep by Trifacta 使ってみたの投稿を予定しています。

ご期待ください!

著者紹介

伊藤忠テクノソリューションズ株式会社 廣瀬 啓丞

伊藤忠テクノソリューションズ株式会社
廣瀬 啓丞

直近 1 年間ほど、パブリッククラウドに関する技術を担当。
最近は AI の活用を模索中。

Pickup