大規模言語モデル(LLM)関数(Snowflake Cortex)¶
Snowflake Cortexは、Mistral、Meta、Googleといった企業の研究者によってトレーニングされた、業界をリードする大規模言語モデル(LLMs)に即座にアクセスすることができます。これには、Snowflakeが開発したエンタープライズグレードモデルである Snowflake Arctic が含まれます。
これらの LLMs はSnowflakeによって完全にホストされ管理されているため、これらを使用するのにセットアップは必要ありません。お客様のデータはSnowflake内に留まり、お客様が期待するパフォーマンス、スケーラビリティ、ガバナンスを実現します。
利用可能な関数¶
Snowflake Cortexの特徴量は SQL 関数として提供され、 Python でも利用可能です。Cortex LLM 関数は以下のカテゴリーに分類できます。
COMPLETE 関数¶
COMPLETE 関数は、アスペクトベースの感情分類、合成データ生成、カスタマイズされた要約など、ユーザーが指定した幅広いタスクを実行できる汎用関数です。 Cortex Guard は、言語モデルから安全でない可能性のある有害な応答をフィルタリングするために設計された、 COMPLETE 関数内で使用可能な安全パラメーターです。この関数は、微調整したモデルにも使用できます。
タスク固有の関数¶
タスク固有の関数とは、カスタマイズを必要としない、簡単な要約や簡単な翻訳などのルーチンタスクを自動化するために、目的に応じて構築され管理される関数のことです。
CLASSIFY_TEXT: プロンプトが与えられると、それを定義したクラスのいずれかに分類します。
EXTRACT_ANSWER: 質問と構造化されていないデータを与えると、その質問に対する答えがデータ内に見つかる場合にそれを返します。
PARSE_DOCUMENT: ドキュメントのある内部ステージまたは外部ステージが与えられると、 OCR モードを使用して抽出されたテキストコンテンツ、または LAYOUT モードを使用して抽出されたテキストとレイアウト要素を含む JSON 形式の文字列を含むオブジェクトを返します。
SENTIMENT: 与えられたテキストのポジティブまたはネガティブセンチメントを表わす、-1から1までのセンチメントスコアを返します。
SUMMARIZE: 与えられたテキストの要約を返します。
TRANSLATE: 与えられたテキストをサポートされている言語から他の言語に翻訳します。
EMBED_TEXT _768: テキストが与えられると、そのテキストを表す768ディメンションの ベクトル埋め込み を返します。
EMBED_TEXT _1024: テキストが与えられると、そのテキストを表現する1024ディメンションの ベクトル埋め込み を返します。
ヘルパー関数¶
ヘルパー関数は、他の LLM 関数を実行する際に失敗するケースを減らす目的で構築され、管理される関数です。たとえば、入力プロンプトのトークン数を取得して、呼び出しがモデルの制限を超えないようにします。
COUNT_TOKENS: 入力テキストが与えられると、指定されたモデルまたはCortex関数に基づいてトークン数を返します。
TRY_COMPLETE: COMPLETE 関数と同様に動作しますが、関数を実行できなかった場合、エラーコードの代わりに NULL を返します。
必要な権限¶
SNOWFLAKE データベースの CORTEX_USER データベースロールには、ユーザーがSnowflake Cortex LLM 関数を呼び出すことを許可する権限が含まれています。デフォルトでは、CORTEX_USERロールはPUBLICロールに付与されます。PUBLICロールはすべてのユーザーとロールに自動的に付与されるため、アカウント内のすべてのユーザーがSnowflake Cortex LLM関数を使用できるようになります。
すべてのユーザーにこの権限を与えたくない場合は、PUBLICロールのアクセス権を取り消し、特定のロールにアクセス権を与えることができます。
PUBLIC ロールから CORTEX_USER データベースロールを取り消すには、 ACCOUNTADMIN ロールを使用して以下のコマンドを実行します。
REVOKE DATABASE ROLE SNOWFLAKE.CORTEX_USER
FROM ROLE PUBLIC;
REVOKE IMPORTED PRIVILEGES ON DATABASE SNOWFLAKE
FROM ROLE PUBLIC;
そして、特定のロールに選択的にアクセスを提供することができます。SNOWFLAKE.CORTEX_USER データベースロールをユーザーに直接付与することはできません。詳細については、 SNOWFLAKE データベースロールの使用 をご参照ください。ACCOUNTADMINロールを持つユーザーは、ユーザーがCortex LLM関数にアクセスできるように、このロールをカスタムロールに付与できます。以下の例では、 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;
また、特定のユーザーグループが一般的に使用する既存のロールを使用して、Snowflake Cortex LLM の機能へのアクセスを付与することもできます。(ユーザーのロール を参照。)例えば、組織内のアナリストが既定のロールとして使用する analyst
ロールを作成した場合、これらのユーザーにSnowflake Cortex LLM 関数へのアクセスを GRANT ステートメント1つで簡単に付与することができます。
GRANT DATABASE ROLE SNOWFLAKE.CORTEX_USER TO ROLE analyst;
可用性¶
Snowflake Cortex LLM 関数は、現在以下のリージョンで利用可能です。リストにないリージョンから LLMs にアクセスするには、 クロスリージョン推論パラメーター を使用します。
注釈
TRY_COMPLETE 関数は COMPLETE と同じ地域で利用できます。
COUNT_TOKENS 関数は全リージョンで利用可能ですが、モデル推論はテーブルにあるようにリージョン固有です。
関数
(モデル)
|
AWS US西部2
(オレゴン)
|
AWS US東部1
(N.バージニア)
|
AWSヨーロッパ中部1
(フランクフルト)
|
AWS ヨーロッパ西部1
(アイルランド)
|
AWS AP 南東部2
(シドニー)
|
AWS AP 北東部1
(東京)
|
Azure東部 US 2
(バージニア)
|
Azure西ヨーロッパ
(オランダ)
|
---|---|---|---|---|---|---|---|---|
COMPLETE
(
llama3.2-1b ) |
✔ |
|||||||
COMPLETE
(
llama3.2-3b ) |
✔ |
|||||||
COMPLETE
(
llama3.1-8b ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
|
COMPLETE
(
llama3.1-70b ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
COMPLETE
(
llama3.1-405b ) |
✔ |
✔ |
✔ |
|||||
COMPLETE
(
snowflake-arctic ) |
✔ |
|||||||
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_1024
(
nv-embed-qa-4 ) |
✔ |
|||||||
EMBED_TEXT_1024
(
multilingual-e5-large ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
EMBED_TEXT_1024
(
voyage-multilingual-2 ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
CLASSIFY_TEXT
|
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
EXTRACT_ANSWER |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
SENTIMENT |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
SUMMARIZE |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
TRANSLATE |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
Snowflake Cortex LLM 関数は、現在以下のリージョンで利用可能です。
関数
(モデル)
|
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 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 ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
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 ) |
✔ |
✔ |
✔ |
✔ |
✔ |
コストの考慮事項¶
注釈
PARSE_DOCUMENT 処理されるページ数に応じてスケーリングされる課金が間もなく登場する予定です。
Snowflake Cortex LLM 関数は、処理されたトークンの数に基づいてコンピュートコストが発生します。100万トークンあたりのクレジット単位での各コストについては、 Snowflakeサービス利用テーブル をご参照ください。
トークンは、Snowflake Cortex LLM 関数で処理されるテキストの最小単位でのことで、テキストの4文字に相当します。トークンに相当する生の入力または出力テキストは、モデルによって異なる場合があります。
応答で新しいテキストを生成する関数(COMPLETE、 CLASSIFY_TEXT、 SUMMARIZE、 TRANSLATE)では、入力と出力の両方のトークンがカウントされます。
CORTEX GUARD では、入力トークンのみがカウントされます。入力トークンの数は、 COMPLETE 関数で使用される LLM モデルごとの出力トークンの数に基づいています。
EMBED_TEXT _*関数では、入力トークンのみがカウントされます。
入力から情報を抽出するだけの関数(EXTRACT_ANSWERとSENTIMENT)では、入力トークンのみがカウントされます。
EXTRACT_ANSWER の場合、請求可能トークン数は
from_text
フィールドとquestion
フィールドのトークン数の合計です。SUMMARIZE、 TRANSLATE、 EXTRACT_ANSWER、 CLASSIFY_TEXT、 SENTIMENT は、応答を生成するために入力テキストにプロンプトを追加します。その結果、入力トークン数は、プロバイダーのテキストに含まれるトークン数よりもわずかに多くなります。
TRY_COMPLETE はエラー処理にコストがかかりません。つまり、 TRY_COMPLETE 関数が NULL を返せば、コストは発生しません。
COUNT_TOKENS は関数を実行するための計算コストしか発生しません。トークンに基づく追加コストは発生しません。
大規模のウェアハウスはパフォーマンスを向上しないため、Snowflakeでは小規模のウェアハウス(MEDIUM 以下)でSnowflake Cortex LLM 関数またはCortex PARSE_DOCUMENT 関数を呼び出すクエリの実行を推奨しています。ウェアハウスをアクティブに保つことに関連するコストは、Snowflake Cortex LLM 関数を呼び出すクエリを実行するときにも適用されます。コンピューティングコストに関する一般情報については、 コンピューティングコストについて をご参照ください。
AIサービスのコストを追跡する¶
お客様のアカウントで LLM 関数を含む AI サービスに使用されたクレジットを追跡するには、 METERING_HISTORY ビュー を使用します。
SELECT *
FROM SNOWFLAKE.ACCOUNT_USAGE.METERING_DAILY_HISTORY
WHERE SERVICE_TYPE='AI_SERVICES';
LLM 関数のクレジット消費を追跡する¶
各 LLM 関数呼び出しのクレジットとトークンの消費量を表示するには、 CORTEX_FUNCTIONS_USAGE_HISTORY ビュー を使用します。
SELECT *
FROM SNOWFLAKE.ACCOUNT_USAGE.CORTEX_FUNCTIONS_USAGE_HISTORY;
使用量のクォータ¶
すべてのSnowflake顧客がLLM関数にアクセスできるようにするため、Snowflake Cortex LLM関数は、使用率が高い時間帯にスロットルの対象となることがあります。利用クォータはアカウントレベルでは適用されません。
スロットルされたリクエストは エラーの応答 を受け取るため、後で再試行する必要があります。
注釈
有効な支払い方法のないオンデマンドSnowflakeアカウント(トライアルアカウントなど)では、Snowflake Cortex LLM 関数の使用は1日あたりおよそ1クレジットに制限されます。この制限を解除するには、 トライアルアカウントを有料アカウントに変更 してください。
コスト管理とスロットリング¶
このプレビュー期間中、SnowflakeではSnowflake Cortex LLM関数を呼び出す際に、MEDIUM以下のウェアハウスサイズを使用することを推奨します。必要以上に大規模なウェアハウスを使用してもパフォーマンスは向上しませんが、不必要なコストがかかり、スロットリングのリスクも高くなります。この推奨事項は、今後の製品アップデートにより適用されなくなる可能性があります。
モデルの制限¶
Snowflake Cortexで使用されるモデルには、以下の表に示すようにサイズに制限があります。サイズはトークンで表示されています。トークンは一般的に約4文字のテキストを表すので、制限に対応する単語数はトークンの数よりも少なくなります。制限値を超える入力はエラーになります。
重要
AWS AP 南東部2(シドニー)地域では、以下のモデルのコンテキストウィンドウは4kです。
COMPLETE 関数の
llama3-8b
とmistral-7b
。SUMMARIZE 関数からのSnowflake管理モデル。
AWS アイルランドリージョンでは、 llama3.1-8b
のコンテキストウィンドウは16,384です。
関数 |
モデル |
コンテキストウィンドウ(トークン) |
---|---|---|
COMPLETE |
|
4,096 |
|
32,000 |
|
|
128,000 |
|
|
100,000 |
|
|
32,000 |
|
|
256,000 |
|
|
256,000 |
|
|
256,000 |
|
|
32,000 |
|
|
4,096 |
|
|
8,000 |
|
|
8,000 |
|
|
128,000 |
|
|
128,000 |
|
|
128,000 |
|
|
128,000 |
|
|
128,000 |
|
|
32,000 |
|
|
8,000 |
|
EMBED_TEXT_768 |
|
512 |
|
512 |
|
EMBED_TEXT_1024 |
|
512 |
|
512 |
|
|
32,000 |
|
CLASSIFY_TEXT |
Snowflake管理モデル |
128,000 |
EXTRACT_ANSWER |
Snowflake管理モデル |
2,048のテキスト
64の質問
|
SENTIMENT |
Snowflake管理モデル |
512 |
SUMMARIZE |
Snowflake管理モデル |
32,000 |
TRANSLATE |
Snowflake管理モデル |
1,024 |
モデルの選択¶
Snowflake Cortex COMPLETE 関数は、能力、遅延、コストの異なる複数のモデルをサポートしています。これらのモデルは、一般的な顧客のユースケースに合わせて慎重に選択されています。 クレジットあたりのパフォーマンス で最高の状態を達成するには、コンテンツのサイズとタスクの複雑さに適したモデルを選択します。以下は、利用可能なモデルの簡単な概要です。
大規模モデル¶
どこから始めたらよいかわからない場合は、まず最も高性能なモデルを試して、他のモデルを評価するためのベースラインを確立してください。 reka-core
と mistral-large2
は、Snowflake Cortexが提供する最も高性能なモデルで、最先端のモデルで何ができるかを知ることができます。
reka-core
は、強力な推論能力、コード生成、多言語流暢性を備えた、Reka AI の最も高度な大規模言語モデルです。mistral-large2
は、Mistral AIの最も高度な大規模言語モデルで、トップクラスの推論機能を備えています。mistral-large
と比較すると、コード生成、数学、推論において格段に能力が高く、多言語サポートもはるかに強力です。合成テキスト生成、コード生成、多言語テキスト分析など、大規模な推論能力を必要とする複雑なタスクや、高度に専門化されたタスクに最適です。llama3.1-405b
はMeta社のllama3.1
モデルファミリーのオープンソースモデルで、128Kの大きなコンテキストウィンドウを持ちます。長文の文書処理、多言語サポート、合成データ生成、モデルの蒸留に優れています。
中規模モデル¶
llama3.1-70b
は、チャットアプリケーション、コンテンツ作成、およびエンタープライズアプリケーションに理想的な最先端のパフォーマンスを提供するオープンソースモデルです。128Kのコンテキストウィンドウで多様なユースケースを可能にする、高いパフォーマンスとコスト効率を備えたモデルです。llama3-70b
は現在もサポートされており、コンテキストウィンドウは8Kです。snowflake-arctic
は、Snowflakeのエンタープライズ向けトップクラスの LLM です。Arcticは、SQLの生成、コーディング、ベンチマークに従った命令などのエンタープライズタスクを得意としています。reka-flash
は、商品説明やブログ記事の作成、コーディング、数百ページのドキュメントからの回答抽出など、高い品質を必要とする高速な作業負荷に最適化された、非常に高性能な多言語モデルです。mixtral-8x7b
は、テキスト生成、分類、質問回答などに最適です。Mistralのモデルは、低レイテンシ、低メモリ要件に最適化されており、企業のユースケースにおいて高いスループットを実現します。jamba-Instruct
モデルは AI21 Labsによって構築され、企業の要件を効率的に満たします。256kトークンコンテキストウィンドウを低コスト、低遅延で提供するように最適化されており、要約やQ&A、また長いドキュメントや広範なナレッジベース上のエンティティ抽出などのタスクに最適です。AI21 Jamba 1.5モデルファミリーは基盤モデルに従属する、最先端のハイブリッド SSM トランスフォーマーインストラクションです。コンテキスト長が256Kの
jamba-1.5-mini
とjamba-1.5-large
は、構造化出力(JSON)やグラウンディング生成などのユースケースをサポートしています。
小規模モデル¶
llama3.2-1b
、llama3.2-3b
のモデルは、128Kトークンのコンテキスト長をサポートし、要約、命令追従、書き換えタスクなどのユースケースにおいて、このクラスでは最先端です。Llama 3.2モデルは、英語、ドイツ語、フランス語、イタリア語、ポルトガル語、ヒンディー語、スペイン語、タイ語に対応し、多言語機能を提供します。llama3.1-8b
は、低~中程度の推論を必要とするタスクに最適です。軽量で超高速のモデルで、コンテキストウィンドウは128Kです。llama3-8b
とllama2-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 |
- |
128,000 |
88.6 |
89 |
96.8 |
- |
|
32,000 |
83.2 |
76.8 |
92.2 |
- |
|
128,000 |
86 |
80.5 |
95.1 |
- |
|
128,000 |
84 |
92 |
93 |
- |
|
32,000 |
81.2 |
45.1 |
81 |
81 |
|
100,000 |
75.9 |
72 |
81 |
- |
|
128,000 |
73 |
72.6 |
84.9 |
- |
|
32,000 |
70.6 |
40.2 |
60.4 |
- |
|
4,096 |
68.9 |
30.5 |
57.5 |
- |
|
256,000 |
68.2 |
40 |
59.9 |
- |
|
256,000 |
69.7 |
- |
75.8 |
- |
|
256,000 |
81.2 |
- |
87 |
- |
|
4,096 |
67.3 |
64.3 |
69.7 |
79 |
|
128,000 |
49.3 |
- |
44.4 |
- |
|
128,000 |
69.4 |
- |
77.7 |
- |
|
8,000 |
64.3 |
32.3 |
46.4 |
- |
|
32,000 |
62.5 |
26.2 |
52.1 |
- |
|
GPT 3.5 Turbo* |
4,097 |
70 |
48.1 |
57.1 |
- |
*比較のために提供。Snowflake Cortex COMPLETE では利用できません。
LLM 関数概要¶
Cortex LLM 関数は以下のカテゴリーに分類できます。
COMPLETE 関数: アスペクトベースのセンチメント分類、合成データ生成、カスタマイズされた要約など、ユーザーが指定した幅広いタスクを実行できる汎用関数。この関数は、 微調整したモデル でも使用できます。
タスク固有の関数: 簡単な要約やクイック翻訳など、ルーチンタスクを自動化する目的別に構築され管理された関数で、カスタマイズの必要はありません。
ヘルパー関数: 他の LLM 関数を実行する際に失敗するケースを減らす目的で構築され、管理される関数です。たとえば、入力プロンプトのトークン数を取得して、呼び出しがモデルの制限を超えないようにします。
COMPLETE¶
プロンプトが与えられると、指示に従う COMPLETE 関数は選択した言語モデルを使用して応答を生成します。最も単純なユースケースでは、プロンプトは単一の文字列です。また、インタラクティブなチャット形式で使用するために、複数のプロンプトと応答を含む会話を提供することもできます。この形式の関数では、出力のスタイルとサイズをカスタマイズするハイパーパラメーターオプションを指定することもできます。セーフガードを実装するために、 LLM からの安全でない可能性のある有害な応答をフィルタリングするCortex Guardパラメーターを有効にすることもできます。
セーフガードを実装するには、 LLM からの安全でない有害な応答をフィルタリングする Cortex Guard パラメーターを有効にすることができます。
COMPLETE 関数は以下のモデルをサポートしています。異なるモデルでは、 コスト とクォータ が異なる可能性があります。
gemma-7b
jamba-1.5-mini
jamba-1.5-large
jamba-instruct
llama2-70b-chat
llama3-8b
llama3-70b
llama3.1-8b
llama3.1-70b
llama3.1-405b
llama3.2-1b
llama3.2-3b
mistral-large
mistral-large2
mistral-7b
mixtral-8x7b
reka-core
reka-flash
snowflake-arctic
構文と例については、 COMPLETE (SNOWFLAKE.CORTEX) をご参照ください。
Cortex Guard¶
Cortex Guardは、 COMPLETE 関数内で使用可能な安全パラメーターで、言語モデルから安全でない可能性のある有害な応答をフィルタリングするように設計されています。Cortex Guardは現在、MetaのLlama Guard 3で構築されています。Cortex Guardは、出力がアプリケーションに返される前に言語モデルの応答を評価することで機能します。Cortex Guardを起動すると、暴力犯罪、憎悪、性的コンテンツ、自傷行為などに関連する可能性のある言語モデルの反応が自動的にフィルタリングされます。構文と例については、 COMPLETE (SNOWFLAKE.CORTEX) 引数のセクションをご参照ください。
注釈
Cortex Guardの使用には、 処理された入力トークンの数 に基づく計算料金が発生します。
タスク固有の関数¶
入力テキストが与えられると、タスク固有の関数は、プロンプトを指定することなく、そのタスクのために設計されたタスクを実行します。タスクに特化した関数により、カスタマイズを必要としない定型的なタスクを迅速かつコスト効率よく実行します。
CLASSIFY_TEXT¶
CLASSIFY_TEXT 関数は、自由形式のテキストを指定したカテゴリーに分類します。テキストは平文の文字列である可能性があります。
構文と例については、 CLASSIFY_TEXT (SNOWFLAKE.CORTEX) をご参照ください。
EMBED_TEXT_768¶
EMBED_TEXT _768関数は、与えられた英語テキストに対して768ディメンションのベクトル埋め込みを作成します。埋め込みとベクトル比較関数の詳細については、 ベクトル埋め込み をご参照ください。
構文と例については、 EMBED_TEXT_768 (SNOWFLAKE.CORTEX) をご参照ください。
EMBED_TEXT_1024¶
EMBED_TEXT_1024関数は、与えられた英語テキストに対して1024ディメンションのベクトル埋め込みを作成します。埋め込みとベクトル比較関数の詳細については、 ベクトル埋め込み をご参照ください。
構文と例については、 EMBED_TEXT_1024 (SNOWFLAKE.CORTEX) をご参照ください。
EXTRACT_ANSWER¶
EXTRACT_ANSWER 関数は、テキストドキュメントから指定された質問に対する回答を抽出します。ドキュメントは、平易な英語のドキュメントの場合も、半構造化(JSON)データオブジェクトの文字列表現の場合もあります。
構文と例については、 EXTRACT_ANSWER (SNOWFLAKE.CORTEX) をご参照ください。
PARSE_DOCUMENT¶
PARSE_DOCUMENT 関数は、内部ステージまたは外部ステージに保存されている文書からテキストまたはレイアウトを抽出します。
構文と例については、 PARSE_DOCUMENT (SNOWFLAKE.CORTEX) をご参照ください。
SENTIMENT¶
SENTIMENT 関数は、与えられた英語の入力テキストに対して、センチメントを-1から1(-1が最も否定的、1が最も肯定的で、0近辺の値は中立)のスコアで返します。
構文と例については、 SENTIMENT (SNOWFLAKE.CORTEX) をご参照ください。
SUMMARIZE¶
SUMMARIZE 関数は、与えられた英語のテキストの要約を返します。
構文と例については、 SUMMARIZE (SNOWFLAKE.CORTEX) をご参照ください。
TRANSLATE¶
TRANSLATE 関数は、指示または検出されたソース言語のテキストをターゲット言語に翻訳します。
構文と例については、 TRANSLATE (SNOWFLAKE.CORTEX) をご参照ください。
ヘルパー関数¶
ヘルパー関数は、他のCortex LLM 関数を実行する際のエラーを減らすために作られたマネージド関数です。
COUNT_TOKENS¶
COUNT_TOKENS 関数は、 COMPLETE で指定された大規模言語モデルと、タスク固有の関数の入力テキストについて、プロンプト内のトークン数を計算します。
構文と例については、 COUNT_TOKENS (SNOWFLAKE.CORTEX) をご参照ください。
TRY_COMPLETE¶
TRY_COMPLETE 関数は、 COMPLETE 関数と同じ操作を行いますが、操作が実行できない場合にエラーを発生させる代わりに、 NULL を返します。
構文と例については、 TRY_COMPLETE (SNOWFLAKE.CORTEX) をご参照ください。
エラー条件¶
Snowflake Cortex LLM 関数は以下のエラーメッセージを生成する可能性があります。
メッセージ |
説明 |
---|---|
|
システム負荷が高すぎるため、リクエストは拒否されました。もう一度リクエストしてください。 |
|
関数に渡された |
|
モデルの消費予算を超えました。 |
|
指定されたモデルは存在しません。 |
|
指定された言語は TRANSLATE 関数ではサポートされていません。 |
|
リクエストはモデルがサポートするトークンの最大数を超えました(モデルの制限 を参照)。 |
|
使用レベルが高いため、リクエストはスロットルされました。後でもう一度お試しください。 |
|
指定されたカテゴリー数は、 CLASSIFY_TEXT の制限を超えています。 |
|
指定されたカテゴリーのタイプは CLASSIFY_TEXT でサポートされていません。 |
|
CLASSIFY_TEXT への入力は空文字列かNULLです。 |
PythonでのSnowflake Cortex LLM 関数の使用¶
Snowflake Cortex LLM 関数は、 Snowpark ML バージョン1.1.2以降で使用できます。Snowpark ML の設定方法については、 Snowflake ML をローカルで使用する をご参照ください。
PythonスクリプトをSnowflakeの外で実行する場合、これらの関数を使用するにはSnowparkセッションを作成する必要があります。手順については、 Snowflakeへの接続 をご参照ください。
次のPythonの例では、単一の値に対してSnowflake Cortex LLM 関数を呼び出しています。
from snowflake.cortex import Complete, ExtractAnswer, Sentiment, Summarize, Translate, ClassifyText
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"))
print(ClassifyText("France", ["Europe", "Asia"]))
以下のように、テーブルの列に対して LLM 関数を呼び出すこともできます。この例では、セッションオブジェクト(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()
注釈
COMPLETE の高度なチャットスタイル(マルチメッセージ)形式は、Pythonでは現在サポートされていません。
Snowflake CLI でのSnowflake Cortex LLM 関数の使用¶
Snowflake Cortex LLM 関数は、 Snowflake CLI バージョン2.4.0以降で利用できます。 Snowflake CLI の使用の詳細については Snowflake CLI の紹介 をご覧ください。
次の例は、単一の値に対して:codenowrap:snow cortex
コマンドを使用する例です。 -c
パラメーターは、使用する接続を指定します。
注釈
COMPLETE の高度なチャット形式(マルチメッセージ)は、現在 Snowflake CLI ではサポートされていません。
snow cortex complete "Is 5 more than 4? Please answer using one word without a period." -c "snowhouse"
snow cortex extract-answer "what is snowflake?" "snowflake is a company" -c "snowhouse"
snow cortex sentiment "Mary had a little Lamb" -c "snowhouse"
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."
snow cortex translate herb --to pl
コマンドに使いたいテキストを含むファイルを使用することもできます。この例では、ファイル about_cortex.txt
に以下の内容が含まれていると仮定します。
Snowflake Cortex gives you instant access to industry-leading large language models (LLMs) trained by researchers at companies like 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
パラメーターを使ってファイル名を渡すことで:codenowrap:snow cortex summarize
コマンドを実行できます。
snow cortex summarize --file about_cortex.txt
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コマンド をご参照ください。
法的通知¶
インプットとアウトプットのデータ分類は以下の表の通りです。
入力データの分類 |
出力データの分類 |
指定 |
---|---|---|
Usage Data |
Customer Data |
Covered AI Features [1] |
詳細については、 Snowflake AI と ML をご参照ください。