评估数据集

用于系统化 GenAI 应用评估的特选测试数据。 包括输入、可选的基线真值(预期)和元数据。

提供评估数据的两种方法

可以通过两种方式向 MLflow 评估工具提供评估数据:

存储在 Unity 目录中的专用数据集,其中包含:

  • 版本控制:跟踪随时间推移的数据集更改
  • 谱系:将数据集记录链接到其输入(源跟踪)并跟踪其使用情况(评估任务和应用版本)
  • 协作:跨团队共享数据集
  • 集成:通过 MLflow UI 和 API 实现无缝工作流
  • 治理:Unity 目录安全性和访问控制
  • 跟踪转换:使用 UI 或 SDK 轻松将生产跟踪转换为评估数据集记录
  • 可视化效果:直接在 MLflow UI 中检查和编辑数据集内容

何时使用:生产评估工作流、回归测试,以及何时需要数据集管理功能。

2. 任意数据集 (快速原型制作)

使用现有的数据结构,例如:

  • 字典列表
  • Pandas 数据帧
  • Spark 数据帧

何时使用:快速试验、原型制作或已有这些格式的评估数据时。

评估数据集架构

无论是使用 MLflow 的评估数据集抽象还是将数据直接 mlflow.genai.evaluate()传递给,评估数据集都遵循一致的结构。

核心字段

评估数据集抽象或直接传递数据时使用以下字段。

数据类型 Description 必选
inputs dict[Any, Any] 应用的输入(例如用户问题、上下文),存储为 JSON 可序列化的dict 是的
expectations dict[Str, Any] 真实数据标签,存储为 JSON 可序列化的 dict 可选

expectations 保留密钥

expectations 具有由预生成 LLM 记分器使用的多个保留密钥: guidelinesexpected_facts以及 expected_response

领域 使用者 Description
expected_facts correctness 法官 应显示的事实列表
expected_response is_correct 得分手 确切或类似的预期输出
guidelines meets_guidelines 得分手 要遵循的自然语言规则
expected_retrieved_context document_recall 得分手 应检索的文档

其他字段

评估数据集抽象使用以下字段来跟踪世系和版本历史记录。

数据类型 Description 必选
dataset_record_id 字符串 记录的唯一标识符。 如果未提供,则自动设置。
create_time 时间戳 创建记录的时间。 插入或更新时自动设置。
created_by 字符串 创建记录的用户。 插入或更新时自动设置。
last_update_time 时间戳 上次更新记录的时间。 插入或更新时自动设置。
last_updated_by 字符串 上次更新记录的用户。 插入或更新时自动设置。
source 结构 数据集记录的源(请参阅下文)。 可选
tags dict[str, Any] 数据集记录的键值标记。 可选

源字段

字段 source 跟踪数据集记录来自何处。 每个记录只能有 一个 源类型:

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. 跟踪源 - 从生产跟踪创建的记录

{
    "source": {
        "trace": {
            "trace_id": "tr-abc123def456"
        }
    }
}
  • trace_id (str):源跟踪的唯一标识符

MLflow 评估数据集用户界面

eval 数据集 ui

MLflow 评估数据集 SDK 参考

评估数据集 SDK 提供编程访问,用于创建、管理和使用用于 GenAI 应用评估的数据集。 有关详细信息,请参阅 API 参考: mlflow.genai.datasets 下面是一些最常用的方法和类:

常见模式

从生产跟踪创建数据集

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)

局限性

如果需要为用例放宽上述任何限制,请联系 Databricks 代表。

后续步骤

操作指南

概念