- はじめに:Snowflake上でAI関数を使える時代に
- Cortex AI Functionsとは?
- 旧Cortex関数と現在のAI関数の対応表
- まず覚えたい主要AI関数の使い分け
- AI_COMPLETE:自由なプロンプトで回答を生成する
- SUMMARIZE:1つの長文を短く要約する
- AI_TRANSLATE:SQLだけで多言語翻訳する
- AI_SENTIMENT:レビューや問い合わせの感情を分析する
- AI_AGG / AI_SUMMARIZE_AGG:複数行のテキストをまとめて分析する
- AI_EXTRACT:文書や画像から情報を抽出する
- Cortex AI関数を使うときの権限
- Cortex AI関数の料金とコスト注意点
- 本番利用前に確認したい注意点
- まとめ
- 参考リンク
- 関連記事
はじめに:Snowflake上でAI関数を使える時代に
以前は SNOWFLAKE.CORTEX.COMPLETE や TRANSLATE などの旧Cortex関数を使うケースが多くありましたが、現在は AI_COMPLETE、AI_TRANSLATE、AI_SENTIMENT などのCortex AI関数を使う流れになっています。本記事では、初心者向けに主要なAI関数の使い分けを整理します。
Cortex AI関数を使えば、Snowflakeの外にデータを出さずに、SQLからLLM(大規模言語モデル)を呼び出せます。要約・翻訳・感情分析・情報抽出など、これまでアプリ側で実装していた処理を、SQLだけで完結させられるのが大きな魅力です。Cortex全体像は Snowflake Cortexとは?生成AI機能の全体像と料金 もあわせてご覧ください。
Cortex AI Functionsとは?
Cortex AI Functions(AISQL) は、Snowflakeが提供するAI機能の集合体です。AI_COMPLETE をはじめとした AI_* 系関数を中心に、テキスト生成・分類・翻訳・要約・情報抽出・感情分析などをSQLから呼び出せます。
- SQL一発でLLMにテキストを渡し、応答を取り出せます。
- 関数ごとに用途が分かれており、選びやすい設計です。
- 利用可能なモデル・関数はリージョンや時期により変わるため、最新情報は公式ドキュメントを確認してください。
旧Cortex関数と現在のAI関数の対応表
過去記事では旧 SNOWFLAKE.CORTEX.* 系の関数がよく登場しますが、新規実装では AI_* 系を中心に検討するのがおすすめです。対応関係を整理します。
| 目的 | 現在おすすめの関数 | 旧関数・関連関数 | 用途 |
|---|---|---|---|
| 自由なAI回答生成 | AI_COMPLETE | SNOWFLAKE.CORTEX.COMPLETE | プロンプトに対して回答を生成 |
| 翻訳 | AI_TRANSLATE | SNOWFLAKE.CORTEX.TRANSLATE | テキストを別言語に翻訳 |
| 感情分析 | AI_SENTIMENT | SNOWFLAKE.CORTEX.SENTIMENT / ENTITY_SENTIMENT | レビューや問い合わせの感情分析 |
| 単一テキスト要約 | SNOWFLAKE.CORTEX.SUMMARIZE | − | 長文テキストを要約 |
| 複数行の要約 | AI_SUMMARIZE_AGG | − | 複数行の文章をまとめて要約 |
| 複数行から洞察抽出 | AI_AGG | − | 問い合わせ一覧やレビュー一覧から傾向を抽出 |
| 文書・画像から情報抽出 | AI_EXTRACT | EXTRACT_ANSWER | PDFや画像、文書から情報抽出 |
| トークン数確認 | AI_COUNT_TOKENS | COUNT_TOKENS | コストや上限の事前確認 |
旧関数は当面の互換用として残されていますが、Snowflake公式は AI_* 系の標準サーフェスへ統一する方針を示しており、旧 COMPLETE は将来的な非推奨化も案内されています。最新の扱いは公式ドキュメントで確認してください。
まず覚えたい主要AI関数の使い分け
| やりたいこと | 使う関数 |
|---|---|
| プロンプトで自由に応答を作りたい | AI_COMPLETE |
| 1つの長文を短く要約したい | SNOWFLAKE.CORTEX.SUMMARIZE |
| 多言語のテキストを翻訳したい | AI_TRANSLATE |
| テキストの感情を判定したい | AI_SENTIMENT |
| 複数行をまとめて要約・分析したい | AI_SUMMARIZE_AGG / AI_AGG |
| 文書や画像から情報を抜き出したい | AI_EXTRACT |
| 事前にトークン数を確認したい | AI_COUNT_TOKENS |
AI_COMPLETE:自由なプロンプトで回答を生成する
AI_COMPLETE は、指定したモデルとプロンプトを使ってAIの回答を生成する関数です。文章生成、分類、要約、抽出、変換など幅広い用途に使えます。旧 SNOWFLAKE.CORTEX.COMPLETE の更新版として位置づけられているため、これから新しく学ぶ場合は AI_COMPLETE を中心に覚えるのがおすすめです。
SELECT AI_COMPLETE(
'mistral-large2',
'次の商品レビューから良かった点を3つ箇条書きで抽出してください: ' || review_text
) AS ai_response
FROM product_reviews
LIMIT 10;
- 第1引数はモデル名(例:
mistral-large2)。 - 第2引数は指示文(プロンプト)。
- モデルによって精度・速度・コストが変わります。利用可能なモデルとリージョンは公式の「Models and regional availability」で確認します。
詳しい使い方は Snowflake Cortex AI_COMPLETE入門 でまとめています。
SUMMARIZE:1つの長文を短く要約する
SNOWFLAKE.CORTEX.SUMMARIZE は、1つのテキストを要約するシンプルな関数で、現在も公式に提供されています。長文の問い合わせやチケット本文を「とりあえず短くまとめたい」場合の入り口として使えます(公式上は英語入力テキストの要約として説明されています)。
SELECT
ticket_id,
SNOWFLAKE.CORTEX.SUMMARIZE(ticket_body) AS short_summary
FROM support_tickets
LIMIT 10;
用途に応じて、次のように使い分けるのがおすすめです。
- 1つの長文を短く要約したい →
SNOWFLAKE.CORTEX.SUMMARIZE - 複数行の問い合わせ・レビューをまとめて要約したい →
AI_SUMMARIZE_AGG - 要約の形式(文字数・箇条書き・日本語指定など)を細かく指定したい →
AI_COMPLETE
-- 複数行をまとめて要約したい場合
SELECT AI_SUMMARIZE_AGG(ticket_body) AS overall_summary
FROM support_tickets;
詳細は Snowflake Cortex SUMMARIZE入門 もご覧ください。
AI_TRANSLATE:SQLだけで多言語翻訳する
AI_TRANSLATE は、テキストを別の言語に翻訳する関数です。旧 SNOWFLAKE.CORTEX.TRANSLATE の更新版として位置づけられており、新規実装ではこちらを使うのがおすすめです。
SELECT AI_TRANSLATE(
comment_text,
'ja',
'en'
) AS comment_en
FROM user_comments
LIMIT 10;
- 第1引数は翻訳したいテキスト。
- 第2引数は翻訳元の言語コード。
- 第3引数は翻訳先の言語コード。
- 翻訳元が分からない場合は、第2引数に空文字
''を指定すると自動検出します。 - 第4引数
return_error_detailsにTRUEを指定すると、エラー詳細を含むOBJECTを返せます。
対応言語の一覧や詳細仕様は Snowflake Cortex AI_TRANSLATE入門 でまとめています。
AI_SENTIMENT:レビューや問い合わせの感情を分析する
AI_SENTIMENT は、テキストの感情を判定する関数です。レビューやサポート問い合わせ、SNS投稿などに対して、ポジティブ/ネガティブ/ニュートラルといった傾向を取り出せます。
SELECT
review_text,
AI_SENTIMENT(review_text) AS sentiment_result
FROM product_reviews
LIMIT 10;
カテゴリ(観点)を指定すると、観点別の感情を抽出できます。価格・品質・サポートなど、ビジネスで気になる軸を渡せる点が便利です。
SELECT
review_text,
AI_SENTIMENT(review_text, ['price', 'quality', 'support']) AS sentiment_by_category
FROM product_reviews
LIMIT 10;
- 文章全体の感情と、観点別の感情をJSONで取り出せます。
- 旧
SNOWFLAKE.CORTEX.SENTIMENTやENTITY_SENTIMENTに相当する用途を、AI_SENTIMENTに集約できます。 - 結果のスコア定義や応答仕様は、リージョン・モデルにより差が出る場合があるため、最新情報は公式ドキュメントを確認してください。
AI_AGG / AI_SUMMARIZE_AGG:複数行のテキストをまとめて分析する
通常の AI_COMPLETE や SUMMARIZE は1行ごとの処理に向いています。一方で、問い合わせ一覧やレビュー一覧など複数行をまとめて分析したい場合は、AI_AGG や AI_SUMMARIZE_AGG が便利です。
SELECT AI_AGG(
review_text,
'このレビュー全体から、ユーザーが不満に感じている点を3つにまとめてください'
) AS insights
FROM product_reviews;
AI_SUMMARIZE_AGG:複数行テキストの汎用的な要約(プロンプト指定不要)。AI_AGG:複数行テキストを特定観点で集約・要約(プロンプトで指示を渡す)。- カテゴリやチケットID単位でまとめたいときは
GROUP BYと組み合わせて使えます。
AI_EXTRACT:文書や画像から情報を抽出する
AI_EXTRACT は、テキストやPDF・DOCX・PPTX・画像などから、指定したキーに沿って構造化情報を抽出する関数です。旧 EXTRACT_ANSWER は質問への短い回答抽出に向きますが、新規実装で構造化抽出を行う場合は AI_EXTRACT が扱いやすい選択肢です。
SELECT AI_EXTRACT(
document_text,
{'warranty_period': '保証期間は何年ですか?',
'support_email': 'サポート窓口のメールアドレスは何ですか?'}
) AS extracted
FROM product_manuals
LIMIT 10;
旧 EXTRACT_ANSWER の使い方と AI_EXTRACT への移行例は Snowflake Cortex EXTRACT_ANSWER入門|文書から答えを抽出する旧関数とAI_EXTRACT移行例 でまとめています。
Cortex AI関数を使うときの権限
Cortex AI関数を呼ぶには、ロールに対して関数の利用権限と、Cortex用のデータベースロールが必要です。
- 基本的に
USE AI FUNCTIONSアカウント権限と、CORTEX_USERまたはAI_FUNCTIONS_USERのデータベースロールが必要です。 - 環境によっては PUBLIC ロールに
USE AI FUNCTIONSが付与されている場合もありますが、企業利用では必要なロールだけに絞る方が安全です。 - 権限エラーが出た場合は、管理者にロール付与状況を確認してください。
USE ROLE ACCOUNTADMIN;
GRANT DATABASE ROLE SNOWFLAKE.CORTEX_USER TO ROLE analyst_role;
GRANT USE AI FUNCTIONS ON ACCOUNT TO ROLE analyst_role;
個別関数だけを許可したい場合は、USE AI FUNCTION <関数名> ON ACCOUNT を使う運用も可能です。詳細は各関数の入門記事を参照してください。
Cortex AI関数の料金とコスト注意点
- Cortex AI関数は、処理したトークン数やページ数に応じて課金されます(関数によって課金単位が異なります)。
AI_COMPLETE、AI_TRANSLATE、SUMMARIZEなどは、入力トークンと出力トークンがコストに影響します。- Snowflake側で内部プロンプトが追加されるため、課金トークン数は渡したテキストより多くなる場合があります。
- 大量行に対していきなり実行しない。まずは
LIMIT 10などで試します。 - クエリ実行中は通常のウェアハウス稼働コストも発生します。MEDIUM以下のウェアハウスが推奨されています。
- 本番利用では、利用状況を
SNOWFLAKE.ACCOUNT_USAGE.CORTEX_FUNCTIONS_USAGE_HISTORYやCORTEX_FUNCTIONS_QUERY_USAGE_HISTORYで確認します(将来CORTEX_AI_FUNCTIONS_USAGE_HISTORY等の追加・改名がある場合は最新の公式ドキュメントに従ってください)。
-- AI関数ごとのトークン・クレジット消費を確認
SELECT *
FROM SNOWFLAKE.ACCOUNT_USAGE.CORTEX_FUNCTIONS_USAGE_HISTORY;
クレジット急増の原因調査・削減方法は Snowflakeのクレジット急増の原因調査と削減方法 でも整理しています。
本番利用前に確認したい注意点
- リージョンによって利用できるモデルや関数が異なる場合があります。
- 一部機能はPreviewの場合があるため、本番利用前に公式ドキュメントで提供状況を確認してください。
- AI関数は大量行に実行するとコストが増えやすいです。まずは
LIMITを付けて少量データで検証します。 - 入力文が長い場合はトークン数に注意します。
AI_COUNT_TOKENSで事前見積もりが可能です。 - 機密情報や個人情報を扱う場合は、社内ルール・Service perimeter・クロスリージョン推論の設定を事前確認してください。
- エラー時に
NULLが返る関数もあるため、必要に応じてreturn_error_detailsをTRUEにしてエラー詳細を受け取りましょう。 - 結果はテーブルに保存し、再実行で同じ行を再処理しない設計にすると、コストが抑えられます。
まとめ
これからSnowflake Cortexを学ぶなら、まずは AI_COMPLETE、AI_TRANSLATE、AI_SENTIMENT、SUMMARIZE の使い分けを押さえるのがおすすめです。さらに、複数行のレビューや問い合わせをまとめて分析したい場合は AI_AGG や AI_SUMMARIZE_AGG、PDFや画像から情報を取り出したい場合は AI_EXTRACT へ進むと、Snowflake上でできるAI活用の幅が広がります。
最初は LIMIT 付きで小さく試し、課金状況を ACCOUNT_USAGE ビューで確認しながら、徐々に本番ワークロードへ広げていきましょう。
参考リンク
- Snowflake Cortex AI Functions(AISQL)概要
- AI_COMPLETE 公式リファレンス
- AI_TRANSLATE 公式リファレンス
- AI_SENTIMENT 公式リファレンス
- SUMMARIZE(SNOWFLAKE.CORTEX)公式リファレンス
- AI_SUMMARIZE_AGG 公式リファレンス
- AI_AGG 公式リファレンス
- AI_EXTRACT 公式リファレンス
- AI_COUNT_TOKENS 公式リファレンス
関連記事
- Snowflake Cortexとは?生成AI機能の全体像と料金 – Cortex全体像と料金の入門。
- Snowflake Cortex AI_COMPLETE入門 – 自由なプロンプトでLLMを呼ぶ中核関数。
- Snowflake Cortex AI_TRANSLATE入門 – 多言語翻訳の最新仕様。
- Snowflake Cortex SUMMARIZE入門 – SUMMARIZE/AI_SUMMARIZE_AGG/AI_AGGの使い分け。
- Snowflake Cortex EXTRACT_ANSWER入門|文書から答えを抽出する旧関数とAI_EXTRACT移行例 – 旧EXTRACT_ANSWERとAI_EXTRACTの整理。
- Snowflakeのクレジット急増の原因調査と削減方法 – AI関数のコスト管理にも有用。
- Snowflake入門ガイド|12ステップで学ぶ学習ロードマップ – Snowflake全体像の学習ハブ。


