Snowflake Cortex AISQL (LLM 関数を含む)

Snowflake の Cortex AISQL を使用して、 OpenAI、Anthropic、Meta、Mistral AI、 DeepSeek の業界をリードする LLMs を使用して、テキストと画像に対して非構造化分析を実行します。Cortex AISQL は、以下のような場合をサポートします。

  • メタデータとストリームラインを充実させ、検証を合理化するためのエンティティの抽出

  • 顧客チケット全体のインサイトを集約

  • 自然言語によるコンテンツのフィルターと分類

  • サービス改善のためのセンチメントとアスペクトに基づく分析

  • 多言語コンテンツの翻訳とローカライズ

  • アナリティクスと RAG パイプラインのためのドキュメントの解析

すべてのモデルはSnowflakeで完全にホスティングされ、パフォーマンス、スケーラビリティ、セキュリティガバナンスを確保しながら、データを安全に保持します。

利用可能な関数

Snowflake Cortexの特徴量は SQL 関数として提供され、 Python でも利用可能です。Cortex AISQL 関数は以下のカテゴリーに分類できます。

AISQL 関数

タスク固有の関数とは、カスタマイズを必要としない、簡単な要約やクィック翻訳などのルーチンタスクを自動化するために、目的に応じて構築され管理される関数のことです。

  • AI_COMPLETE: 選択された LLM を使用して、指定された文字列または画像の補完を生成します。生成的な AI タスクのほとんどにこの関数を使用します。

  • AI_CLASSIFY: テキストや画像をユーザー定義のカテゴリに分類します。

  • AI_FILTER: イメージやテキストの入力に対してTrueかFalseを返し、 SELECT, WHERE, JOIN ... ON 句で結果をフィルターできます。

  • AI_AGG: テキスト列を集約し、ユーザー定義のプロンプトに基づいて複数の行にわたる洞察を返します。この関数はコンテキストウィンドウの制限を受けません。

  • AI_SUMMARIZE_AGG: テキスト列を集約し、複数行にわたるサマリーを返します。この関数はコンテキストウィンドウの制限を受けません。

  • AI_SIMILARITY: 2つの入力間の埋め込み類似度を計算します。

  • PARSE_DOCUMENT (SNOWFLAKE.CORTEX): 内部または外部ステージからテキストを抽出 (OCR モードを使用)、又はテキストをレイアウト情報とともに抽出 (LAYOUT モードを使用)。

  • TRANSLATE: サポートされている言語間のテキストを翻訳します。

  • SENTIMENT (SNOWFLAKE.CORTEX): テキストからセンチメントスコアを抽出します。

  • EXTRACT_ANSWER (SNOWFLAKE.CORTEX): 構造化されていないデータから質問の答えを抽出します。

  • SUMMARIZE (SNOWFLAKE.CORTEX): 指定したテキストの要約を返します。

注釈

以前は"LLM 関数"とリファレンスされていた関数は、"SNOWFLAKE.CORTEX" 名前空間にリストされています。

ヘルパー関数

ヘルパー関数は、他の AISQL 関数を実行する際に失敗するケースを減らす目的で構築され、管理される関数です。たとえば、入力プロンプトのトークン数を取得して、呼び出しがモデルの制限を超えないようにします。

  • COUNT_TOKENS (SNOWFLAKE.CORTEX): 入力テキストが与えられると、指定されたモデルまたはCortex関数に基づいてトークン数を返します。

  • TRY_COMPLETE (SNOWFLAKE.CORTEX): COMPLETE 関数と同様に動作しますが、関数を実行できなかった場合、エラーコードの代わりに NULL を返します。

Cortex Guard

Cortex Guardは、 COMPLETE 関数のオプションで、言語モデルから安全でない可能性のある有害な応答をフィルタリングするように設計されています。Cortex Guardは現在、MetaのLlama Guard 3で構築されています。Cortex Guardは、出力がアプリケーションに返される前に言語モデルの応答を評価することで機能します。Cortex Guardを起動すると、暴力犯罪、憎悪、性的コンテンツ、自傷行為などに関連する可能性のある言語モデルの反応が自動的にフィルタリングされます。構文と例については、 COMPLETE 引数 をご参照ください。

注釈

Cortex Guardの使用には、 処理された入力トークンの数 に基づく計算料金が発生します。

パフォーマンスの考慮事項

Cortex AISQL 関数はスループットのために最適化されています。SQL の大容量テーブルからのテキストなど、多数の入力を処理するには、これらの関数を使用することをお勧めします。バッチ処理は通常、 AISQL 関数に適しています。レイテンシが重要な、よりインタラクティブなユースケースには、 REST API を使用します。これらは、単純推論(Complete API)、埋め込み(Embed API)、エージェントアプリケーション(Agent API) に可用性を持っています。

必要な権限

SNOWFLAKE データベースの CORTEX_USER データベースロールには、ユーザーがSnowflake Cortex AI 関数を呼び出すことを許可する権限が含まれています。デフォルトでは、CORTEX_USERロールはPUBLICロールに付与されます。PUBLICロールはすべてのユーザーとロールに自動的に付与されるため、アカウント内のすべてのユーザーがSnowflake Cortex AI関数を使用できるようになります。

すべてのユーザーにこの権限を与えたくない場合は、PUBLICロールのアクセス権を取り消し、特定のロールにアクセス権を与えることができます。

PUBLIC ロールから CORTEX_USER データベースロールを取り消すには、 ACCOUNTADMIN ロールを使用して以下のコマンドを実行します。

REVOKE DATABASE ROLE SNOWFLAKE.CORTEX_USER
  FROM ROLE PUBLIC;

REVOKE IMPORTED PRIVILEGES ON DATABASE SNOWFLAKE
  FROM ROLE PUBLIC;
Copy

そして、特定のロールに選択的にアクセスを提供することができます。SNOWFLAKE.CORTEX_USER データベースロールをユーザーに直接付与することはできません。詳細については、 SNOWFLAKE データベースロールの使用 をご参照ください。ロールを持つユーザーは、 ACCOUNTADMIN ロールをカスタムロールに付与することで、ユーザーがCortex AI 関数にアクセスできるようにすることができます。以下の例では、 ACCOUNTADMIN ロールを引き受けて、この目的のために作成したアカウントロール cortex_user_role を介して、ユーザー some_user に CORTEX_USER データベースロールを付与します。

USE ROLE ACCOUNTADMIN;

CREATE ROLE cortex_user_role;
GRANT DATABASE ROLE SNOWFLAKE.CORTEX_USER TO ROLE cortex_user_role;

GRANT ROLE cortex_user_role TO USER some_user;
Copy

また、特定のユーザーグループが一般的に使用する既存のロールを使用して、Snowflake Cortex AI の機能へのアクセスを付与することもできます。(ユーザーのロール を参照。)例えば、組織内のアナリストが既定のロールとして使用する analyst ロールを作成した場合、これらのユーザーにSnowflake Cortex AISQL 関数へのアクセスを GRANT ステートメント1つで簡単に付与することができます。

GRANT DATABASE ROLE SNOWFLAKE.CORTEX_USER TO ROLE analyst;
Copy

モデルアクセスの制御

Snowflake Cortexのモデルへのアクセス制御には2つの方法があります。一方または両方の方法を併用することで、広範なアクセス制御ときめ細かなアクセス制御を混在させることができます。

  • モデル許容リスト

  • ロールベースのアクセス制御

モデルのallowlistは、アカウント内のすべてのユーザーに対して、モデルへのアクセスのデフォルトレベルを提供します。このレベルは、 CORTEX_MODELS_ALLOWLIST パラメーターを用いてカスタマイズすることができます。ロールベースのアクセス制御では、アプリケーションのロールを通じて特定のモデルオブジェクトにアクセス制御権限を付与したり取り消したりすることで、きめ細かなアクセス管理が可能になります。

モデル アクセス制御は以下のサービスで利用可能です。

以下のサービスでは、きめ細かなアクセス制御はできません。

  • Cortex Search

  • Cortex Analyst

  • Cortex Copilot

  • Cortex Agents

  • ドキュメント AI

モデル許容リスト

アカウント内の全ユーザーにモデル・アクセスをセットするには、 ALTER ACCOUNT SET コマンドの CORTEX_MODELS_ALLOWLIST パラメーターを使用します。許可リストで指定した以上のアクセスを特定のユーザーに提供する必要がある場合は、代わりにロールベースのアクセス制御を使うべきです。ロールベースのアクセス制御の詳細情報については、 ロールベースのアクセス制御 をご参照ください。

ユーザーがリクエストを行うと、Snowflake Cortex はパラメーターを評価し、ユーザーがそのモデルにアクセスできるかどうかを判断します。

CORTEX_MODELS_ALLOWLIST パラメーターでは、以下の値をセットできます。

  • CORTEX_MODELS_ALLOWLIST = 'All' 全モデルへのアクセスを提供します。

    次のコマンドは、全モデルへのユーザーアクセスを提供します。

    ALTER ACCOUNT SET CORTEX_MODELS_ALLOWLIST = 'All';
    
    Copy
  • CORTEX_MODELS_ALLOWLIST = 'model1,model2,...'

    カンマ区切りのリストで指定されたモデルへのアクセスをユーザーに提供します。

    次のコマンドは、 mistral-large2 および llama3.1-70b モデルへのアクセスをユーザーに提供します。

    ALTER ACCOUNT SET CORTEX_MODELS_ALLOWLIST = 'mistral-large2,llama3.1-70b';
    
    Copy
  • CORTEX_MODELS_ALLOWLIST = 'None' ユーザーがモデルにアクセスできないようにします。

    次のコマンドは、どのモデルへのユーザーアクセスも禁止します。

    ALTER ACCOUNT SET CORTEX_MODELS_ALLOWLIST = 'None';
    
    Copy

ロールベースのアクセス制御

Snowflake Cortex の各モデルは、 SNOWFLAKE.MODELS スキーマ内の一意のオブジェクトで、関連するアプリケーションロールを持ちます。モデルオブジェクトとアプリケーションロールを使って、モデルオブジェクトへのアクセスを管理することができます。

以下のコマンドで最新モデルにアクセスできます。

CALL SNOWFLAKE.MODELS.CORTEX_BASE_MODELS_REFRESH();
Copy

次に、次のコマンドを使用して、Snowflakeアカウントで使用可能なモデルをリストします。

SHOW MODELS IN SNOWFLAKE.MODELS;
Copy

コマンドは以下のようなモデルのリストを返します。

created_on

name

model_type

database_name

schema_name

owner

2025-04-22 09:35:38.558 -0700

CLAUDE-3-5-SONNET

CORTEX_BASE

SNOWFLAKE

MODELS

SNOWFLAKE

2025-04-22 09:36:16.793 -0700

LLAMA3.1-405B

CORTEX_BASE

SNOWFLAKE

MODELS

SNOWFLAKE

2025-04-22 09:37:18.692 -0700

SNOWFLAKE-ARCTIC

CORTEX_BASE

SNOWFLAKE

MODELS

SNOWFLAKE

これらのモデルのアプリケーション・ロールをリストするには、以下のコマンドを使用します。

SHOW APPLICATION ROLES IN APPLICATION SNOWFLAKE;
Copy

コマンドは、以下のようなアプリケーション・ロールのリストを返します。

created_on

name

owner

comment

owner_role_type

2025-04-22 09:35:38.558 -0700

CORTEX-MODEL-ROLE-ALL

SNOWFLAKE

MODELS

APPLICATION

2025-04-22 09:36:16.793 -0700

CORTEX-MODEL-ROLE-LLAMA3.1-405B

SNOWFLAKE

MODELS

APPLICATION

2025-04-22 09:37:18.692 -0700

CORTEX-MODEL-ROLE-SNOWFLAKE-ARCTIC

SNOWFLAKE

MODELS

APPLICATION

重要

モデルや関連するアプリケーション・ロールが表示されない場合は、 CALL SNOWFLAKE.MODELS.CORTEX_BASE_MODELS_REFRESH() で最新モデルへのアクセスを確認してください。

特定のモデルへのアクセスを 付与するには、そのモデルのアプリケーション・ロールをユーザー・ロールに付与します。例えば、 CORTEX-MODEL-ROLE-LLAMA3.1-70B のアプリケーション・ロール SNOWFLAKE.MODELS."LLAMA3.1-70B" をユーザー・ロールに付与することができます。以下のコマンドは、 CORTEX-MODEL-ROLE-LLAMA3.1-70B アプリケーション・ロールを MY_ROLE ユーザー・ロールに付与します。

GRANT APPLICATION ROLE SNOWFLAKE."CORTEX-MODEL-ROLE-LLAMA3.1-70B" TO ROLE MY_ROLE;
Copy

推論を呼び出すには、完全修飾モデル名を使用します。以下は、ユーザーが発信できる通話の例です。

SELECT AI_COMPLETE('SNOWFLAKE.MODELS."LLAMA3.1-70B"', 'Hello');
Copy

重要

ユーザーがリクエストを行うと、Snowflake Cortexはまずロールベースのアクセス制御を使用して、ユーザーがそのモデルにアクセスできるかどうかを判断します。ユーザーにアクセスがない場合、Snowflake Cortex は CORTEX_MODELS_ALLOWLIST を評価し、モデルへのアクセスを判断します。モデルがallowlistに含まれている場合(あるいはallowlistの値が 'All' にセットされている場合)、ユーザーにモデルへのアクセスが許可されます。モデルへのきめ細かなアクセスを可能にするには、 CORTEX_MODELS_ALLOWLIST からモデル名を削除するか、 'None' にセットします。

可用性

Snowflake Cortex AI 関数は、現在以下のリージョンで利用可能です。リストにないリージョンから LLMs にアクセスするには、 クロスリージョン推論パラメーター を使用。

注釈

  • TRY_COMPLETE 関数は COMPLETE と同じ地域で利用できます。

  • COUNT_TOKENS 関数は全リージョンで利用可能ですが、モデル推論はテーブルにあるようにリージョン固有です。

関数
(モデル)
AWS US
(リージョン横断)
AWS US西部2
(オレゴン)
AWS US東部1
(N.バージニア)
AWSヨーロッパ中部1
(フランクフルト)
AWS ヨーロッパ西部1
(アイルランド)
AWS AP 南東部2
(シドニー)
AWS AP 北東部1
(東京)
AWSUS 東部
(商用Gov - N.バージニア北部)
Azure東部 US 2
(バージニア)
Azure西ヨーロッパ
(オランダ)
AWS EU
(リージョン横断)
AWS AWS_APJ
(リージョン横断)
Azure US
(リージョン横断)
COMPLETE
(claude-4-sonnet)

COMPLETE
(claude-4-opus)

プレビュー中

COMPLETE
(claude-3-7-sonnet)

COMPLETE
claude-3-5-sonnet

COMPLETE
(llama4-maverick)

COMPLETE
(llama4-scout)

COMPLETE
llama3.2-1b

COMPLETE
llama3.2-3b

COMPLETE
llama3.1-8b

COMPLETE
llama3.1-70b

COMPLETE
llama3.3-70b

COMPLETE
snowflake-llama-3.3-70b

COMPLETE
llama3.1-405b

COMPLETE
(openai-gpt-4.1)

プレビュー中

プレビュー中

COMPLETE
(openai-o4-mini)

プレビュー中

プレビュー中

COMPLETE
snowflake-llama-3.1-405b

COMPLETE
(snowflake-arctic)

COMPLETE
(deepseek-r1)

COMPLETE
(reka-core)

COMPLETE
(reka-flash)

COMPLETE
mistral-large2

COMPLETE
(mixtral-8x7b)

COMPLETE
(mistral-7b)

COMPLETE
jamba-instruct

COMPLETE
jamba-1.5-mini

COMPLETE
jamba-1.5-large

COMPLETE
(gemma-7b)

EMBED_TEXT_768
(e5-base-v2)

EMBED_TEXT_768
(snowflake-arctic-embed-m)

EMBED_TEXT_768
snowflake-arctic-embed-m-v1.5

EMBED_TEXT_1024
snowflake-arctic-embed-l-v2.0

EMBED_TEXT_1024
(nv-embed-qa-4)

EMBED_TEXT_1024
multilingual-e5-large

EMBED_TEXT_1024
voyage-multilingual-2

AI_CLASSIFY TEXT

AI_CLASSIFY IMAGE

AI_FILTER TEXT

AI_FILTER IMAGE

AI_AGG

AI_SIMILARITY TEXT

AI_SIMILARITY IMAGE

AI_SUMMARIZE_AGG

EXTRACT_ANSWER

SENTIMENT

ENTITY_SENTIMENT

SUMMARIZE

TRANSLATE

Snowflake Cortex AI 関数は、現在以下のリージョンで利用可能です。

関数
(モデル)
AWS US 東部2
(オハイオ)
AWS CA 中央部1
(中央部)
AWS SA東部1
(サンパウロ)
AWS ヨーロッパ西部2
(ロンドン)
AWSヨーロッパ中部1
(フランクフルト)
AWS ヨーロッパ北部1
(ストックホルム)
AWS AP 北東部1
(東京)
AWS AP 南部1
(ムンバイ)
AWS AP 南東部2
(シドニー)
AWS AP 南東部3
(ジャカルタ)
Azure南中央部 US
(テキサス)
Azure西部 US 2
(ワシントン)
Azure UK 南部
(ロンドン)
Azure北部ヨーロッパ
(アイルランド)
Azureスイス北部
(チューリッヒ)
Azure中部インド(プネー)
(プネー)
Azure日本東日本
(東京、埼玉)
Azure東南アジア
(シンガポール)
Azureオーストラリア東部
(ニューサウスウェールズ)
GCP ヨーロッパ西部2
(ロンドン)
GCP ヨーロッパ西部4
(オランダ)
GCP US 中央部1
(アイオワ)
GCP US 東部4
(N.バージニア)
EMBED_TEXT_768
snowflake-arctic-embed-m-v1.5

EMBED_TEXT_768
(snowflake-arctic-embed-m)

EMBED_TEXT_1024
multilingual-e5-large

次の表は、レガシーモデルの一覧です。まだ始めたばかりなら、前の表のモデルから始めましょう。

レガシー
関数
(モデル)
AWS US西部2
(オレゴン)
AWS US東部1
(N.バージニア)
AWSヨーロッパ中部1
(フランクフルト)
AWS ヨーロッパ西部1
(アイルランド)
AWS AP 南東部2
(シドニー)
AWS AP 北東部1
(東京)
Azure東部 US 2
(バージニア)
Azure西ヨーロッパ
(オランダ)
COMPLETE
(llama2-70b-chat)

COMPLETE
(llama3-8b)

COMPLETE
(llama3-70b)

COMPLETE
mistral-large

コストの考慮事項

Snowflake Cortex AI 関数は、処理されたトークンの数に基づいてコンピュートコストが発生します。100万トークンあたりのクレジット単位での各コストについては、 Snowflakeサービス利用テーブル をご参照ください。

トークンは、Snowflake Cortex AI 関数で処理されるテキストの最小単位でのことで、テキストの4文字に相当します。トークンに相当する生の入力または出力テキストは、モデルによって異なる場合があります。

  • 応答で新しいテキストを生成する関数 (AI_COMPLETE、 AI_CLASSIFY、 AI_FILTER、 AI_AGG、 AI_SUMMARIZE、および TRANSLATE) では、入力と出力の両方のトークンがカウントされます。

  • CORTEX GUARD では、入力トークンのみがカウントされます。入力トークンの数は、 COMPLETE 関数で使用される LLM モデルごとの出力トークンの数に基づいています。

  • AI_SIMILARITY EMBED_* 関数では、入力トークンだけがカウントされます。

  • EXTRACT_ANSWER の場合、請求可能トークン数は from_text フィールドと question フィールドのトークン数の合計です。

  • AI_CLASSIFY, AI_FILTER, AI_AGG, AI_SUMMARIZE_AGG, SUMMARIZE, TRANSLATE, EXTRACT_ANSWER, ENTITY_SENTIMENT や, SENTIMENT がレスポンスを生成するために、入力テキストにプロンプトを追加します。その結果、入力トークン数は、入力されたテキストのトークン数よりも多くなります。

  • AI_CLASSIFY ラベル、説明、例は、 AI_CLASSIFY の呼び出しごとに 1 回だけでなく、処理される記録ごとに入力トークンとしてカウントされます。

  • PARSE_DOCUMENT (SNOWFLAKE.CORTEX) の場合、請求は処理されたドキュメントのページ数に基づいて行われます。

  • TRY_COMPLETE(SNOWFLAKE.CORTEX) はエラー処理にコストがかかりません。つまり、 TRY_COMPLETE(SNOWFLAKE.CORTEX) 関数が NULL を返せば、コストは発生しません。

  • COUNT_TOKENS(SNOWFLAKE.CORTEX) は関数を実行するための計算コストしか発生しません。トークンに基づく追加コストは発生しません。

Snowflake では、Snowflake Cortex AISQL 関数または Cortex PARSE_DOCUMENT 関数を呼び出すクエリは、小さいウェアハウス (MEDIUM 以下)で実行することを推奨しています。ウェアハウスを大きくしてもパフォーマンスは向上しないからです。ウェアハウスをアクティブに保つことに関連するコストは、Snowflake Cortex LLM 関数を呼び出すクエリを実行するときにも適用されます。コンピューティングコストに関する一般情報については、 コンピューティングコストについて をご参照ください。

AIサービスのコストを追跡する

お客様のアカウントで LLM 関数を含む AI サービスに使用されたクレジットを追跡するには、 METERING_HISTORY ビュー を使用します。

SELECT *
  FROM SNOWFLAKE.ACCOUNT_USAGE.METERING_DAILY_HISTORY
  WHERE SERVICE_TYPE='AI_SERVICES';
Copy

AISQL 関数のクレジット消費を追跡する

各 AISQL 関数呼び出しのクレジットとトークンの消費量を表示するには、 CORTEX_FUNCTIONS_USAGE_HISTORY ビュー を使用します。

SELECT *
  FROM SNOWFLAKE.ACCOUNT_USAGE.CORTEX_FUNCTIONS_USAGE_HISTORY;
Copy

Snowflakeアカウント内で各クエリのクレジットとトークンの消費量を表示することもできます。各クエリのクレジットとトークンの消費量を表示することで、最もクレジットとトークンを消費しているクエリを特定することができます。

以下のクエリ例では、 CORTEX_FUNCTIONS_QUERY_USAGE_HISTORY ビュー を使用して、アカウント内のすべてのクエリについてクレジットとトークンの消費量を表示しています。

SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.CORTEX_FUNCTIONS_QUERY_USAGE_HISTORY;
Copy

同じビューを使って、特定のクエリのクレジットとトークンの消費量を確認することもできます。

SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.CORTEX_FUNCTIONS_QUERY_USAGE_HISTORY
WHERE query_id='<query-id>';
Copy

注釈

REST API で行われたリクエストの使用状況の詳細情報を得ることはできません。

クエリの使用履歴は、クエリで使用されたモデルごとにグループ分けされています。例えば、次を実行したとします。

SELECT AI_COMPLETE('mistral-7b', 'Is a hot dog a sandwich'), AI_COMPLETE('mistral-large', 'Is a hot dog a sandwich');
Copy

クエリの使用履歴には、 mistral-7bmistral-large の2行が表示されます。

使用量のクォータ

すべてのSnowflake顧客がLLM関数にアクセスできるようにするため、Snowflake Cortex AI関数は、使用率が高い時間帯にスロットルの対象となることがあります。利用クォータはアカウントレベルでは適用されません。

スロットルされたリクエストは エラーの応答 を受け取るため、後で再試行する必要があります。

注釈

有効な支払い方法のないオンデマンドSnowflakeアカウント(トライアルアカウントなど)では、Snowflake Cortex LLM 関数の使用は1日あたりおよそ1クレジットに制限されます。この制限を解除するには、 トライアルアカウントを有料アカウントに変更 してください。

コスト管理とスロットリング

このプレビュー期間中、SnowflakeではSnowflake Cortex AISQL関数を呼び出す際に、MEDIUM以下のウェアハウスサイズを使用することを推奨します。必要以上に大規模なウェアハウスを使用してもパフォーマンスは向上しませんが、不必要なコストがかかり、スロットリングのリスクも高くなります。この推奨事項は、今後の製品アップデートにより適用されなくなる可能性があります。

モデルの制限

Snowflake Cortexで使用されるモデルには、以下の表に示すようにサイズに制限があります。サイズはトークンで表示されています。トークンは一般的に約4文字のテキストを表すので、制限に対応する単語数はトークンの数よりも少なくなります。制限値を超える入力はエラーになります。

モデルが出力できる最大サイズは、以下のように制限されています:

  • モデルの出力トークン制限。

  • モデルが入力トークンを消費した後のコンテキストウィンドウの利用可能スペース。

例えば、 claude-3-5-sonnet には、20万トークンのコンテキストウィンドウがあります。入力に100,000トークンを使用した場合、モデルは最大8,192トークンを生成できます。しかし、195,000個のトークンが入力として使用された場合、モデルは合計200,000個のトークンのうち、5,000個までしか生成できません。

重要

AWS AP 南東2(シドニー)リージョン:

  • llama3-8bmistral-7b のコンテキストウィンドウは 4,096 トークンです。

  • llama3.1-8b のコンテキストウィンドウは 16,384 トークンです。

  • SUMMARIZE 関数からのSnowflake管理モデルのコンテキストウィンドウは4,096トークンです。

AWS ヨーロッパ西1(アイルランド)リージョン:

  • llama3.1-8b のコンテキストウィンドウは 16,384 トークンです。

  • mistral-7b のコンテキストウィンドウは 4,096 トークンです。

関数

モデル

コンテキストウィンドウ(トークン)

最大出力 AISQL 関数(トークン)

COMPLETE

llama4-maverick

128,000

8,192

llama4-scout

128,000

8,192

snowflake-arctic

4,096

8,192

deepseek-r1

32,768

8,192

claude-4-opus

200,000

32,000

claude-4-sonnet

200,000

64,000

claude-3-7-sonnet

200,000

8,192

claude-3-5-sonnet

200,000

8,192

mistral-large

32,000

8,192

mistral-large2

128,000

8,192

openai-gpt-4.1

1,047,576

32,768

openai-o4-mini

200,000

100,000

reka-flash

100,000

8,192

reka-core

32,000

8,192

jamba-instruct

256,000

8,192

jamba-1.5-mini

256,000

8,192

jamba-1.5-large

256,000

8,192

mixtral-8x7b

32,000

8,192

llama2-70b-chat

4,096

8,192

llama3-8b

8,000

8,192

llama3-70b

8,000

8,192

llama3.1-8b

128,000

8,192

llama3.1-70b

128,000

8,192

llama3.3-70b

128,000

8,192

snowflake-llama-3.3-70b

8,000

8,192

llama3.1-405b

128,000

8,192

snowflake-llama-3.1-405b

8,000

8,192

llama3.2-1b

128,000

8,192

llama3.2-3b

128,000

8,192

mistral-7b

32,000

8,192

gemma-7b

8,000

8,192

EMBED_TEXT_768

e5-base-v2

512

なし

snowflake-arctic-embed-m

512

なし

EMBED_TEXT_1024

nv-embed-qa-4

512

なし

multilingual-e5-large

512

なし

voyage-multilingual-2

32,000

なし

AI_FILTER

Snowflake管理モデル

128,000

なし

AI_CLASSIFY / CLASSIFY_TEXT

Snowflake管理モデル

128,000

なし

AI_AGG

Snowflake管理モデル

128,000/行
複数行に渡って使用可能

8,192

AI_SUMMARIZE_AGG

Snowflake管理モデル

128,000/行
複数行に渡って使用可能

8,192

ENTITY_SENTIMENT

Snowflake管理モデル

2,048

なし

EXTRACT_ANSWER

Snowflake管理モデル

2,048のテキスト
64の質問

なし

SENTIMENT

Snowflake管理モデル

512

なし

SUMMARIZE

Snowflake管理モデル

32,000

4,096

TRANSLATE

Snowflake管理モデル

4,096

なし

モデルの選択

Snowflake Cortex COMPLETE 関数は、能力、遅延、コストの異なる複数のモデルをサポートしています。これらのモデルは、一般的な顧客のユースケースに合わせて慎重に選択されています。 クレジットあたりのパフォーマンス で最高の状態を達成するには、コンテンツのサイズとタスクの複雑さに適したモデルを選択します。以下は、利用可能なモデルの簡単な概要です。

大規模モデル

どこから始めたらよいかわからない場合は、まず最も高性能なモデルを試して、他のモデルを評価するためのベースラインを確立してください。 claude-3-7-sonnetreka-core、および mistral-large2 は、Snowflake Cortexが提供する最も高性能なモデルで、最先端のモデルで何ができるかを知ることができます。

  • Claude 3-7 Sonnet は、一般的な推論とマルチモーダル機能のリーダーです。異なるドメインやモダリティにまたがる推論を必要とするタスクにおいて、先行製品を凌駕します。構造化クエリでも非構造化クエリでも、その大容量出力を使ってより多くの情報を得ることができます。推論機能と大容量ウィンドウにより、Agenticなワークフローに適しています。

  • deepseek-r1 は、教師あり微調整 (SFT) を行わず、大規模強化学習 (RL) を用いて学習された基礎モデルです。数学、コード、推論の各タスクで高いパフォーマンスを発揮します。モデルにアクセスするには、 クロスリージョン推論パラメーターAWS_US にセットします。

  • mistral-large2 は、Mistral AIの最も高度な大規模言語モデルで、トップクラスの推論機能を備えています。 mistral-large と比較すると、コード生成、数学、推論において格段に能力が高く、多言語サポートもはるかに強力です。合成テキスト生成、コード生成、多言語テキスト分析など、大規模な推論能力を必要とする複雑なタスクや、高度に専門化されたタスクに最適です。

  • llama3.1-405b はMeta社の llama3.1 モデルファミリーのオープンソースモデルで、128Kの大きなコンテキストウィンドウを持ちます。長文の文書処理、多言語サポート、合成データ生成、モデルの蒸留に優れています。

  • snowflake-llama3.1-405b はオープンソースのllama3.1から派生したモデルです。Snowflake AI 研究チームによって開発された <SwiftKV optimizations https://www.snowflake.com/en/blog/up-to-75-lower-inference-cost-llama-meta-llm/> を使用し、推論コストを最大75%削減します。SwiftKV は、精度の低下を最小限に抑えながら、より高いスループットパフォーマンスを実現します。

中規模モデル

  • llama3.1-70b は、チャットアプリケーション、コンテンツ作成、およびエンタープライズアプリケーションに理想的な最先端のパフォーマンスを提供するオープンソースモデルです。128Kのコンテキストウィンドウで多様なユースケースを可能にする、高いパフォーマンスとコスト効率を備えたモデルです。 llama3-70b は現在もサポートされており、コンテキストウィンドウは8Kです。

  • snowflake-llama3.3-70b はオープンソースのllama3.3モデルから派生したモデルです。Snowflake AI 研究チームによって開発された <SwiftKV optimizations https://www.snowflake.com/en/blog/up-to-75-lower-inference-cost-llama-meta-llm/> を使用し、推論コストを最大75%削減します。SwiftKV は、精度の低下を最小限に抑えながら、より高いスループットパフォーマンスを実現します。

  • snowflake-arctic は、Snowflakeのエンタープライズ向けトップクラスの LLM です。Arcticは、SQLの生成、コーディング、ベンチマークに従った命令などのエンタープライズタスクを得意としています。

  • mixtral-8x7b は、テキスト生成、分類、質問回答などに最適です。Mistralのモデルは、低レイテンシ、低メモリ要件に最適化されており、企業のユースケースにおいて高いスループットを実現します。

  • jamba-Instruct モデルは AI21 Labsによって構築され、企業の要件を効率的に満たします。256kトークンコンテキストウィンドウを低コスト、低遅延で提供するように最適化されており、要約やQ&A、また長いドキュメントや広範なナレッジベース上のエンティティ抽出などのタスクに最適です。

  • AI21 Jamba 1.5モデルファミリーは基盤モデルに従属する、最先端のハイブリッド SSM トランスフォーマーインストラクションです。コンテキスト長が256Kの jamba-1.5-minijamba-1.5-large は、構造化出力(JSON)やグラウンディング生成などのユースケースをサポートしています。

小規模モデル

  • llama3.2-1bllama3.2-3b のモデルは、128Kトークンのコンテキスト長をサポートし、要約、命令追従、書き換えタスクなどのユースケースにおいて、このクラスでは最先端です。Llama 3.2モデルは、英語、ドイツ語、フランス語、イタリア語、ポルトガル語、ヒンディー語、スペイン語、タイ語に対応し、多言語機能を提供します。

  • llama3.1-8b は、低~中程度の推論を必要とするタスクに最適です。軽量で超高速のモデルで、コンテキストウィンドウは128Kです。 llama3-8bllama2-70b-chat は現在もサポートされているモデルで、より小さいコンテキストウィンドウと比較的低い精度を提供します。

  • mistral-7b は、最も単純な要約、構造化、質問に対する回答など、素早く行う必要のあるタスクに最適です。32Kのコンテキストウィンドウにより、複数ページのテキストを低レイテンシで高スループットに処理します。

  • gemma-7b は、単純なコードやテキストの補完タスクに適しています。コンテキストウィンドウのトークンは8,000ですが、その制限内で驚くほどの能力を発揮し、費用対効果もかなり高いです。

以下のテーブルは、人気モデルが各種ベンチマークでどのようなパフォーマンスを発揮するかについての情報を示しており、Snowflake Cortex COMPLETEが提供するモデルや他のいくつかの人気モデルが含まれています。

モデル

コンテキストウィンドウ
(トークン)
MMLU
(推論)
HumanEval
(コーディング)
GSM8K
(算術推論)
Spider 1.0
(SQL)

GPT 4.o

128,000

88.7

90.2

96.4

-

Claude 3.5 Sonnet

200,000

88.3

92.0

96.4

-

llama3.1-405b

128,000

88.6

89

96.8

-

reka-core

32,000

83.2

76.8

92.2

-

llama3.1-70b

128,000

86

80.5

95.1

-

mistral-large2

128,000

84

92

93

-

reka-flash

100,000

75.9

72

81

-

llama3.1-8b

128,000

73

72.6

84.9

-

mixtral-8x7b

32,000

70.6

40.2

60.4

-

jamba-instruct

256,000

68.2

40

59.9

-

jamba-1.5-mini

256,000

69.7

-

75.8

-

jamba-1.5-large

256,000

81.2

-

87

-

Snowflake Arctic

4,096

67.3

64.3

69.7

79

llama3.2-1b

128,000

49.3

-

44.4

-

llama3.2-3b

128,000

69.4

-

77.7

-

gemma-7b

8,000

64.3

32.3

46.4

-

mistral-7b

32,000

62.5

26.2

52.1

-

GPT 3.5 Turbo*

4,097

70

48.1

57.1

-

旧モデルバージョン

Snowflake Cortex COMPLETE 関数は、以下の旧バージョンもサポートしています。この表にリストされているバージョンではなく、最新モデルのバージョンを使用することをお勧めします。

モデル

コンテキストウィンドウ
(トークン)
MMLU
(推論)
HumanEval
(コーディング)
GSM8K
(算術推論)
Spider 1.0
(SQL)

mistral-large

32,000

81.2

45.1

81

81

llama-2-70b-chat

4,096

68.9

30.5

57.5

-

エラー条件

Snowflake Cortex AI 関数は以下のエラーメッセージを生成する可能性があります。

メッセージ

説明

too many requests

システム負荷が高すぎるため、リクエストは拒否されました。もう一度リクエストしてください。

invalid options object

関数に渡された options オブジェクトに無効なオプションまたは値が含まれています。

budget exceeded

モデルの消費予算を超えました。

unknown model "<モデル名>"

指定されたモデルは存在しません。

invalid language "<言語>"

指定された言語は TRANSLATE 関数ではサポートされていません。

max tokens of <カウント> exceeded

リクエストはモデルがサポートするトークンの最大数を超えました(モデルの制限 を参照)。

all requests were throttled by remote service

使用レベルが高いため、リクエストはスロットルされました。後でもう一度お試しください。

invalid number of categories: <num_categories>

指定されたカテゴリー数は、 AI_CLASSIFY の制限を超えています。

invalid category input type

指定されたカテゴリーのタイプは AI_CLASSIFY でサポートされていません。

empty classification input

AI_CLASSIFY への入力は空文字列かNULLです。

PythonでSnowflake Cortex AISQL を使用します。

Snowflake Cortex AISQL 関数は、Snowpark Python API で使用できます。API では、関数を使用して、テキストと画像の両方のデータを分類、要約、フィルターすることができます。

これらの関数には次のようなものがあります:

  • ai_agg() - 自然言語の指示を使用してテキストの列を集約します。詳細については、 AI_AGG をご参照ください。

  • ai_classify() - テキストや画像をカスタムカテゴリに分類します。詳細については、 AI_CLASSIFY をご参照ください。

  • ai_filter()- 自然言語を使ってデータをフィルターします。詳細については、 AI_FILTER をご参照ください。

ai_agg() 関数は、グループ化されたデータまたはグループ化されていないデータから調査結果を要約または抽出するようアナリストに依頼するのと同様の方法で、自然言語の指示を使用してテキストの列を集約します。

次の例では、 ai_agg() 関数を使用して、各製品のカスタマーレビューを要約しています。この関数は、テキストの列と自然言語命令を受け取り、レビューを要約します。

from snowflake.snowpark.functions import ai_agg, col

df = session.create_dataframe([
    [1, "Excellent product!"],
    [1, "Great battery life."],
    [1, "A bit expensive but worth it."],
    [2, "Terrible customer service."],
    [2, "Won’t buy again."],
], schema=["product_id", "review"])

# Summarize reviews per product
summary_df = df.group_by("product_id").agg(
    ai_agg(col("review"), "Summarize the customer reviews in one sentence.")
)
summary_df.show()
Copy

注釈

ユースケースを中心とした詳細なタスク記述を使用してください。例えば、「投資家向け報告書のために顧客からのフィードバックを要約する」など。

ai_classify() 関数は、テキストや画像を受け取り、定義したカテゴリに分類します。

次の例では、旅行レビューを「旅行」や「料理」などのカテゴリに分類しています。この関数は、テキストの列と、テキストを分類するカテゴリのリストを受け取ります。

from snowflake.snowpark.functions import ai_classify

df = session.create_dataframe([
    ["I dream of backpacking across South America."],
    ["I made the best pasta yesterday."],
], schema=["sentence"])

df = df.select(
    "sentence",
    ai_classify("sentence", ["travel", "cooking"]).alias("classification")
)
df.show()
Copy

注釈

カテゴリは最大500個まで提供できます。テキストと画像の両方を分類できます。

ai_filter() 関数は自然言語の条件を評価し、 TRUE または FALSE を返します。行のフィルターやタグ付けに使用できます。

from snowflake.snowpark.functions import ai_filter, prompt, col

df = session.create_dataframe(["Canada", "Germany", "Japan"], schema=["country"])

filtered_df = df.select(
    "country",
    ai_filter(prompt("Is {0} in Asia?", col("country"))).alias("is_in_asia")
)
filtered_df.show()
Copy

注釈

文字列とファイルの両方でフィルターをかけることができます。動的なプロンプトにはprompt()関数を使用します。詳細情報については、 Snowpark Python リファレンス をご参照ください。

既存のSnowpark ML 関数は、 Snowpark ML バージョン1.1.2以降でもサポートされています。Snowpark ML の設定方法については、 Snowflake ML をローカルで使用する をご参照ください。

PythonスクリプトをSnowflakeの外で実行する場合、これらの関数を使用するにはSnowparkセッションを作成する必要があります。手順については、 Snowflakeへの接続 をご参照ください。

次のPythonの例では、単一の値に対してSnowflake Cortex AI 関数を呼び出しています。

from snowflake.cortex import Complete, ExtractAnswer, Sentiment, Summarize, Translate

text = """
    The Snowflake company was co-founded by Thierry Cruanes, Marcin Zukowski,
    and Benoit Dageville in 2012 and is headquartered in Bozeman, Montana.
"""

print(Complete("llama2-70b-chat", "how do snowflakes get their unique patterns?"))
print(ExtractAnswer(text, "When was snowflake founded?"))
print(Sentiment("I really enjoyed this restaurant. Fantastic service!"))
print(Summarize(text))
print(Translate(text, "en", "fr"))
Copy

COMPLETE 関数を使用する際に、モデルのハイパーパラメーターに影響を与えるオプションを渡すことができます。次の Python の例では、モデルが生成できる出力トークンの最大数を変更して COMPLETE 関数を呼び出しています。

from snowflake.cortex import Complete,CompleteOptions

model_options1 = CompleteOptions(
    {'max_tokens':30}
)

print(Complete("llama3.1-8b", "how do snowflakes get their unique patterns?", options=model_options1))
Copy

以下のように、テーブルの列に対して AI 関数を呼び出すこともできます。この例では、セッションオブジェクト(session に格納)と、テキスト列 abstract_text を含むテーブル articles を必要とし、要点の抜粋を含む新しい列 abstract_summary を作成します。

from snowflake.cortex import Summarize
from snowflake.snowpark.functions import col

article_df = session.table("articles")
article_df = article_df.withColumn(
    "abstract_summary",
    Summarize(col("abstract_text"))
)
article_df.collect()
Copy

注釈

COMPLETE の高度なチャットスタイル(マルチメッセージ)形式は、Pythonでは現在サポートされていません。

Snowflake CLI でのSnowflake Cortex AI 関数の使用

Snowflake Cortex AISQL は、 Snowflake CLI バージョン 2.4.0 以降で利用可能。 Snowflake CLI の使用の詳細については Snowflake CLI の紹介 をご覧ください。

次の例は、単一の値に対して snow cortex コマンドを使用する例です。 -c パラメーターは、使用する接続を指定します。

注釈

COMPLETE の高度なチャット形式(マルチメッセージ)は、現在 Snowflake CLI ではサポートされていません。

snow cortex complete "Is 5 more than 4? Please answer using one word without a period." -c "snowhouse"
Copy
snow cortex extract-answer "what is snowflake?" "snowflake is a company" -c "snowhouse"
Copy
snow cortex sentiment "Mary had a little Lamb" -c "snowhouse"
Copy
snow cortex summarize "John has a car. John's car is blue. John's car is old and John is thinking about buying a new car. There are a lot of cars to choose from and John cannot sleep because it's an important decision for John."
Copy
snow cortex translate herb --to pl
Copy

コマンドに使いたいテキストを含むファイルを使用することもできます。この例では、ファイル about_cortex.txt に以下の内容が含まれていると仮定します。

Snowflake Cortex gives you instant access to industry-leading large language models (LLMs) trained by researchers at companies like Anthropic, Mistral, Reka, Meta, and Google, including Snowflake Arctic, an open enterprise-grade model developed by Snowflake.

Since these LLMs are fully hosted and managed by Snowflake, using them requires no setup. Your data stays within Snowflake, giving you the performance, scalability, and governance you expect.

Snowflake Cortex features are provided as SQL functions and are also available in Python. The available functions are summarized below.

COMPLETE: Given a prompt, returns a response that completes the prompt. This function accepts either a single prompt or a conversation with multiple prompts and responses.
EMBED_TEXT_768: Given a piece of text, returns a vector embedding that represents that text.
EXTRACT_ANSWER: Given a question and unstructured data, returns the answer to the question if it can be found in the data.
SENTIMENT: Returns a sentiment score, from -1 to 1, representing the detected positive or negative sentiment of the given text.
SUMMARIZE: Returns a summary of the given text.
TRANSLATE: Translates given text from any supported language to any other.

次のように、 --file パラメーターを使ってファイル名を渡すことで snow cortex summarize コマンドを実行できます。

snow cortex summarize --file about_cortex.txt
Copy
Snowflake Cortex offers instant access to industry-leading language models, including Snowflake Arctic, with SQL functions for completing prompts (COMPLETE), text embedding (EMBED\_TEXT\_768), extracting answers (EXTRACT\_ANSWER), sentiment analysis (SENTIMENT), summarizing text (SUMMARIZE), and translating text (TRANSLATE).

これらのコマンドの詳細については、 snow cortexコマンド をご参照ください。