Snowflake AI 可観測性リファレンス¶
このドキュメントは、Snowflake Cortex AI Observability を使用して、生成 AI アプリケーションのパフォーマンスを評価および監視するための包括的なリファレンスを提供します。
以下のコンセプトをカバーしています。
データセットと属性
評価メトリック
実行
アクセス制御とストレージ
データセットと属性¶
データセットは、アプリケーションのテストに使う入力のセットです。また、期待される出力のセット(グランドトゥルース)をコンテナーに含めることもできます。
TruLens Python SDK を使用して、データセットを Snowflake テーブル または pandas dataframe のいずれかに指定できます。データセットの各列は、以下の予約属性のいずれかにマッピングされていなければなりません。
入力属性 |
説明 |
|---|---|
RECORD_ROOT.INPUT |
LLM への入力プロンプト。 型: 文字列 |
RECORD_ROOT.INPUT_ID |
入力プロンプトの一意識別子。 入力 ID を提供しない場合、 ID が自動的に生成され、各入力に割り当てられます。 型: 文字列 |
RETRIEVAL.QUERY_TEXT |
RAG アプリケーションのユーザークエリ 型: 文字列 |
RECORD_ROOT.GROUND_TRUTH_OUTPUT |
入力プロンプトに対して期待される応答。 型: 文字列 |
アプリケーションのインスツルメンテーションでは、インスツルメンテーション対象の関数(またはメソッド)の入出力パラメーターを、関連する入出力属性にマッピングする必要があります。@instrument デコレーターを使用してパラメーターをマッピングし、メトリクスを計算します。データセットの一部として指定された入力属性に加えて、以下の出力属性を使用して関連関数をインストゥルメントすることもできます:
出力属性 |
説明 |
|---|---|
RETRIEVAL.RETRIEVED_CONTEXTS |
LLM によって生成される出力。 タイプ: リスト [文字列] |
RECORD_ROOT.OUTPUT |
LLM からの生成された応答。 型: 文字列 |
評価メトリック¶
評価メトリクスは、アプリケーションの精度とパフォーマンスを測定する定量的な方法を提供します。これらのメトリクスは、アプリケーションへの特定の入力、 LLM 生成された出力、および任意の中間情報 (RAG アプリケーションから取得された結果など) を使用して計算されます。グランドトゥルース・データセットを使用してメトリクスを計算することもできます。
"LLM-as-a-judge" アプローチでメトリクスを計算することができます。このアプローチでは、 LLM が使用され、提供された情報に基づいてアプリケーションの出力に関する説明とともにスコア(0~1の間)が生成されます。Cortex AI で利用可能なすべての LLM を審査員として選択できます。LLM のジャッジが指定されていない場合、llama3.1-70b がデフォルトのジャッジとして使われます。AI 可観測性は様々な評価指標をサポートします。
コンテキスト関連性¶
コンテキストの関連性は、リトリーバまたは検索サービスから取得したコンテキストがユーザーのクエリに関連しているかどうかを判断します。ユーザーのクエリと検索されたコンテキストが与えられると、 LLM ジャッジがクエリに基づいて検索されたコンテキストの関連性を決定するために使用されます。
必須属性:
RETRIEVAL.QUERY_TEXT: RAG または検索アプリケーションにおけるユーザークエリRETRIEVAL.RETRIEVED_CONTEXTS: 検索サービスまたはリトリーバーから取得したコンテキスト
現実性¶
根拠は、生成された応答が、リトリーバーまたは検索サービスから検索されたコンテキストによってサポートされ、根拠があるかどうかを決定します。生成された応答と検索されたコンテキストをもとに、 LLM のジャッジで根拠を判断します。基になる実装では、根拠スコアを生成する際にChain-of-thought推論を使用します。
必須属性:
RETRIEVAL.RETRIEVED_CONTEXTS: RAG または検索アプリケーションにおけるユーザークエリRECORD_ROOT.OUTPUT: LLM によって生成された最終応答。
回答の関連性¶
回答の関連性は、生成された回答がユーザーのクエリに関連しているかどうかを判断します。ユーザーのクエリと生成された応答が与えられると、 LLM は、その応答がユーザーのクエリにどの程度関連しているかを判定します。これはグランドトゥルースのリファレンスに依存しないため、答えの正しさを評価することにはならないことに注意してください。
必須属性:
RECORD_ROOT.INPUT: RAG または検索アプリケーションにおけるユーザークエリRECORD_ROOT.OUTPUT: LLM によって生成された最終応答。
正確性¶
正しさとは、生成された応答がどれだけグランドトゥルースと一致しているかを決定するものです。正しさのスコアが高いほど、より正確で、グランドトゥルースとの整合性が高いことを示します。
必須属性:
RECORD_ROOT.INPUT: LLM へのユーザークエリまたはプロンプト。RECORD_ROOT.GROUND_TRUTH_OUTPUT: ユーザーのクエリに基づいて期待される応答RECORD_ROOT.OUTPUT: LLM によって生成されたレスポンスです。
一貫性¶
首尾一貫性は、生成されたモデルの応答が首尾一貫しており、論理的なギャップや矛盾、矛盾がないかどうかを測定します。一貫性のスコアが高いほど、一貫性の高い回答であることを示します。
必須属性:
RECORD_ROOT.OUTPUT: LLM によって生成されたレスポンスです。
コストとレイテンシー¶
使用コスト¶
コストは、 COMPLETE (SNOWFLAKE.CORTEX) 関数によって返されるトークン使用情報(入力の場合は prompt_tokens、出力の場合は completion_tokens)に基づいて、Cortex LLMs に依存する LLM 呼び出しごとに計算されます。トレース情報の一部として、各 LLM コールに関連するトークンの使用と対応するコストを表示できます。
遅延¶
待ち時間は、アプリケーションの各関数呼び出しの完了にかかる時間を測定することによって決定されます。アプリケーショントレースは、 TruLens SDK を使用してインスツルメンテーションされた各関数のレイテンシーをきめ細かく可視化します。個々の関数のレイテンシは、各入力に対応するアプリケーション全体のレイテンシを計算するために集約されます。各実行では、複数のアプリケーション構成で簡単に比較できるように、すべての入力の平均レイテンシも提供します。
実行¶
ランとは、アプリケーションの精度やパフォーマンスを測定するための評価タスクです。最適なアプリケーション構成を選択するのに役立ちます。生成的な AI アプリケーションを構築するには、様々な LLMs、プロンプト、推論パラメーターを実験する必要があります。精度、待ち時間、使用量を測定し、本番に最適な組み合わせを見つけます。それぞれの組み合わせはアプリケーションのバージョンに対応しています。
実行では、指定したデータセットを使用してアプリケーションバージョンのバッチ評価を実行します。異なるバージョンに対して、同じデータセットで複数の実行をトリガーすることができます。バージョン間の集計および記録レベルの差異を比較することで、改善すべき点を識別子として特定し、展開する最適なバージョンを選択することができます。
ランの作成と実行には主に4つのステップがあります:
作成: アプリケーションとバージョンを作成した後、データセットを指定してバージョンに新しいランを追加します。
Invocation: データセットから入力を読み込み、各入力に対してアプリケーションを起動し、トレースを生成し、Snowflakeアカウントに情報を保存します。
計算: 呼び出し後、計算するメトリクスを指定して計算をトリガーします。複数の計算をトリガーし、既存の実行に後から新しいメトリクスを追加できます。
可視化:Snowflakeアカウントにログインして、Snowsightで実行結果を視覚化します。ランは、 AI & ML の Evaluations の下にある関連アプリケーションにリストされています。
各ランにラベルを付けることで、同じデータセットで異なるアプリケーションバージョン間の比較ランを分類することができます。ラベルを使用してランを管理し、フィルターをかけます。
ランには以下のステータスがあります。
ステータス |
説明 |
|---|---|
CREATED |
ランは作成されましたが、開始されていません。 |
INVOCATION_IN_PROGRESS |
ランの呼び出しは、出力とトレースを生成している最中です。 |
INVOCATION_COMPLETED |
すべての出力とトレースが作成され、実行が完了しました。 |
INVOCATION_PARTIALLY_COMPLETED |
アプリケーションの起動とトレース生成に失敗したため、ランの起動が部分的に完了しました。 |
COMPUTATION_IN_PROGRESS |
メトリクスの計算が進行中です。 |
COMPLETED |
メトリクスの計算は、詳細な出力とトレースで完了します。 |
PARTIALLY_COMPLETED |
メトリクス計算中に失敗したため、実行は部分的に完了しました。 |
CANCELLED |
ランは中止となりました。 |
アクセス制御とストレージ¶
必要な権限¶
AI Observabilityを使用するには以下の権限が必要です。
AI Observabilityを使用するには、ロールが CORTEX_USER データベースロールを持っている必要があります。CORTEX_USER ロールはデータベース関数に必要です。このロールの付与と取り消しに関する情報については、 Cortex LLM 権限 を参照してください。
アプリケーションを登録するには、あなたのロールがスキーマに対して CREATE EXTERNAL AGENT 権限を持っている必要があります。詳細については、 アプリケーション をご参照ください。
実行を作成して実行するには、ロールが次を実行する必要があります。
以下の例では、 ACCOUNTADMIN ロールを使用して、ユーザー some_user に以下の権限を付与しています。
CORTEX_USER データベースロール
CREATE EXTERNAL AGENT スキーマに対する
app_schema権限app_schemaスキーマに対する CREATE TASK 権限 。EXECUTE TASK グローバル権限
アプリケーション¶
Creating an application for evaluation creates an External Agent object to represent the application in Snowflake. You can also manage external agents directly using SQL commands. For more information, see 外部エージェントコマンド.
重要
External Agent objects share a namespace with model objects. You cannot create an
external agent with the same name as an existing model in the same schema. If a name collision occurs (for example, when a
model logged with log_model() and an evaluation share the same name), you must rename or drop the conflicting object.
The role required to create and modify an application must have the following access control requirements.
アプリケーションの作成に使用されるロールには、以下の権限が必要です。
権限 |
オブジェクト |
注意 |
|---|---|---|
OWNERSHIP |
外部エージェント |
OWNERSHIP は、オブジェクトを作成したロールに自動的に付与されるオブジェクトに対する特別な権限ですが、所有ロール(または MANAGEGRANTS 権限のある任意のロール)によって GRANTOWNERSHIP コマンドを使用して別のロールに譲渡することもできます。 |
CREATE EXTERNAL AGENT |
スキーマ |
スキーマ内のオブジェクトに対して操作を実行するには、親データベースとスキーマに対する USAGE 権限が必要です。
Modifying and deleting the application require OWNERSHIP privileges on the External Agent object.
If a user’s role has USAGE or OWNERSHIP privileges on an application (External Agent), the application appears in Evaluations under AI & ML within Snowsight.
実行¶
アプリケーションに 実行を追加、変更する、または削除するために使用されるロールには、以下の権限が必要です。
権限 |
オブジェクト |
注意 |
|---|---|---|
USAGE |
外部エージェント |
USAGE or OWNERSHIP privilege on the External Agent object to the role that created the object representing the application in Snowflake. |
CREATE に TASK |
スキーマ |
タスクの作成に必要な権限については、アクセス制御の要件 を参照してください。 |
EXECUTE TASK |
アカウント |
タスクの実行に必要な権限の情報については、EXECUTE TASK を参照してください。 |
ランを削除すると、そのランに関連するメタデータが削除されます。実行の一部として作成された記録は削除されず、保存されたままになります。記録やトレースのストレージについては、「観測可能データ」をご覧ください。
指定された権限セットを持つカスタムロールの作成手順については、Creating custom rolesを参照してください。セキュリティ保護可能なオブジェクトに対して SQL アクションを実行するためのロールと権限付与に関する一般的な情報については、 アクセス制御の概要 を参照してください。
重要
AI observability data ingested into the event table cannot be modified. For which application roles can read or delete rows in SNOWFLAKE.LOCAL.AI_OBSERVABILITY_EVENTS, see 観測可能データ.
審査員としての LLMs¶
AI 可観測性は、Cortex LLMs をジャッジとして使用し、アプリケーションを評価するためのメトリクスを計算します。これらのメトリクスを正常に計算するには、Cortex LLMs へのアクセス許可が必要です。ユーザーロールにCortex LLMs へのアクセス権限を付与するには、必要な権限を参照してください。ユーザーは、 LLM ジャッジとして構成されたモデルへのアクセスを持っている必要があります。LLM ジャッジのデフォルトモデルは llama3.1-70b です。デフォルトの LLM 裁判官モデルは将来変更される可能性があります。
観測可能データ¶
AI 観測可能データは、生成 AI アプリケーションの入力、出力、評価スコア、および関連するトレースを含む記録を表します。すべての記録は、あなたのアカウントの SNOWFLAKE.LOCAL スキーマの下にある専用のイベントテーブル AI_OBSERVABILITY_EVENTS に保存されます。
For Cortex Agents and for External Agent objects used with AI Observability, you can query observability events through SQL using the GET_AI_OBSERVABILITY_EVENTS table function. Pass CORTEX AGENT or EXTERNAL AGENT as the agent type (see Cortex Agentのリクエストのモニター for Cortex Agent monitoring examples). Access requirements for external applications are described in the following paragraphs in this topic.
An account-level privilege, READ UNREDACTED AI OBSERVABILITY EVENTS TABLE, can be required to see unredacted raw fields when reading AI_OBSERVABILITY_EVENTS through Cortex Agent monitoring in Snowsight and through the ``SNOWFLAKE.LOCAL`` observability user-defined table functions that apply that logic. It does not change Cortex Agent evaluation runs or the External Agent Evaluations experience. For details, see アカウント権限 READ UNREDACTED AI OBSERVABILITY EVENTS TABLE and Cortex Agentのリクエストのモニター.
AI observability data ingested into the event table cannot be modified. The SNOWFLAKE.AI_OBSERVABILITY_READER application role grants read-only access to SNOWFLAKE.LOCAL.AI_OBSERVABILITY_EVENTS. Administrators with the SNOWFLAKE.AI_OBSERVABILITY_ADMIN application role have exclusive access to delete data in the SNOWFLAKE.LOCAL.AI_OBSERVABILITY_EVENTS event table.
AI 観測可能データは、Trulens Python SDK または Snowsight を使用してアクセスできます。アプリケーションおよび関連ランの記録を表示するには、以下の権限が必要です。
The user role must have the USAGE privilege on the External Agent object that represents the application.
For example, to view the runs for an externally instrumented RAG application, the user role requires the USAGE privilege on “my-db.my-schema.rag-application1”, where rag-application1 is the External Agent object that represents the external RAG application in Snowflake.
When you call SNOWFLAKE.LOCAL observability table functions against an External Agent (agent_type EXTERNAL AGENT), USAGE on that object is sufficient; the MONITOR privilege does not apply. OWNERSHIP on the External Agent is required to modify or drop the object with SQL; for more information, see 外部エージェントコマンド.
ランや外部エージェントに関連するメタデータ(ラン名、説明、データセット名など)は、メタデータとして分類されます。