メインコンテンツまでスキップ

評価データセット

生成AIアプリを体系的に評価するための厳選されたテストデータ。入力、オプションのグラウンド トゥルース (期待値)、およびメタデータが含まれます。

評価データを提供する2つの方法

評価データは、次の 2 つの方法で MLflow 評価ハーネスに提供できます。

1. MLflow 評価データセット (推奨)

Unity Catalog に保存された専用のデータセットには、次のものが含まれています。

  • バージョニング : データセットの経時的な変化の追跡
  • リネージ : データセットレコードをその入力にリンクし (ソース トレース) し、その使用状況を追跡します (評価ランとアプリのバージョン)
  • コラボレーション : チーム間でデータセットを共有する
  • 統合 :MLflow UIとAPIsによるシームレスなワークフロー
  • ガバナンス : Unity Catalog のセキュリティとアクセス制御
  • トレース変換 :UIやSDKを使用して、本番運用トレースを評価データセットレコードに簡単に変換できます
  • 視覚化 : MLflow UI で直接データセットの内容を検査および編集します

使用する場合 :本番運用 評価ワークフロー、回帰テスト、データセット管理機能が必要な場合

2. 任意のデータセット(クイックプロトタイピング)

次のような既存のデータ構造を使用します。

  • ディクショナリーのリスト
  • Pandas DataFrame
  • Spark DataFrame

使用する場合 : Quick エクスペリメント、プロトタイピング、またはこれらの形式の評価データが既にある場合。

評価データセット スキーマ

評価データセット MLflowの Evaluation データセット 抽象化を使用するか、データを mlflow.genai.evaluate()に直接渡すかにかかわらず、一貫した構造に従います。

コアフィールド

次のフィールドは、評価データセットの抽象化と、データを直接渡す場合の両方で使用されます。

データ型

説明

必須

inputs

dict[Any, Any]

アプリの入力 (ユーザーの質問、コンテキストなど) は、JSON 形式で選択可能な dictとして保存されます。

Yes

expectations

dict[Str, Any]

グラウンド トゥルース ラベルは、JSON シリアル化可能な dict.

オプション

expectations 予約済みキー

expectations には、事前構築済みの LLM スコアラーによって使用されるいくつかの予約済みキー ( guidelinesexpected_facts、および expected_responseがあります。

フィールド

使用者

説明

expected_facts

correctness ジャッジ

表示すべき事実のリスト

expected_response

is_correct スコアラー

正確または類似の期待出力

guidelines

meets_guidelines スコアラー

従うべき自然言語のルール

expected_retrieved_context

document_recall スコアラー

取得する必要があるドキュメント

追加フィールド

次のフィールドは、評価 データセットの抽象化レイヤーによってリネージとバージョン履歴を追跡するために使用されます。

データ型

説明

必須

dataset_record_id

string

レコードの一意の識別子。

指定しない場合は自動的に設定されます。

create_time

timestamp

レコードが作成された時刻。

挿入時や更新時に自動的に設定されます。

created_by

string

レコードを作成したユーザー。

挿入時や更新時に自動的に設定されます。

last_update_time

timestamp

レコードが最後に更新された時刻。

挿入時や更新時に自動的に設定されます。

last_updated_by

string

レコードを最後に更新したユーザー。

挿入時や更新時に自動的に設定されます。

source

struct

データセットレコードのソース(以下を参照)。

オプション

tags

dict[str, Any]

データセット レコードのキーと値のタグ。

オプション

ソースフィールド

source フィールドは、データセット レコードの取得元を追跡します。各レコードは、次の 1 つの ソースタイプのみを持つことができます。

1. 人間のソース - 人によって手動で作成されたレコード

Python
{
"source": {
"human": {
"user_name": "jane.doe@company.com"
}
}
}
  • user_name (str):レコードを作成したユーザー

2. ドキュメントソース - ドキュメントから合成されたレコード

Python
{
"source": {
"document": {
"doc_uri": "s3://bucket/docs/product-manual.pdf",
"content": "The first 500 chars of the document..." # Optional
}
}
}
  • doc_uri (str): ソースドキュメントへの URI/パス
  • content (str、オプション):ドキュメントからの抜粋または完全なコンテンツ

3. Trace ソース - 本番運用トレースから作成されたレコード

Python
{
"source": {
"trace": {
"trace_id": "tr-abc123def456"
}
}
}
  • trace_id (str): ソーストレースの一意の識別子

MLflow 評価データセット UI

評価 データセット UI

MLflow 評価データセット SDK リファレンス

評価データセット SDK は、GenAI アプリ評価用のデータセットを作成、管理、使用するためのプログラムによるアクセスを提供します。詳細については、API リファレンスmlflow.genai.datasetsを参照してください。最も頻繁に使用されるメソッドとクラスは次のとおりです。

一般的なパターン

本番運用 トレース からデータセットを作成

Python
import mlflow
import mlflow.genai.datasets
import pandas as pd


# By default, search_traces() searches the current active experiment.
# To search a different experiment, set it explicitly:
mlflow.set_experiment(experiment_id=<YOUR_EXPERIMENT_ID>)

# Search for production traces with good feedback
traces = mlflow.search_traces(
filter_string="""
tags.environment = 'production'
AND attributes.feedback_score > 0.8
"""
)

dataset = mlflow.genai.datasets.create_dataset(
uc_table_name="catalog.schema.production_golden_set"
)

dataset = dataset.merge_records(traces)

既存のデータセットを更新する

Python
import mlflow.genai.datasets
import pandas as pd

# Load existing dataset
dataset = mlflow.genai.datasets.get_dataset("catalog.schema.eval_dataset")

# Add new test cases
new_cases = [
{
"inputs": {"question": "What are MLflow models?"},
"expectations": {
"expected_facts": ["model packaging", "deployment", "registry"],
"min_response_length": 100
}
}
]

# Merge new cases
dataset = dataset.merge_records(new_cases)

制限事項

  • 顧客マネージドキー(CMK) はサポートされていません。
  • 評価データセットごとに最大 2,000 行。
  • データセット レコードあたりの期待値は最大 20 件です。

ユースケースに合わせてこれらの制限を緩和する必要がある場合は、Databricks の担当者にお問い合わせください。

次のステップ

ハウツーガイド

コンセプト