評価データセット
生成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()
に直接渡すかにかかわらず、一貫した構造に従います。
コアフィールド
次のフィールドは、評価データセットの抽象化と、データを直接渡す場合の両方で使用されます。
列 | データ型 | 説明 | 必須 |
---|---|---|---|
|
| アプリの入力 (ユーザーの質問、コンテキストなど) は、JSON 形式で選択可能な | Yes |
|
| グラウンド トゥルース ラベルは、JSON シリアル化可能な | オプション |
expectations
予約済みキー
expectations
には、事前構築済みの LLM スコアラーによって使用されるいくつかの予約済みキー ( guidelines
、 expected_facts
、および expected_response
があります。
フィールド | 使用者 | 説明 |
---|---|---|
|
| 表示すべき事実のリスト |
|
| 正確または類似の期待出力 |
|
| 従うべき自然言語のルール |
|
| 取得する必要があるドキュメント |
追加フィールド
次のフィールドは、評価 データセットの抽象化レイヤーによってリネージとバージョン履歴を追跡するために使用されます。
列 | データ型 | 説明 | 必須 |
---|---|---|---|
| string | レコードの一意の識別子。 | 指定しない場合は自動的に設定されます。 |
| timestamp | レコードが作成された時刻。 | 挿入時や更新時に自動的に設定されます。 |
| string | レコードを作成したユーザー。 | 挿入時や更新時に自動的に設定されます。 |
| timestamp | レコードが最後に更新された時刻。 | 挿入時や更新時に自動的に設定されます。 |
| string | レコードを最後に更新したユーザー。 | 挿入時や更新時に自動的に設定されます。 |
| struct | データセットレコードのソース(以下を参照)。 | オプション |
| dict[str, Any] | データセット レコードのキーと値のタグ。 | オプション |
ソースフィールド
source
フィールドは、データセット レコードの取得元を追跡します。各レコードは、次の 1 つの ソースタイプのみを持つことができます。
1. 人間のソース - 人によって手動で作成されたレコード
{
"source": {
"human": {
"user_name": "jane.doe@company.com"
}
}
}
user_name
(str):レコードを作成したユーザー
2. ドキュメントソース - ドキュメントから合成されたレコード
{
"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 ソース - 本番運用トレースから作成されたレコード
{
"source": {
"trace": {
"trace_id": "tr-abc123def456"
}
}
}
trace_id
(str): ソーストレースの一意の識別子
MLflow 評価データセット UI
MLflow 評価データセット SDK リファレンス
評価データセット SDK は、GenAI アプリ評価用のデータセットを作成、管理、使用するためのプログラムによるアクセスを提供します。詳細については、API リファレンスmlflow.genai.datasets
を参照してください。最も頻繁に使用されるメソッドとクラスは次のとおりです。
mlflow.genai.datasets.create_dataset
mlflow.genai.datasets.get_dataset
mlflow.genai.datasets.delete_dataset
EvaluationDataset
。このクラスは、評価データセットを操作および変更するためのメソッドを提供します。
一般的なパターン
本番運用 トレース からデータセットを作成
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)
既存のデータセットを更新する
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 の担当者にお問い合わせください。