Snowflake 

Snowflake Intelligenceで始めるAIデータ分析:構築からText-to-SQL・RAG体験まで

はじめに

こんにちは、DATUM STUDIOの梅元です。

LLMを用いたソリューション構築に携わる機会が増え、最近ではCortex AnalystやCortex Agentsを用いたText-to-SQLのソリューション構築に挑戦しています。

そんな中、ついにSnowflake IntelligenceがGA(一般提供)されることになりました。
本記事では、Snowflake Intelligenceとは何か?に始まり、使い方のご紹介と魅力を余すことなくお伝えしたいと思います。

Snowflake Intelligence とは

Snowflake Intelligenceは、Snowflake上のデータと生成AIを統合し、Cortex Analyst(構造化データ分析)、Cortex Search(非構造データ検索)、Cortex Agents(自動タスク実行)を通じて、対話形式で洞察を得られるツールです。

Snowflake Intelligenceについて理解を深めるためには、まずCortex Analyst、Cortex Search、Cortex Agentsを理解する必要があります。
以下、簡単にご紹介します。

機能名説明
Cortex Analystユーザーの自然言語による問い合わせ内容を理解し、Snowflake上の構造化データに対して最適なSQLを自動生成する機能です。
いわゆる Text-to-SQL(自然言語→SQL) 機能を提供し、クエリに関する専門的な知識がなくてもデータ分析を実現します。
Cortex Searchベクトル検索・キーワード検索・リランキングを組み合わせたハイブリッド検索により、Snowflake上に格納されたテキストデータ(例:文書ファイルやPDFから抽出・分割したテキスト)を横断的に検索できる機能です。
意味的な類似性とキーワード一致の両面から、ユーザーの質問に最も関連する情報を抽出します。
Cortex Agentsユーザーの自然言語による問い合わせ内容に応じて最適なツールを自動で選択し、回答を生成するオーケストレーション機能を提供します。
問い合わせ内容の意図を理解し、Cortex AnalystとCortex Searchのどちらを使うべきかを判断したうえで、回答に必要なタスクを計画・実行します。

上記のCortex Analyst、Cortex Search、Cortex Agentsを組み合わせ、対話形式のUIを担うソリューションがSnowflake Intelligenceです。

Snowflake Intelligenceを構築してみよう

Snowflake Intelligenceは、とても簡単に構築することができます。
ここからは、以下の公式ガイドのデータを利用してSnowflake Intelligenceの構築方法をご紹介します。

Getting Started with Snowflake Intelligence
https://www.snowflake.com/en/developers/guides/getting-started-with-snowflake-intelligence

1.セットアップ

まず、データのセットアップをします。
公式ガイドのSetupの項目より、GitHubリポジトリにアクセスします。
リポジトリをローカルにクローンするか、もしくは直接setup.sqlをダウンロードしてご自身のSnowflake環境で実行します。

2.Cortex Searchの作成

続いて、Cortex Searchを作成します。
公式ガイドでは先にCortex Analystの作成が案内されていますが、後述するCortex Agentsの作成時も同様の手順で行うため、ここではCortex Analystの作成は省略します。

Snowsightの左側のナビゲーションメニューで、AIとML > Cortex検索を選択します。

右上の「作成」ボタンを押下します。

Cortex Searchの作成先とサービス名を以下のとおり指定し、「次へ」ボタンを押下します。

  • ・データベース:DASH_DB_SI
  • ・スキーマ:RETAIL
  • ・サービス名:Support_Cases

データを選択にてSUPPORT_CASESを選択し、「次へ」ボタンを押下します。

検索列を選択にてTRANSCRIPTを選択し、「次へ」ボタンを押下します。

属性を選択にてTITLE、PRODUCTを選択し、「次へ」ボタンを押下します。

列を選択にてSelect allを押下し、全ての列を選択したうえで「次へ」ボタンを押下します。

インデックス作成を構成にて、ターゲットラグ、埋め込みモデル、インデックス作成用のウェアハウスを指定して「作成」ボタンを押下します。

ここで注意点が1つあります。
デフォルトの埋め込みモデルであるsnowflake-arctic-embed-m-v1.5は、英語のテキストデータのみをサポートするモデルです。
日本語のテキストデータを対象にしたい場合は、多言語に対応しているsnowflake-arctic-embed-l-v2.0を選択してください。

Snowsightの設定言語が日本語の場合、Cortex Searchの作成時にターゲットラグの設定で以下のエラーが発生することがあります。
その場合は、一時的にSnowsightの言語設定を英語に変更してから作成を進めてください。

3.Cortex Agentsの作成

続いて、Cortex Agentsを作成します。
Snowsightの左側のナビゲーションメニューで、AIとML > エージェントを選択します。

右上の「エージェントを作成」ボタンを押下します。

以下のとおり設定して「エージェントを作成」ボタンを押下します。

  • ・データベースとスキーマ:SNOWFLAKE_INTELLIGENCE.AGENTSエージェントオブジェクト名:Sales_AI
  • ・表示名:Sales_AI

次に、エージェントに以下のサンプル質問を追加します。

  • ・6月から8月までの製品カテゴリー別の売上動向を教えてください
  • ・最近、カスタマーサポートチケットでジャケットに関してどのような問題が報告されていますか?
  • ・フィットネスウェアの売上が7月に急増したのはなぜでしょうか?

次に、エージェントにツールを追加します。
ここではエージェントが使用するツールとして、Cortex Analyst、Cortex Search、カスタムツール(メール送信プロシージャ)の3つを設定します。
ここで紹介する3つの設定は例示であり、実際の構築においては業務内容や目的に応じて必要なツールのみを任意に設定することができます。

Cortex Analystを追加します。

以下の内容で設定します。

  • ・セマンティックモデルファイル:DASH_DB_SI.RETAIL.SEMANTIC_MODELS > marketing_campaigns.yaml
  • ・名前:Sales_And_Marketing_Data
  • ・説明:DASH_DB_SI.RETAILスキーマの売上・マーケティングデータモデルは、マーケティングキャンペーン、製品情報、売上データ、ソーシャルメディアのエンゲージメントを連携させることで、小売業のパフォーマンスを包括的に把握できます。このモデルは、押下数やインプレッション数を通じてマーケティングキャンペーンの効果を追跡し、異なる地域における実際の売上実績とリンクさせることを可能にします。ソーシャルメディアのエンゲージメントは、インフルエンサーの活動やメンションを通じてモニタリングされ、すべてのデータは製品カテゴリとIDで連携されます。テーブル間の時系列的な連携により、マーケティングが売上実績やソーシャルメディアのエンゲージメントに及ぼす影響を、時間の経過とともに包括的に分析できます。
  • ・ウェアハウス:DASH_WH_SI
  • ・タイムアウト:60

Cortex Searchを追加します。

以下のとおり設定します。

  • ・データベース:DASH_DB_SI
  • ・スキーマ:RETAIL
  • ・ID列:ID
  • ・タイトル列:TITLE
  • ・名前:Support_Cases

カスタムツールを追加します。

以下のとおり設定します。

  • ・リソースタイプ:procedure
  • ・データベースとスキーマ:DASH_DB_SI.RETAIL
  • ・カスタムツール識別子:DASH_DB_SI.RETAIL.SEND_EMAIL()
  • ・名前:Send_Email
  • ・ウェアハウス:DASH_WH_SI
  • ・パラメーター(body)の説明:HTML構文を使用してください。取得したコンテンツがマークダウン形式の場合はHTMLに変換してください。本文が提供されていない場合は最後の質問を要約し、それをメールの本文として使用してください。
  • ・パラメーター(recipient_email)の説明:電子メールが提供されていない場合は、現在のユーザーの電子メール アドレスに送信します。
  • ・パラメーター(subject)の説明:件名が指定されていない場合は、「Snowflake Intelligence」を使用します。

Snowflake Intelligenceを体験する〜データ分析編〜

それでは早速、Snowflake Intelligenceを体験してみましょう。
Snowsightの左側のナビゲーションメニューで、AIとML > Snowflakeインテリジェンスを選択します。

チャット形式のUIが開きました。
チャット入力欄の下には、Cortex Agentsの作成時に登録したサンプル質問が表示されています。

1つ目の質問「6月から8月までの製品カテゴリー別の売上動向を教えてください。」を入力します。

質問を入力するとエージェントが内容を理解し、どのようにデータを取得して回答を生成するか計画を立て始めます。
その後計画に沿ってSQLの生成・実行が行われ、取得した結果から傾向を分析してグラフの表示まで自動で行われました。

Show Detailsを押下すると、詳細を確認できます。

詳細確認では、生成されたSQLも確認できます。

```SQL
WITH __sales AS (
  SELECT
    product_id,
    date,
    sales_amount
  FROM dash_db_si.retail.sales
), __products AS (
  SELECT
    category,
    product_id
  FROM dash_db_si.retail.products
), monthly_sales AS (
  SELECT
    DATE_TRUNC('MONTH', s.date) AS month,
    p.category,
    SUM(s.sales_amount) AS monthly_sales_amount,
    COUNT(s.date) AS transaction_count,
    MIN(s.date) AS min_date,
    MAX(s.date) AS max_date
  FROM __sales AS s
  INNER JOIN __products AS p
    ON s.product_id = p.product_id
  WHERE
    s.date >= '2025-06-01' AND s.date <= '2025-08-31' AND s.date <= CURRENT_DATE
  GROUP BY
    DATE_TRUNC('MONTH', s.date),
    p.category
)
SELECT
  month,
  category,
  monthly_sales_amount,
  transaction_count,
  min_date,
  max_date
FROM monthly_sales
ORDER BY
  month DESC NULLS LAST,
  category
 -- Generated by Cortex Analyst
;
```

SQLの内容を確認すると質問の意図のとおり、カテゴリ別かつ月別の売上額を集計するクエリであることが分かります。
質問に対する回答についても確認してみましょう。
まずはグラフに注目してみると、7月にフィットネスウェアの売上が大きく伸びています。

グラフは元になったデータと切り替えて表示できます。

エージェントも回答を見てわかるとおり、7月のフィットネスウェアの売上増に着目しているようです。

7月のフィットネスウェアの売上急増について、追加で質問してみます。
サンプル質問の3つ目「7月にフィットネスウェアの売上が大きく伸びたのはなぜですか?」と入力してみます。

「サマーキャンペーンとインフルエンサーの相乗効果によるもの」と回答が返ってきました。

キャンペーンやインフルエンサーについて、より詳細を探るため、追加で以下を質問してみます。

「キャンペーンごとに6月と7月のインプレッション数、クリック数、CTR、開始日、終了日、キャンペーン日数を出してください。各月の日別の平均インプ数、クリック数、CTRも合わせて提示してください。また、6月、7月のキャンペーン別、日別のインプ数、クリック数をグラフ化してください。」

キャンペーンは6月中旬から実施されていたようです。
7月は6月よりもキャンペーン期間が短いですが、平均のインプレッション数、クリック数は、6月と大きな差は見られません。
キャンペーンによって売上が急増したとは考えにくいようです。

エージェントは6月から開始したキャンペーンが7月で最適化され、売上増に貢献したという回答です。

続いて、インフルエンサーについても詳細を質問してみます。
「6月、7月のインフルエンサー別、日別のメンション数を取得してください。」

NovaFitStarというインフルエンサーが7月1日〜7月7日まで活動しており、その他のインフルエンサー(データ上はNULLとなっており、詳細は不明)よりも40倍近いメンション数を獲得しているようです。

エージェントも、NovaFitStarが売上急増の要因と回答しています。

では、NovaFitStarによってどのぐらい売上が伸びたのでしょうか?
インフルエンサーの影響で、通常よりも多くの注文が発生したと考えられそうです。
どのタイミングで、どの程度売れたのか、日別の推移を確認してみましょう。

追加で以下を質問してみます。

「フィットネスウェアの6月から7月の日別の売上金額、販売数量、取引数を取得してください。それぞれ個別にグラフ化してください。グラフはそれぞれ色を変えてください。」

NovaFitStarの活動期間と同じ7月1日〜7月7日の間に販売数量が急増しており、その結果売上が急増していることが分かります。
取引件数はいずれの日も40件と一定であるため、1回の取引あたりの販売数量が急増していると考えられます。

エージェントの回答には「戦略的なインフルエンサーマーケティングが短期間で既存顧客の購買行動を劇的に変化させ、売上を約10倍に押し上げる効果があることが明確に実証されました。」とあります。

日別の取引件数が40件と常に一定であることから、新規顧客ではなく既存顧客と判断しているようです。
今回利用したガイドラインのデータでは顧客情報に関するテーブルがないため、新規顧客か既存顧客なのか判断することができませんが、取引件数が日々一定であることを考慮すると既存顧客と考えるのが妥当と考えられます。
取引件数が日々一定である点は不自然にも感じますが、今回利用したガイドラインのデータは意図的にそのように作成されたダミーデータだと仮定します。

さて、これまでのエージェントとの対話を通じて各月の売上の取得・可視化から、7月の売上急増についての調査まで進めてきました。
ここで注目いただきたいのは、これらの操作を自然言語による指示のみで実施できているという点です。
単に指示に沿ったデータを取得するというだけではなく、取得したデータからエージェントが自動で洞察し、ユーザーに示唆を与えてくれています。Snowflake Intelligenceが非常に強力なソリューションであることを実感いただけたのではないでしょうか。

Snowflake Intelligenceを体験する〜RAG編〜

続いてSnowflake IntelligenceでCortex Searchを使ったRAGを体験してみましょう。

SUPPORT_CASESテーブルのTRANSCRIPT列には、顧客からの問い合わせの会話文が格納されています。
「2. Cortex Searchの作成」で、このTRANSCRIPT列を検索対象としたCortex Searchを作成しました。
顧客からの問い合わせ内容にはどのような傾向が見られるでしょうか。

サンプル質問の2つ目、「最近、カスタマー サポート チケットでジャケットに関してどのような問題が報告されていますか?」を入力してみます。

指示の内容からエージェントがCortex Searchを使うべきと判断し、関連性が高い問い合わせ内容を検索して、それらをもとに回答を生成します。
結果を見るとジャケットの縫い目の破れに関して複数の報告があり、それらについて要約したうえで回答してくれていることが分かります。

エージェントの回答部分右下の数字にカーソルを合わせると、検索で取得した問い合わせ内容がポップアップ表示されます。

また、sourceを押下することでも右側のサイドバーが開き、検索結果の問い合わせ内容を確認できます。

回答の根拠となるドキュメントを簡単に確認できる点が便利です。

Snowflake Intelligenceを体験する〜カスタムツール編〜

最後にカスタムツールを試してみます。

ここまでCortex Analystによるデータ分析、Cortex Searchによるドキュメント検索を体験してきました。
実はこれらのツール以外に、独自に定義したプロシージャやファンクションをカスタムツールとして登録しておくことで、ユーザーからの指示に応じてエージェントがそれらを実行してくれる仕組みが備わっています。

setup.sqlの最下部で、send_emailプロシージャを作成しています。
そして、「3. Cortex Agentsの作成」で、作成したプロシージャをカスタムツールとして登録しています。事前準備はこれだけです。

最後に「これまでの内容を整理してメールしてください。」と指示します。

メールボックスを確認すると、以下のメールが送信されていました。
指示通り、要約結果をメール送信してくれました。

カスタムツールを活用することで、TeamsやSlackに通知するといった連携も実現できそうです。

おわりに

ガイドラインのデータをもとにSnowflake Intelligenceを一通り体験してきましたが、いかがでしたでしょうか。

画面上から簡単な設定でText-to-SQLやRAG機能を備えたAIエージェントを試すことができる点は、とても魅力的ですね。
特筆すべきは、これらのUI部分をノーコードで実現できている点にあります。従来であれば、Streamlitなどを用いて自前で実装する必要がありました。

  • ・ユーザーとエージェントの対話履歴の管理
  • ・リクエストの送信、受け取ったレスポンスの解析
  • ・グラフの描画

など、自前で実装するとなると負担が大きい部分もありますが、実装する必要がなくリッチなUIを備えたAIエージェントを構築できる点こそSnowflake Intelligenceの大きな魅力だと思います。

この記事をきっかけに、Snowflake Intelligenceを使ってみよう!という方が増えれば幸いです。
みなさんもぜひ、Snowflake Intelligenceを体験してみてください。

このページをシェアする: