Pular para o conteúdo principal

Conjunto de dados de avaliação

Dados de teste selecionados para avaliação sistemática do aplicativo GenAI. Inclui entradas, informações básicas opcionais (expectativas) e metadados.

Duas maneiras de fornecer dados de avaliação

O senhor pode fornecer dados de avaliação para o chicote de avaliação do MLflow de duas maneiras:

1. MLflow Conjunto de dados de avaliação (recomendado)

Conjunto de dados criado para fins específicos armazenado em Unity Catalog com:

  • Controle de versão : Acompanhe as alterações do site dataset ao longo do tempo
  • Linhagem : Vincule os registros do dataset às suas entradas (rastreamentos de origem) e acompanhe seu uso (execução de avaliação e versões de aplicativos)
  • Colaboração : Compartilhe o conjunto de dados entre as equipes
  • Integração : Fluxo de trabalho contínuo com MLflow UI e APIs
  • Governança : Segurança do Unity Catalog e controles de acesso
  • Conversão de traços : Converta facilmente os traços de produção em registros de avaliação dataset usando a interface do usuário ou SDK
  • Visualização : Inspecione e edite o conteúdo do site dataset diretamente na UI do site MLflow

Quando usar : Fluxo de trabalho de avaliação da produção, testes de regressão e quando o senhor precisar de recursos de gerenciamento do dataset.

2. Conjunto de dados arbitrário (prototipagem rápida)

Use estruturas de dados existentes, como:

  • Lista de dicionários
  • Pandas DataFrame
  • DataFrame do Spark

Quando usar : experimentos rápidos, prototipagem ou quando você já tem dados de avaliação nesses formatos.

Esquema do conjunto de dados de avaliação

O conjunto de dados de avaliação segue uma estrutura consistente, independentemente de você utilizar a abstração do conjunto de dados de avaliação do MLflow ou passar os dados diretamente para o mlflow.genai.evaluate().

Campos principais

Os campos a seguir são usados na abstração do conjunto de dados de avaliação ou se o senhor passar os dados diretamente.

Coluna

Tipo de dados

Descrição

Obrigatório

inputs

dict[Any, Any]

Entradas para o seu aplicativo (por exemplo, pergunta do usuário, contexto), armazenadas como um JSON-seralizável dict.

Sim

expectations

dict[Str, Any]

O rótulo da verdade fundamental, armazenado como um JSON-seralizable dict.

Opcional

expectations chave reservada

expectations tem várias chaves reservadas que são usadas pelos avaliadores LLM pré-construídos: guidelines, expected_facts e expected_response.

campo

Usado por

Descrição

expected_facts

correctness juiz

Lista de fatos que devem aparecer

expected_response

is_correct marcador

Saída esperada exata ou similar

guidelines

meets_guidelines marcador

Regras de linguagem natural a serem seguidas

expected_retrieved_context

document_recall marcador

Documentos que devem ser recuperados

Campos adicionais

Os campos a seguir são usados pela abstração do conjunto de dados de avaliação para rastrear a linhagem e o histórico de versões.

Coluna

Tipo de dados

Descrição

Obrigatório

dataset_record_id

string

O identificador exclusivo do registro.

Definido automaticamente se não for fornecido.

create_time

carimbo de data/hora

A hora em que o registro foi criado.

Definido automaticamente ao inserir ou atualizar.

created_by

string

O usuário que criou o registro.

Definido automaticamente ao inserir ou atualizar.

last_update_time

carimbo de data/hora

A hora em que o registro foi atualizado pela última vez.

Definido automaticamente ao inserir ou atualizar.

last_updated_by

string

O usuário que atualizou o registro pela última vez.

Definido automaticamente ao inserir ou atualizar.

source

struct

A fonte do registro dataset (consulte abaixo).

Opcional

tags

dict [str, Qualquer]

tags de valor-chave para o registro dataset.

Opcional

Campo de origem

O campo source rastreia de onde veio um registro dataset. Cada registro pode ter somente um tipo de fonte:

1. Fonte humana - Registro criado manualmente por uma pessoa

Python
{
"source": {
"human": {
"user_name": "jane.doe@company.com"
}
}
}
  • user_name (str): O usuário que criou o registro

2. Fonte do documento - Registro sintetizado a partir de um documento

Python
{
"source": {
"document": {
"doc_uri": "s3://bucket/docs/product-manual.pdf",
"content": "The first 500 chars of the document..." # Optional
}
}
}
  • doc_uri (str): URI/caminho para o documento de origem
  • content (str, opcional): trecho ou conteúdo completo do documento

3. Fonte de rastreamento - Registro criado a partir de um rastreamento de produção

Python
{
"source": {
"trace": {
"trace_id": "tr-abc123def456"
}
}
}
  • trace_id (str): O identificador exclusivo do rastreamento de origem

MLflow Conjunto de dados de avaliação UI

eval dataset ui

MLflow Conjunto de dados de avaliação reference SDK

O SDK do conjunto de dados de avaliação fornece acesso programático para criar, gerenciar e usar conjuntos de dados para avaliação do aplicativo GenAI. Para obter detalhes, consulte a referência da API: mlflow.genai.datasets. Alguns dos métodos e classes mais frequentemente utilizados são os seguintes:

Padrões comuns

Criar conjunto de dados a partir de traços de produção

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)

Atualizar o conjunto de dados existente

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)

Limitação

A chave de gerenciamento do cliente (CMK) não é compatível.

Próximas etapas

Guia de instruções

Conceitos