はじめに
こんにちは、株式会社タップルで機械学習エンジニアをしている田中宏樹です。主に生成AIを活用した業務効率化を行っております。
タップルではデータ基盤としてSnowflakeを採用しており、日々の施策検証においてデータが必要な際には、データ分析チームにSQLの作成を依頼しています。そこで私たちは、SQLを書かずに自然言語だけでデータを取得できる「SQL Agent」を開発・運用しています。
そのような状況の中、先日SnowflakeからSQL生成を支援する機能である「Snowflake Intelligence」がPublic Previewとして公開されました。
本記事では、Snowflake Intelligenceと「SQL Agent」を比較し、Snowflake IntelligenceのSQL生成機能が実務でどの程度通用するかを検証していきます。
Snowflake Intelligenceとは
Snowflake Intelligenceは、ユーザーがデータと対話できる、統合された直感的なインターフェースを提供する機能です。
ユーザーが自然言語で質問すると、システムがその意味を解釈し、対応するSQLを生成・実行します。
これにより、単純なデータの確認だけでなく一歩踏み込んだ分析までワンストップで行えるようになります。
この機能の大きな特徴は、SnowflakeがAI機能としてすでに提供している機能群(Cortex Agents / Cortex Analyst / Cortex Search)を共通のインターフェースに統合した点にあります。
事前に設定をしておけば、ユーザーはこれらの機能を意識することなく、Snowflake Intelligenceが裏側で最適なツールを呼び出してSQLを生成してくれます。
Cortex Analyst
Cortex Analystは、ユーザーの自然言語からSQLの生成・実行が可能な機能です。
SQLを生成する際には、構造化データだけでなく後述するセマンティックモデルも参照するため、ビジネス用語ベースの自然言語からでも高精度なSQL生成が可能です。
また、Cortex AnalystにはSnowflakeが独自の強化学習フレームワークで鍛え上げたArctic-Text2SQL-R1というモデルが採用されています。
これにより人間が作成するのも難しいような複雑なSQL生成を可能にしています。
Cortex Search
Cortex Searchは、ドキュメントや会話データなどの非構造化データを対象とした検索機能です。
キーワード検索とベクトル(セマンティック)検索を組み合わせたハイブリッド検索により高い精度の検索を実現しています。
この機能により、LLMは独自データをコンテキストとして参照できるようになり、文脈に即した具体的な回答が可能になります。
セマンティックモデル
どれほど高性能な基盤モデルであっても、一般的な知識でない企業独自のデータ定義やビジネスルールからは、ユーザーの意図を汲み取ったSQLを生成することはできません。
そこで鍵となるのがセマンティックモデルです。
セマンティックモデルは、テーブルの構造やカラム名の用語解説といった情報をYAML形式でまとめたもので、Cortex AnalystがSQLを生成するために参照します。
カラム名などから推測できない詳細な情報を与えることでSQL生成の精度を向上させる効果があります。
Cortex Agents
Cortex AgentsはSnowflake Intelligenceを支える、いわば「司令塔」の役割を担うオーケストレーションエンジンです。
LLMと連携してユーザーの自然言語を解釈し、Cortex AnalystやCortex Searchなどのツールの使い分けやデータソースへのアクセスを判断します。
Cortex Agentsがタスクを実行するワークフローは、以下の4ステップで構成されています。
- 計画:ユーザーの意図を正確に理解するため、複雑なリクエストを複数のサブタスクに分解。その上で、どのツールを使えば最適かを判断し、実行計画を立てる。
- ツールの活用:策定した計画に基づき、構造化データにはCortex Analystを、非構造化データにはCortex Searchを、といった形で最適なツールを呼び出してタスクを実行する。
- リフレクション:ツールの実行結果が期待通りかを自ら評価する。不十分な場合は、計画を修正してやり直したり、ユーザーに追加情報を求めたりと、次の最適な行動を自律的に決定する。
- 監視と反復:Cortex Agentsの導入後、アプリケーション開発者は、TruLensというオープンソースライブラリを使用してエージェントのインタラクションを監視できる。
権限に関して
Snowflake Intelligenceで実行するすべてのSQLはユーザーの認証情報を使用します。
そのため、実行するユーザーよりも強い権限が必要なデータをエージェント経由でアクセスできてしまうといったことが発生しません。
また、エージェントに対してアクセスできるロールの管理も可能です。
SQL Agentについて
ここでは、私たちタップルAIチームが独自に開発している「SQL Agent」についてご紹介します。
SQL Agentは自然言語の指示からSQLを生成して、実行結果を表示するアプリケーションです。
Difyのチャットフロー機能を用いて構築されており、メタデータとしてタップル独自の用語やビジネス知識を渡しています。
そのため、詳細な説明なしにユーザーの意図を汲んだSQLを生成できます。
私たちが既存のSaaSではなく独自で構築した理由は、主に以下の3点です。
観点 | 独自システムを採択した理由 |
---|---|
精度と表現力 |
|
柔軟性と拡張性 |
|
可観測性と継続的改善 |
|
私たちはSQL Agentを導入することで、SQLに慣れていないメンバーでもデータ抽出・分析を行える環境を目指しました。
これにより、データ活用のハードルを下げ、施策立案や意思決定をデータに基づいてよりスピーディーに実行できるカルチャーを醸成することを狙いとしました。
Snowflake Intelligence / SQL Agentの比較
ここでは、実際にSnowflake IntelligenceとSQL AgentでSQLの生成を行った結果を比較していきます。
それぞれのツールに対して同じ質問を投げた際の回答を確認していきます。
質問: 「今月のMAUは何人ですか?」
はじめに、テーブルのjoinが不要なシンプルな質問をしてみます。
両方の回答
両方ともセマンティックモデルを参照しているため、MAUという用語を正しく解釈した上でSQLを生成できました。
質問: 「2025年7月中で、登録してから1週間以内に写真をアップロードしているユーザーの数を教えて。」
次に、より実務に近いシナリオを想定し、複数のデータベースを参照するような複雑な質問をしてみます。
Snowflake Intelligenceの回答
参照しているデータベース環境が異なるため、最終的なデータが異なりますが、両方とも意図した通りのSQLを生成できました。
その上で、Snowflake Intelligenceが優れていると感じた点が2つあります。
一つ目が、「思考プロセスの可視化」です。
「Thinking steps」機能により、Agentがどのテーブルを参照し、どのような条件でフィルタリングを行ったのかという思考の過程を追跡できます。
これにより、意図しないSQLが生成された場合にどこで解釈が間違っているのかを特定しやすくなります。
二つ目が、「エラーからの自動リトライ機能」です。
生成したSQLを実行した際にコンパイルエラーが発生していますが、それを自ら検知して正しい構文になるようにリトライしながら修正しています。
私たちのSQL Agentには生成方針の可視化機能はありますが、自動リトライ機能は未実装となっています。
可視化機能や、試行錯誤のプロセスを自身で考えて自己解決する機能が標準で組み込まれている点はSnowflake Intelligenceの大きな強みだと感じました。
質問: 「マッチ成立からメッセージ送信までの平均日数をセグメント別に算出して」
最後に、生成に使用するテーブル内に該当するデータが存在しないため、SQLの生成が不可能な質問をして、その挙動を比較します。
無理にSQLを生成しようとするのか、あるいは「生成できない」と判断して回答するのかを確認します。
Snowflake Intelligenceの回答
Snowflake Intelligenceは、質問に答えるためのSQLの生成はしますが、それを実行してもユーザーが求める情報は取得できないと判断し、「この質問には答えられません」と回答しました。
SQL Agentは、試行錯誤をしてSQLの生成をした結果、最終的にSQLの実行エラーが発生してしまいました。
この結果から、Snowflake Intelligenceは追加の実装なしでも、データの意味や構造を理解し、不可能な要求には応じないという堅牢性を兼ね備えていることを示しています。
まとめ
これまでの検証から、Snowflake Intelligenceは、思考の可視化(Thinking steps)、自動リトライ機能、そして高い堅牢性など、汎用的な機能が標準で組み込まれていることがわかりました。
これを踏まえ、Snowflake IntelligenceとSQL Agent(独自システム)それぞれのメリットとデメリットを見ていきます。
Snowflake Intelligence | SQL Agent(独自システム) | |
---|---|---|
メリット |
|
|
デメリット |
|
|
Snowflake IntelligenceはSnowflakeのエコシステムに統合されているため、「管理の容易さ」と「信頼性」に優れています。また、既存の権限管理を流用でき、複雑な運用が不要です。
一方で、その手軽さと引き換えに、Snowflakeの枠組みを超えるようなカスタマイズは難しくなります。加えて、データウェアハウスの設計の質が直接影響を与えるため、管理コストが高くなります。
ただし、これはデメリットであると同時に、形骸化しがちな権限設定を見直し、組織全体のデータガバナンスを強化する良い機会ととらえることもできます。
対する、SQL Agent(独自システム)のメリットは「高い柔軟性」です。
特定のビジネスニーズに合わせた複雑なロジックを実装したり、最新のAI技術を迅速に取り入れたりと、思い通りのカスタマイズが可能です。
しかしその反面、認証や権限管理といった周辺機能も自前で実装・運用する必要があり、システム全体の開発・運用コストは増大します。
結論として、どちらのアプローチにもメリットとデメリットがあり、自社のビジネス戦略やリソースに合った選択をすることが重要です。
おわりに
本記事では、Snowflake Intelligenceの主要機能の紹介と、私たちが開発したSQL Agentと比較することで、その実力と可能性を掘り下げてきました。
この記事が、SQL生成システムの導入を検討されている方や、Snowflake Intelligenceと独自開発との間で最適なアプローチを模索されている方にとって、少しでも参考になれば幸いです。
参考
Snowflake Intelligence: Talk to Your Data, Unlock Real Business Insights
Inside Snowflake Intelligence: Five Pillars of Enterprise-Grade Agentic AI