Snowflakeの開発フレンドリーな設計のこだわり
Snowflakeは自社でクラウドインフラを持たず、AWS、Azure、Google Cloudの上で動作するマルチクラウド構成を持つデータウェアハウスだ。構造化・半構造化・非構造化データを一元管理でき、IcebergテーブルやSnowflake Postgresにも対応する。CPUおよびGPUを用いたPython・Spark実行環境も備える。処理規模は、2024年1月の平均日次クエリ数6.3億、最大テーブルサイズ4.9ペタバイト、1分間に単一顧客が実行したクエリ数24.6万、上位5社の顧客では合計228ペタバイトに達する。
田中氏がSnowflakeへの入社を決めた理由として真っ先に挙げたのは、「CLIのコマンド補完」だった。「他のデータベースも使ってきたが、デフォルトでここまで補完が効く環境は他になかった。最初に触れた瞬間に、いつか使いたいと思った」と振り返る。
開発者フレンドリーな設計への一貫したこだわり、ユーザーが何も設定しなくても毎年クエリパフォーマンスが向上し続ける仕組み、Iceberg・Postgres・StreamlitといったOSSへのコミッターを社内に擁し、OSSへ貢献する姿勢が入社の決め手となった。そしてそれは入社してからも業界横断でセマンティックモデルの標準仕様を策定するOSI(Open Semantic Interchange)イニシアチブを数十社以上と共同でリードしているなど、Snowflakeのその姿勢は変わっていない。
データ連携の観点では「マーケットプレイス」が大きな差別化要素だ。金融データ、天気予報、購買データ、人流・TV視聴率など、国内外のデータプロバイダーが提供するデータセットをゼロコピー・ゼロETLで即座に取り込める。
AIへの投資も積極的だ。OpenAI、Anthropicとの戦略的提携、Google CloudとのGTM戦略における協力体制強化を通じ、Claude、GPT-4系、Gemini、Mistral、VoyageといったLLMをSQL上のCortex AI関数から直接呼び出せる環境が整っている。
AIエージェントが「自分で考えて動く」とはどういうことか
こうしたデータ基盤の上に乗るのが「Snowflake Intelligence」だ。田中氏はここで、従来のLLMチャットボットとAIエージェントの根本的な違いを整理した。
チャットボットはユーザーの問いを受け取りLLMが直接回答を返すシンプルな構造だ。対してAIエージェントは、問いを受け取った後に「計画(Planning)」を立て、どのツールを使うかを選定し、実行結果が妥当かを検証したうえで最終回答を出す。
Snowflake Intelligenceのエージェントが推論の過程で呼び出すツールは大きく3種類だ。自然言語からSQLを生成する「Cortex Analyst」、非構造化データをハイブリッド検索で探索する「Cortex Search」、そしてPython等で定義した「カスタムツール」だ。エージェントは問いの内容に応じてどのツールをいつ使うかを自律的に判断する。具体的な構築手順を、田中氏はデモを交えながら順を追って解説した。
Cortex Analystが信頼性の高いText-to-SQLを実現するしくみ
エージェントの構築は、まずCortex Analystの設定から始まる。Cortex AnalystはText-to-SQLの機能だが、その精度を左右するのが「セマンティックモデル」と呼ばれるYAMLファイルだ。テーブルの構造と各カラムの意味を自然言語で記述しておくことで、ユーザーが「7月の売上を教えて」と問いかけた際にLLMが「どのテーブルのどのカラムを参照すればよいか」を正確に判断できるようになる。
デモで使用したECサイトのセマンティックモデルには、商品テーブル、マーケティングキャンペーンテーブル、売上テーブルの定義が記されており、各カラムに「マーケティングキャンペーンの名前を格納するフィールド」といった説明が付与されている。
なお、Snowflake にはセマンティックモデルとは別に「セマンティックビュー」という仕組みも存在する。CREATE SEMANTIC VIEWで作成するスキーマオブジェクトで、YAMLファイルを手動管理する代わりにSQLやSnowflakeのGUI画面から直接管理・共有でき、SQLで問い合わせ可能なビューとして機能する。Cortex Analystから利用可能だ。
さらにセマンティックモデル内に「Verified Query」という仕組みがある。LLMが生成するSQLは確率的な出力であり、同じ問いに対して毎回同一のSQLが生成される保証はない。重要なビジネス指標の計算ロジックでは、この不安定さが深刻な問題となる。
Verified Queryはその対策として、人間が検証した「正解クエリ」をセマンティックモデルに直接埋め込む仕組みを採用している。「6月から8月の売上合計はこのSQLで計算する」と定義しておくことで、頻出するビジネス問い合わせに対して一貫した結果を担保できる。「YAMLファイルを一度作れば、右側のプレイグラウンドで実際に発行されるSQLをリアルタイムで確認しながら精度を検証できる」と田中氏は説明する。
Cortex Searchはこれとは異なるアプローチで非構造化データを扱う。顧客サポートの対話ログを例に取ると、「10時01分:いらっしゃいませ」「10時02分:ジャケットの縫い目に問題がありました」といった時系列テキストが1カラムにまとめて格納されている場合、「縫い目」というキーワードで検索しても表現が異なる同種の問い合わせを拾いきれない。
Cortex Searchはこのテキストをベクトル化(エンベディング)し、意味的な類似性で探索するセマンティック検索と従来のキーワード検索を組み合わせたハイブリッド検索を実現する。対象カラムを指定してベクトル化の設定を行えば、数クリックで検索サービスが立ち上がる。
Cortex Agentsの設定と、見えないはずの推論を可視化する観測機能
Cortex AnalystとCortex Searchが構築できれば、次はそれらをエージェントに接続する番だ。Cortex Agentsの設定画面では、エージェント名、ユーザー向けのデフォルト質問の例文、利用するCortex AnalystとCortex Searchをそれぞれ選択して紐付け、保存ボタンを押すだけで、その瞬間からエージェントとして機能し始める。
デモでは「セールスAI」と名付けたエージェントに「7月から8月の商品カテゴリー別の売上トレンドを表示してください」と日本語で問いかけると、エージェントはどのデータソースを参照すべきかを自律的に判断し、Text-to-SQLを実行してグラフ付きの分析結果を返した。「なぜここで落ちていると思いますか」と続けて問うと、フィットネスウェアカテゴリの大幅減少といった示唆を含む分析レポートが生成された。Pythonで定義したカスタムツールを接続すれば、分析結果をメールで自動送信するといった拡張も実現できる。それだけでなく、Web上の情報を検索して回答に活用できる「Web Search」もビルトインツールとしてSnowflake Intelligenceで利用できる。
AIエージェントの可観測性がエンタープライズ運用を変える
エージェントが自律的に動作する環境が整う一方、本番運用に向けては避けて通れない課題がある。動作の透明性だ。LLMの出力は確率的であり、同じ問いに対して毎回同一の結果が返ってくる保証はない。回答が遅い、期待と異なる、といった事象が起きた際に「何が原因か」を追跡できなければ、エンタープライズ環境での安定運用は難しい。
Snowflake Intelligenceには、この課題に対応するモニタリング機能が標準で備わっている。各問い合わせに対してLLMがどのような計画を立て、どのツールを呼び出し、どれだけの処理時間を要したかが自動的にトレースされ、管理画面から参照できる。「回答が遅かったり期待と異なったりした場合、このトレースログからセマンティックモデルの記述に問題があるのか、LLMの計画段階に問題があるのかを特定できる。誰がいつどのような問い合わせを行ったかの履歴も残るため、ガバナンスの観点からも安心して運用できる」と田中氏は説明する。
Cortex Codeが開く「Agentic Engineering」の入口
田中氏はセッションの後半で、Agentic Engineeringの観点から「Cortex Code」を紹介した。CLIバージョンはすでにGA(一般提供)済み、Snowflake管理画面(Snowsight)上で動作するバージョンも記事公開時点でGAされている。
NOAA(アメリカ海洋大気庁)の気象データをゼロコピーで取り込んだ環境で「東京の天気を見せて」と自然言語で問いかけると、Cortex Codeはどのテーブルのどのカラムを参照すべきかを自律的に推論し、SQLを生成・実行する。機械学習モデルの構築にも対応しており、「機械学習モデルを作ってください」と指示すれば、カテゴリー変数・数値変数の自動判別、それぞれに応じた前処理ロジックの選定、モデルの訓練から精度指標の可視化までを含むPythonコードが出力される。
「Snowflakeはデータウェアハウスだけではなく、AIエージェントとAgentic Codingを提供するプラットフォームになっている」と田中氏は結んだ。
Snowflakeからのお知らせ
本セッションでご紹介したサービスにご興味を持たれた方は、ぜひ公式サイトのQuick StartやZennのブログをご覧ください。

