Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SnowflakeのText-to-SQL機能「Cortex Analyst」を触ってみた

tabata0208
December 08, 2024

SnowflakeのText-to-SQL機能「Cortex Analyst」を触ってみた

2024/11/22に実施された「Snowflake最新情報キャッチアップ&LT大会!~第1回Snowflake OKINAWA User Group」にて登壇した際の投影資料です。
SnowflakeのText-to-SQL機能である「Cortex Analyst」について実際に触りつつ概要を学んだので、まとめました。

tabata0208

December 08, 2024
Tweet

More Decks by tabata0208

Other Decks in Technology

Transcript

  1. CONFIDENTIAL ©2024 ARISE analytics 2 目的 背景 ✓ 社内でSnowflakeのText-to-SQL 機能であるCortex

    Analystについて の情報共有を求められる機会があった。 ✓ 概要を正しく理解するために自身で 触ってみた。 本日の目的 ✓ Cortex Analyst初見となる方向けに、 その概要について紹介する。
  2. CONFIDENTIAL ©2024 ARISE analytics 3 自己紹介 株式会社ARISE analytics Team Lead

    田畑 幹 経歴 ➢ 銀行 • 法人営業 ➢ Web企業 • Python x Django x AWSのWebアプリ開発をメインで担当。 • Reactを使用したSPA開発にも参画。 ➢ ARISE analytics プロジェクト • 店頭端末でのレコメンド機能PoC • 会員向け特典サービスの分析 • Terraform, Kubernetes Kubernetesを使用した アプリ展開・管理基盤PoC • BigQueryを中心としたGAアクセスログ集約GCP基盤の構築 • Snowflakeを用いたDMP基盤構築 • Snowflakeを用いたホールディングス企業向け共通DB基盤構築 趣味・好きなもの 旅行、バイク、日本酒、ダイビング
  3. CONFIDENTIAL ©2024 ARISE analytics 4 ARISE analytics とは? • 社名

    • 資本構成 • 営業開始 • 所在地 • 役員 • 社員数 : 株式会社ARISE analytics : KDDI 85% Accenture 15% : 2017年4月1日 : 渋谷区 渋谷2-21-2 渋谷ヒカリエ31F : 代表取締役 坂本 崇 / KDDI : 170名/業務委託・派遣含め約560名 ※2024年4月1日現在 会社概要 事業領域
  4. CONFIDENTIAL ©2024 ARISE analytics 5 Cortex AIは、2023年11月に発表された、Snowflakeのデータプラットフォーム内で高度なAI および機械学習機能を提供する完全マネージドサービス。 https://www.snowflake.com/ja/data-cloud/cortex/ Cortex

    AIとは ✓ LLM関数 • SQL内部で利用可能&セットアップ不要なサーバレスの LLM関数を提供 ✓ AI & ML Studio • 技術的な専門知識がなくてもAI/ML機能を活用できる ようなノーコード/ローコードのUIを提供 • UIで複数のLLMを比較したり、ファインチューニングを行う ことが可能 ✓ Cortex Analyst • ビジネスユーザーが自然言語でデータにアクセスし、AIを 使用してテキストから回答までのインサイトを取得できるよ うにする ✓ Cortex Search • テキストファイルや、非構造化データ(ex. PDFファイル)か ら情報を取り込み、RAGアプリケーションを容易に構築で きるようにする
  5. CONFIDENTIAL ©2024 ARISE analytics 6 Snowflakeが提供する完全マネージド型のAIサービスで、自然言語でSnowflake上の構造化データ に対して質問すると、高精度でSQLクエリに変換して回答を生成するインターフェース。 https://www.snowflake.com/ja/data-cloud/cortex/ Cortex Analystとは

    ✓ 自然言語クエリによるセルフサービス分析 • 自然言語で問い合わせをすると、求められた結果を取得 するためのクエリ生成と実行が行われ、結果が返ってくる。 ✓ REST APIで様々なワークフローに統合可能 • Cortex Analystの機能はREST APIで提供。 Streamlitはもちろん、様々なアプリケーションとのコラボ レーションが可能 ✓ 最先端の大規模言語モデルを搭載 • Cortex Analyst は最新の Meta Llama および Mistral モデルを搭載。 Azure ホスト OpenAI GPT モデルへのアクセスも利用可能。 ✓ セマンティックモデルを用意することで高い正確性を実現 • ユーザが提供するセマンティックモデルをインプットにするこ とで高い正確性を提供可能 ✓ Snowflakeクオリティのセキュリティとガバナンス
  6. CONFIDENTIAL ©2024 ARISE analytics 7 利用時の構成(一例) REST API Client Semantic

    Model (yamlファイル) Cortex AI … Azure 認証用API クエリ対象 テーブル Snowflake ① ユーザ認証 ② APIトークンを取得 ③ Cortex AnalystのAPIに対して、ク エリ実行対象となるテーブルの Semantic Modelと、自然言語での 問い合わせを送信 ④ Cortex AI内部のLLMに対して、問 い合わせを実施(Azureでホストされ るOpenAIモデルの利用も可能)。 ⑤ LLMから、問い合わせに応じてSQL あるいは テキストを返却。 ⑥ クライアントに対して、LLMからの応答 をベースにレスポンス ⑦ クエリ対象テーブルに対して、APIから 返ってきたSQLを実行 ⑧ クエリ結果を取得 1 2 3 4 5 6 7 8 4’ 5’
  7. CONFIDENTIAL ©2024 ARISE analytics 8 Semantic Modelは、定義ファイルを用意することで、ビジネスユーザーの自然言語とデータベースのス キーマ定義の間のギャップを埋め、Cortex Analystが高精度で自然言語クエリに応答できるようにする ための仕組み。

    Semantic Model Semantic Model (yamlファイル) - このテーブルは、全国の店舗の日次の売上・コストを管 理しています。 - Snowflake上でのテーブル名はsales_tableです。 - このテーブルで取れる指標として売上・利益があります。 利益は売上-コストで表現できます。 - 分析軸として、都道府県の列を持っています。具体的に は東京都、大阪府などの値が入っています。 - etc...
  8. CONFIDENTIAL ©2024 ARISE analytics 9 API仕様 https://docs.snowflake.com/en/user-guide/snowflake-cortex/cortex-analyst/rest-api REST API Client

    Semantic Model (yamlファイル) Cortex AI … Azure 認証用API クエリ対象 テーブル Snowflake 1 2 3 4 5 6 7 8 4’ 5’ リクエスト 自然言語でのデータへの問い合わせと、クエリ対象のセマンティックモデルを 送信する。なおセマンティックモデルはステージに配置した上で、ステージのパ スを指定することで利用することも可能。 { "messages": [ { "role": "user", "content": [ { "type": "text", "text": "which company had the most revenue?" } ] }, ], "semantic_model_file": "@my_stage/my_semantic_model.yaml" }
  9. CONFIDENTIAL ©2024 ARISE analytics 10 API仕様 REST API Client Semantic

    Model (yamlファイル) Cortex AI … Azure 認証用API クエリ対象 テーブル Snowflake 1 2 3 4 5 6 7 8 4’ 5’ レスポンス 問い合わせに対するクエリ あるいは クエリの候補やテキストを返す。 明確な問い合わせに対しては、type: ”sql”のSQLステートメントを返し、 曖昧な問い合わせに対しては、type: “suggestion”のクエリ候補を返す。 { "message": { "role": "analyst", "content": [ { "type": "text", "text": "We interpreted your question as ..." }, { "type": "sql", "statement": "SELECT * FROM table" } ] } } https://docs.snowflake.com/en/user-guide/snowflake-cortex/cortex-analyst/rest-api
  10. CONFIDENTIAL ©2024 ARISE analytics 11 Cortex AnalystのAPIにリクエストを送る際には、デフォルトで定義されているデータベースロール をGRANTする必要がある。加えてセマンティックモデルを利用する上では更に追加で各種権限を付 与する必要がある。 https://docs.snowflake.com/en/user-guide/snowflake-cortex/cortex-analyst#access-control-requirements

    権限 ✓ デフォルトで定義されているデータベースロールのGRANT • SNOWFLAKEデータベース上に事前定義されているデータベースロールであるCORTEX_USER ロールを、リクエストを送るロールにGRANTする必要がある。 • なお、 CORTEX_USERはデフォルトでPUBLICロールに定義されており、Cortex AnalystはじめとしてLLM機能が誰でも利用できる状態になっている。会社のセキュリティ 要件などでNGとなる場合はPUBLICへのGRANTを外す必要があるので注意! ✓ 各種権限のGRANT (いずれも該当する機能を使わない場合は不要) • セマンティックモデルのYAMLファイルを配置するステージのUSAGE権限 • セマンティックモデル内で記載をしたCortex Search ServicesのUSAGE権限 • セマンティックモデル内に記載されたテーブルのSELECT権限