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で利用できる。

