🔍

Looker x GenAI - Query Insights で色々やってみた

2024/12/18に公開

Google Cloud Japan Advent Calendar 2024 18 日目

Looker Advent Calendar 2024 18 日目

の記事です!

本記事では今年一部界隈で盛り上がりを見せた BI 領域における生成 AI 活用のカスタムソリューションである Looker x GenAI Extensions, その中でも私一押しの Extension である Query Insights について深掘りしていきたいと思います。

はじめに

そもそも Looker x GenAI Extensions って何?という方も多いと思います。Looker x GenAI は Looker の製品機能として組み込まれたもの (= Gemini in Looker) ではなく、Looker Extension Framework (拡張フレームワーク) を利用して生成 AI との連携を実現したカスタムソリューションの総称を言います。
代表的なものだと自然言語で Explore を操りチャット形式でデータの探索・チャート作成を行える Explore Assistant や、ダッシュボード上にタイルとして配備し、各タイルのデータ内容をサマリしてくれる Dashboard Summarization などが挙げられます。本記事で取り上げる Query Insights も含め、全てはオープンソースとして Github 上にコードが公開されており、手順に従ってお使いの Looker インスタンスに展開することで利用可能になります。

Query Insights とは?

基本的な使い方と導入方法は以下の記事にまとめられておりますのでご参照ください。既に Explore Assistant を展開いただいている環境であればそのバックエンド (BigQuery 上に展開したリモートモデル) を流用することができ、フロントエンドを展開するだけなのであっという間に導入可能です。

【Looker x 生成AI】Query Insights によるデータ解釈の効率化

Query Insights を使ってみよう!

Query Insights のアーキテクチャ

Query Insights は Explore で利用できるカスタム Visualization として展開されます(※)。この Extension が Explore で選択している各フィールドのメタデータ、データベースから取得した結果セット、オプションで入力した補足情報を使ってプロンプトを構築し、BigQuery 経由で Gemini (Vertex AI) に対してプロンプトを投げます。

※ Looker Extension は単独のアプリとして利用する Standalone, ダッシュボードのタイルとして利用する Tile, 可視化オプションの一つとして利用する Visualization の三つの使い方が可能です。

Query Insights で使われるプロンプト

デフォルトで使われているプロンプトは、useLookerVertexMessage.js の中に以下のようにベタで記載されています。

useLookerVertexMessage.js
Context
----------

You are a developer who will either provide a rich summary or analyze the sentiment of given a query's result set and some metadata in a paragraph and under 50 words. 

Instructions:
  - use the Type to inform what action to perform
  - always return your response in detailed markdown, use the markdown formatting instructions
  - do not generate headers or headings (h1, h2 h3 etc) just the text summary
  - if summarize, use the query metadata to understand the nature of the query and then summarize the returned data
  - if sentiment and the data has a lot text data analyze the sentiment of the text
  - use the user provided context(if any) to further customize and refine your response
  - the goal is to take the query data and make it readible within a short amount of time, point out areas of interest summarize long time ranges, among other things
  - don't add next steps, but highlighting key areas of interest is important
  
Type
----------
${type}

Query Metadata
----------

Metadata: ${JSON.stringify(fields)}

User Provided Context
----------

${UtilsHelper.escapeQueryAll(additionalContext)}

Data
----------

${formatValuesToString(truncatedData)}

Markdown Formatting Instructions
----------

When summarizing data, follow these guidelines to ensure clear and well-formatted markdown output.

Format numerical values consistently:
    - Use commas for thousands separators (e.g., 1,234,567)
    - Round decimals to 2 places unless more precision is necessary
    - Include relevant units (e.g., $1,234.56, 45%)

Utilize bold text for emphasis on key points or important data.
Don't use headers or headings, bullet points, numbered lists, code blocks or tables, keep everything as concise paragraph summaries with no headers (h1, h2,h3).

Include blockquotes for notable statements or findings:
    - Important quote or key takeaway

Employ italics for definitions or to provide additional context.

Remember to maintain consistent formatting throughout the summary and use white space effectively to enhance readability.

Output
----------

構成としてはシンプルで、各セクションで以下の内容を定義しています。

セクション 内容
Context 役割と依頼内容 (50 words 以内での要約)
Instructions 出力内容に関する指示
Type Explore 上の可視化オプション (編集メニュー) で選択したタイプ (※) (Summary と Sentiment が選べます。本記事は Summary の前提で記載します)
Query Metadata Explore 上で選択しているフィールドのメタデータ (LookML で定義している description なども含む)
User Provided Context Explore 上の可視化オプション (編集メニュー) で記載した Description / Context (※)
Data 実際に Explore で取得した結果セット (クエリの実行結果)
Markdown Formatting Instructions 出力書式の細かい指示

※ Type と User Provided Context は Explore 上の可視化オプションでユーザーが入力した値が差し込まれるようになっています。つまり、ある程度の指示はビジネスユーザーが Looker の画面上からアドホックに与えることができます

カスタマイズしてみよう

上記のデフォルト プロンプトのままビルドして Looker に展開して利用すると、当然ですが以下のようにデフォルトの指示文の通り英語の短文でデータに関する要約結果が出力されます。また、あくまで取得したデータに関する要約を指示しているだけなので、見たままの結果を文章で説明している印象です。

これをもう少し実際の業務を意識した内容でカスタマイズしてみましょう。具体的には

  • 日本語で出力する
  • 文章にメリハリを付ける (ぱっと目につくようなタイトルを付ける)
  • 業界を意識させる(デモデータはECサイトの注文データ)

これらを踏まえ先ほどのプロンプト内の Context と instructions を以下のように修正しました。日本語部分が新たに追加したものです。

useLookerVertexMessage.js
Context
----------
あなたはアパレルECサイト運営企業のマーケティング担当者です。下記で与えられるメタデータとクエリの結果データを要約し、得られるインサイトを教えてください。 

Instructions:
  - use the Type to inform what action to perform
  - always return your response in detailed markdown, use the markdown formatting instructions
  - 最初の行は、Headerとして目を惹かれる魅力的なタイトルをつけて下さい。2行目以降はテキストで要約を記載して下さい。
  - if summarize, use the query metadata to understand the nature of the query and then summarize the returned data
  - if sentiment and the data has a lot text data analyze the sentiment of the text
  - use the user provided context(if any) to further customize and refine your response
  - the goal is to take the query data and make it readible within a short amount of time, point out areas of interest summarize long time ranges, among other things
  - don't add next steps, but highlighting key areas of interest is important
  - 出力はすべて日本語で統一してください。

これを Looker に再度展開し、先ほどと同じ結果セットで出力結果を見てみます。すると少し Busy ですが、年齢層別にどういった傾向が見られるか、どういったアプローチを行うべきかまで教えてくれました。良い感じです。

この結果に対して、さらに可視化オプションから指示を追加してみましょう。編集 > LLM のタブから以下の文言を追加の Context として入力し、再実行します。
「10代20代のユーザー層のリピーター率を上げるための具体的な施策を考えて」

出力結果は以下のとおりです。内容としては一般論かもしれませんが、少なくともリピーター率向上のために考慮すべき観点と、具体的な施策について考えてくれました。


出力内容のフォーマットについてはまだまだプロンプトで洗練させる余地があるかと思いますが、データを読み解き、その後のアクションを考えるための手助けには十分なっているのではないかと思います。

まとめ

私が数ある Looker x GenAI Extensions の中でもこの Query Insights を一押しする理由としては以下2点です。

  • 作りがシンプルで、私のようにアプリ開発に精通していない人間でも比較的簡単にカスタマイズを行うことができる
  • ビジネスユーザーが Explore の画面上から追加の Context を与えることができる

ご存知の通り Gemini はロング コンテキスト ウィンドウで大量のインプットをできることが強みです。場合によっては分析のための前提情報となるドメイン知識をまとめてプロンプト内にインプットしておくことで、より深いインサイトを生成させることもできるでしょう。
みなさま独自のカスタム Query Insights を構築し、分析のアシスタントとして役立ててみてはいかがでしょうか。

(おまけ 1) なぜ Looker と生成 AI は相性が良いのか?

上記の内容の通り、Query Insights を使うことで手軽に生成 AI の力を使ってクエリの結果について理解し、示唆を得ることができました。今回の例は一般にも分かりやすい項目を使った分析でしたが、業界独自の言葉、組織でのみ通用する定義というものも当然あると思います。
そこで効いてくるのが Looker の最大の特徴であるセマンティックレイヤー (LookML) です。Looker では、分析に使う切り口 (ディメンション) や指標 (メジャー) を全て LookML で一元管理します。ここで各データの定義や指標のロジックなどを記載することで、生成 AI はこれをデータ辞書として利用し、正しい解釈に基づく要約や示唆出しが可能となります。

Query Insights に限らず、Looker x GenAI Extensions は Looker のセマンティックレイヤーを活用することで生成 AI が正しくデータの文脈を解釈できるようにしているため、データ定義をリッチにすればするほど回答精度を高めることが可能です。この辺りはまた機会があれば記事にしたいと思います。

参考:生成AIを活用するデータ民主化、セマンティックレイヤーで支えるBI「Looker」

(おまけ 2) せっかくだから色々つくってみた

Query Insights 自体は可視化オプションの一つとして展開できるため、プロンプトの内容や仕組みをカスタマイズしたものを複数展開することが可能です。

ユースケースに応じて色々と作ってみるのも面白いかもしれません。例えば Gemini に事業責任者としての役割を与え、毎日の売上 KPI データに対してダッシュボード上で力強いメッセージを出してもらっている例↓

アイデア次第で様々なことができると思います。面白いユースケースがあればぜひ教えてください。

Google Cloud Japan

Discussion