サマリー
- 近年、生成AIは目覚ましい進化を遂げており、様々な分野で活用され始めています。
- Google CloudのデータウェアハウスであるBigQueryでも、生成AIを活用することで、これまでにないインサイトの獲得や業務効率化を実現できます。
- マーケター向けにBigQueryと生成AIを掛け合わせた事例を紹介します。
BigQueryでの生成AI活用例:ユーザーの呟きからのユーザー像推測
- 今回は、BigQueryの生成AI機能を用いて、ユーザーの日常的な呟きデータから、ユーザー像を推測し、自社商品をレコメンドする例をご紹介します。
▼ 今回の構築イメージ
ユーザーのコメントと自社商品マスターの情報を使ってペルソナ推定と商品レコメンドを行います。
目次
- 達成したいこと
- 今回の分析に使用するデータについて解説します。
- ユーザーのIDと日々の呟きを含むテーブルを使用します。
- データの準備
- BigQueryで生成AIを使うための準備について解説します。
- BigQueryで生成AIを使うための準備
- 生成AIを使用するためのコネクションの作成方法を解説します。
- BigQueryからGeminiを呼び出すためのモデルについて説明します。
- BigQueryでのクエリ実行
- 実際のSQLクエリを示し、生成AIを呼び出す方法を解説します。
ML.GENERATE_TEXT
関数について解説します。
- 結果の解釈と活用
- 生成AIによって得られたユーザー像の出力結果を解釈する方法を解説します。
- ユーザー像に基づいたマーケティング施策など、具体的な活用例を紹介します。
- まとめ
- 今回の内容をまとめ、BigQueryでの生成AI活用の可能性について再確認します。
1. 達成したいこと
今回はユーザーのコメントをもとにペルソナを推定し、レコメンド商品をピックアップする仕組みを作りたいと思います。
もちろん、Google Analytics4(GA4)の行動データをつかってペルソナを推定することも可能です。今回はわかりやすさのためにコメント情報を使用してますが、気が向いたらGA4の行動データからペルソナ推定する流れも書いていきたいと思います。
2. データの準備
ユーザーのコメントデータのダミーを作成してください。
例としては以下のようなデータになります。
ユーザーID | 日時 | コメント |
1 | 2001-01-02 13:00:00 | 今日は昼からサウナに行ってきました。 |
3. BigQueryで生成AIを使うための準備
BigQueryから生成AIを呼び出すための下準備です。
- コネクションを作成します。
- gemini用のモデルを作成します。
詳細はこちらの公式ドキュメントを参考にしてください。
※connection作成時のendpointはgemini-1.5-flashを使ってください。
4. BigQueryでのクエリ実行
Gemini Flashを使った生成AIを利用したクエリを説明します。
-- ↓↓データの調整
WITH base as (
SELECT
1 as id,
datetime("2001-01-02 13:00:00") as created_at,
"今日は昼からサウナに行ってきました。家に帰ったら溜まってたドラマを消化しよーっと" as comment
UNION ALL
SELECT
1 as id,
datetime("2001-01-05 17:00:00") as created_at,
"明日の朝はジョギングします。決意のランニング。" as comment
UNION ALL
SELECT
2 as id,
datetime("2001-01-07 03:00:00") as created_at,
"日経平均株価が気になるなぁ。4時から出社して市場を確認だ。" as comment
)
, agg as (
SELECT
id,
STRING_AGG("コメント日時: "||created_at||" "||comment, "\n") as comments,
array_to_string(["くつ","ぬいぐるみ","アクセサリー","高級別荘"],', ') as items -- 商品マスタの代わり
FROM base
GROUP BY id
)
SELECT
*
FROM
ML.GENERATE_TEXT(
-- 1. ここは読者が作成したモデルに置き換えてください。
MODEL `PROJECT.generativeai_models.remote_model_gemini_flash`,
(SELECT *,
-- 2. promptというカラムを作る
"""
以下はユーザーのコメントとコメントを投稿した日付です。
コメントを行った時間帯とその内容に注目しユーザーのペルソナを予測してください。
その後商品マスタから1点選んで、その商品をユーザーに勧めてください。
###コメント###
"""
|| comments
|| "###商品マスタ###\n"
|| items
as prompt
FROM agg),
STRUCT(
-- 3. 返答内容を微調整するときはここでパラメータ調整をしてください。
0.2 AS temperature,
1000 AS max_output_tokens,
TRUE AS flatten_json_output
)
)
PROJECT.generativeai_models.remote_model_gemini_flash
という名前で保存したModelを使っています。 """
以下はユーザーのコメントとコメントを投稿した日付です。
コメントを行った時間帯とその内容に注目しユーザーのペルソナを予測してください。
その後商品マスタから1点選んで、その商品をユーザーに勧めてください。
###コメント###
"""
|| comments
|| "###商品マスタ###\n"
|| items
5. 結果の解釈と活用
実際の実行結果を見てみましょう。
回答の中身は長いので詳細を見たい方は以下より確認してください。
Geminiの回答を見る
ml_generate_text_llm_result | ml_generate_text_rai_result | ml_generate_text_status | id | comments | items | prompt |
## ユーザーペルソナ予測
このユーザーは、**健康志向でアクティブなライフスタイルを送る人**と考えられます。 * **サウナに行く**、**ジョギングをする**など、健康的な活動を楽しんでいます。 ## 商品推薦 **商品マスタから「くつ」を推薦します。** **理由:** * ユーザーはジョギングをするため、ランニングシューズなどの**運動に適した靴**が必要と考えられます。 **具体的な推薦文例:** 「決意のランニング、素晴らしいですね!快適なランニングをサポートする、高機能ランニングシューズはいかがでしょうか?通気性抜群で、足への負担を軽減する機能も充実しています。ぜひお試しください!」 |
[{“category”:1,”probability”:1,”probability_score”:0.14199379,”severity”:1,”severity_score”:0.091058284},{“category”:2,”probability”:1,”probability_score”:0.064300053,”severity”:1,”severity_score”:0.099820659},{“category”:3,”probability”:1,”probability_score”:0.11397348,”severity”:1,”severity_score”:0.092196196},{“category”:4,”probability”:1,”probability_score”:0.038975071,”severity”:1,”severity_score”:0.031321116}]
|
1 | コメント日時: 2001-01-02 13:00:00 今日は昼からサウナに行ってきました。家に帰ったら溜まってたドラマを消化しよーっと コメント日時: 2001-01-05 17:00:00 明日の朝はジョギングします。決意のランニング。 |
くつ, ぬいぐるみ, アクセサリー, 高級別荘 |
以下はユーザーのコメントとコメントを投稿した日付です。
コメントを行った時間帯とその内容に注目しユーザーのペルソナを予測してください。 その後商品マスタから1点選んで、その商品をユーザーに勧めてください。 ###コメント### コメント日時: 2001-01-02 13:00:00 今日は昼からサウナに行ってきました。家に帰ったら溜まってたドラマを消化しよーっと コメント日時: 2001-01-05 17:00:00 明日の朝はジョギングします。決意のランニング。###商品マスタ###くつ, ぬいぐるみ, アクセサリー, 高級別荘 |
|
## ユーザーペルソナ予測
**ユーザー名:** (名前は不明) **年齢:** 30代後半~50代前半 **職業:** 会社員(サラリーマン) **ライフスタイル:** 早朝出勤、仕事熱心、経済ニュースに敏感 **興味関心:** 株式市場、経済、ビジネス **性格:** 勤勉、責任感強い、情報収集好き **推測根拠:** * コメントが早朝4時前に投稿されていることから、早朝出勤することが推測されます。 ## 商品推薦 **商品:** **高級別荘** **理由:** * ユーザーは経済的に余裕があり、仕事熱心なことから、休暇を充実させたいと考えている可能性があります。 **推薦文例:** 「日々の経済ニュースに疲れていませんか?\ |
[{“category”:1,”probability”:1,”probability_score”:0.10356715,”severity”:1,”severity_score”:0.079782002},{“category”:2,”probability”:1,”probability_score”:0.035277549,”severity”:1,”severity_score”:0.13660839},{“category”:3,”probability”:1,”probability_score”:0.13195425,”severity”:1,”severity_score”:0.1041124},{“category”:4,”probability”:1,”probability_score”:0.083890386,”severity”:1,”severity_score”:0.13443464}]
|
2 | コメント日時: 2001-01-07 03:00:00 日経平均株価が気になるなぁ。4時から出社して市場を確認だ。 | くつ, ぬいぐるみ, アクセサリー, 高級別荘 |
以下はユーザーのコメントとコメントを投稿した日付です。
コメントを行った時間帯とその内容に注目しユーザーのペルソナを予測してください。 その後商品マスタから1点選んで、その商品をユーザーに勧めてください。 ###コメント### コメント日時: 2001-01-07 03:00:00 日経平均株価が気になるなぁ。4時から出社して市場を確認だ。###商品マスタ###くつ, ぬいぐるみ, アクセサリー, 高級別荘 |
promptでより構造的に回答するように指示を出すと、その後の分析で使いやすい形で返答を得ることも可能です。
6.まとめ
いかがだったでしょうか。生成AIとBigQueryを掛け合わせることでデータに合わせた個別の回答を大量に生成することができます。今回は私が用意した簡単なデータを使いましたが、例えば
- (不動産・コールセンター) お問い合わせのカテゴライズ、データの表記ゆれの解消
- (小売・EC) メルマガの見出し作成によるパーソナライゼーション
- (メーカー) サイト来訪ユーザーのユーザー属性推定
など、様々な用途で活躍が期待できます。
気になる点がある方はお問い合わせフォームよりご連絡ください。
慣れ親しんだBigQueryからSQL利用者が簡単に生成AIを使えるのはGoogle Cloudの良いところですね。やはりデータを使うとなるとGCPが一番です(個人的な感想)。
コメント