Snowflake Cortex AI関数まとめ|AI_COMPLETE・AI_TRANSLATE・AI_SENTIMENT・SUMMARIZEの使い方

Snowflake Cortex AI関数の全体像を示すアイキャッチ図。AI_COMPLETE、AI_TRANSLATE、AI_SENTIMENT、SUMMARIZEといった主要関数の役割と使い方を整理し、データ基盤上で生成AIを活用するイメージを表現 Snowflake
この記事をシェアする𝕏B!FacebookLINEPocket

はじめに:Snowflake上でAI関数を使える時代に

以前は SNOWFLAKE.CORTEX.COMPLETETRANSLATE などの旧Cortex関数を使うケースが多くありましたが、現在は AI_COMPLETEAI_TRANSLATEAI_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_COMPLETESNOWFLAKE.CORTEX.COMPLETEプロンプトに対して回答を生成
翻訳AI_TRANSLATESNOWFLAKE.CORTEX.TRANSLATEテキストを別言語に翻訳
感情分析AI_SENTIMENTSNOWFLAKE.CORTEX.SENTIMENT / ENTITY_SENTIMENTレビューや問い合わせの感情分析
単一テキスト要約SNOWFLAKE.CORTEX.SUMMARIZE長文テキストを要約
複数行の要約AI_SUMMARIZE_AGG複数行の文章をまとめて要約
複数行から洞察抽出AI_AGG問い合わせ一覧やレビュー一覧から傾向を抽出
文書・画像から情報抽出AI_EXTRACTEXTRACT_ANSWERPDFや画像、文書から情報抽出
トークン数確認AI_COUNT_TOKENSCOUNT_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_detailsTRUE を指定すると、エラー詳細を含む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.SENTIMENTENTITY_SENTIMENT に相当する用途を、AI_SENTIMENT に集約できます。
  • 結果のスコア定義や応答仕様は、リージョン・モデルにより差が出る場合があるため、最新情報は公式ドキュメントを確認してください。

AI_AGG / AI_SUMMARIZE_AGG:複数行のテキストをまとめて分析する

通常の AI_COMPLETESUMMARIZE は1行ごとの処理に向いています。一方で、問い合わせ一覧やレビュー一覧など複数行をまとめて分析したい場合は、AI_AGGAI_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_COMPLETEAI_TRANSLATESUMMARIZE などは、入力トークンと出力トークンがコストに影響します。
  • Snowflake側で内部プロンプトが追加されるため、課金トークン数は渡したテキストより多くなる場合があります。
  • 大量行に対していきなり実行しない。まずは LIMIT 10 などで試します。
  • クエリ実行中は通常のウェアハウス稼働コストも発生します。MEDIUM以下のウェアハウスが推奨されています。
  • 本番利用では、利用状況を SNOWFLAKE.ACCOUNT_USAGE.CORTEX_FUNCTIONS_USAGE_HISTORYCORTEX_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_detailsTRUE にしてエラー詳細を受け取りましょう。
  • 結果はテーブルに保存し、再実行で同じ行を再処理しない設計にすると、コストが抑えられます。

まとめ

これからSnowflake Cortexを学ぶなら、まずは AI_COMPLETEAI_TRANSLATEAI_SENTIMENTSUMMARIZE の使い分けを押さえるのがおすすめです。さらに、複数行のレビューや問い合わせをまとめて分析したい場合は AI_AGGAI_SUMMARIZE_AGG、PDFや画像から情報を取り出したい場合は AI_EXTRACT へ進むと、Snowflake上でできるAI活用の幅が広がります。

最初は LIMIT 付きで小さく試し、課金状況を ACCOUNT_USAGE ビューで確認しながら、徐々に本番ワークロードへ広げていきましょう。

参考リンク

関連記事

この記事をシェアする𝕏B!FacebookLINEPocket