Skip to main content
In Arize AX, a dataset is the fixed set of examples you rerun in experiments to compare changes to your app over time. It gives you a stable benchmark, so you can tell whether a prompt, model, or pipeline update actually improved results or introduced regressions.
Datasets page in Arize AX showing a list of datasets with names, row counts, created by, and timestamps

Datasets page in Arize AX

Experiment planning

An experiment runs a fixed dataset through one version of your app and scores the results. The experiment type determines what the dataset must contain, so choose it before you build rows. From any dataset, New Experiment offers four paths:

Experiment dataset requirements

Each experiment type reads dataset rows differently, which changes how you name columns.
  • Column names are part of the contract. Placeholders and prompt variables resolve by exact column name, so renaming a column breaks every run that references it. Keep names stable across dataset versions. Names you choose read best as variables, such as question or expected_category. Trace-sourced columns keep their OpenInference names and work as placeholders unchanged, so attributes.input.value becomes {{dataset.attributes.input.value}}.
  • A dataset built for one experiment type usually works for another. The same rows that fill a prompt variable can fill a field in an agent request body. A regression set collected while testing prompts stays useful once that logic moves into a deployed agent.

Choose the variable

Build the dataset around a real failure rather than a hunch. The failing rows become both the variable you test and the benchmark that proves the fix. If you do not have traces in Arize AX yet, set up tracing first so you have real failures to work from.
  1. Open a bad outcome in Traces: a thumbs-down, a low eval score, an exception, or anything a reviewer flagged.
  2. Step through the trace span by span. Was the prompt ambiguous? Did the model ignore an instruction? Did the retriever return the wrong chunk? Did a tool call fail to parse?
  3. Identify the step that most directly caused the bad outcome. That step is your experimental variable, and the spans around it are the rows worth collecting.
Test one variable at a time. If you change the prompt, the model, and the retriever together, a score change tells you nothing about which of the three caused it. Split them into separate experiments against the same dataset and evaluators. Common variables to test:
  • Prompt: wording, few-shot examples, output schema, or tool definitions.
  • Model: the same prompt against a different LLM.
  • Invocation parameters: temperature, top-p, max tokens.
  • Pipeline or agent behavior: retrieval strategy, routing, tool-using loops, or any logic that lives outside a single prompt.

Plan a baseline

Your first run against a new dataset is the unchanged setup: the prompt, model, and parameters you use today. Name that run baseline-original-prompt. Name each variant after the variable under test, such as variant-concise-prompt or variant-gpt-5.5, so the comparison view stays readable once you have a dozen runs on the same dataset. If your task predicts labels, decide now which column holds ground truth, which holds the prediction, and which label counts as the positive class. You need all three for the classification metrics setup.

Dataset design

Two things determine whether a dataset is useful: which rows it holds, and how those rows are shaped. The experiment type constrains both.

What to include

A useful dataset blends typical examples that represent everyday traffic, edge cases the app has struggled with (ambiguous inputs, long contexts, unusual formats), and known failures pulled from traces, evaluator results, or reviewer feedback. Without typical examples, you optimize for edge cases and regress on the common path; without failures, you can’t prove a fix actually holds.

Dataset types

You’ll also see datasets described by their source or purpose. These labels overlap and shift as a dataset matures:
  • Regression: Examples where the app has already failed. Use these to verify a fix holds and doesn’t quietly reintroduce the bug.
  • Golden: Inputs with hand-labeled expected outputs, a stable benchmark for comparing prompt and model changes.
  • Synthetic: Generated examples that mimic real inputs. Useful when production data is thin, sensitive, or missing the edge cases you want to stress-test.
A regression set becomes part of a golden dataset once you label the expected output for each row. Collect failures first, label them as you go, and fold in typical traffic so the benchmark isn’t just past bugs.

Dataset row schema

Each row can include input messages, expected outputs, metadata, or any other columns your task function needs. Trace-sourced rows follow the OpenInference convention (e.g., attributes.input.value). CSVs and inline examples use your own column names. Keep them consistent across sources.

Common dataset row shapes

The labels above describe why a row belongs in the dataset. The row itself should match what your task function reads. Common patterns include: Key-value rows. Use this when the task needs multiple fields such as an input, retrieved context, and an expected output. Prompt-completion pairs. Use this for the simplest single-turn completion or classification cases. Messages or chat rows. Use this when your task expects multi-message inputs or outputs.
Choose the shape that matches your task function and keep it consistent within a dataset version.

Create a dataset

Pick the tool you work in. Each tab covers the trace-based, file-upload, and synthetic paths where they apply.
The Arize skills plugin wires dataset and trace workflows into your coding agent through the ax CLI.From traces. Combine arize-trace with arize-dataset. Try:
  • “Export error spans from the last 7 days in my production-chatbot project and create a dataset called error-regression-v1.”
  • “Find spans where annotation.hallucination.label = 'yes' over the past 14 days and save them as hallucination-examples.”
From a local file. Point the arize-dataset skill at a CSV, JSON, JSONL, or Parquet file you already have. Try:
  • “Create a dataset called billing-qa-v1 from ./data/billing_qa.csv in my support space.”
  • “Append the rows in new_edge_cases.jsonl to my existing edge-cases dataset.”
Generate synthetic rows. Have the agent draft examples for you. Try:
  • “Generate 50 synthetic billing support tickets with query and expected_category fields, then save as support-synthetic-v1.”
  • “Draft 20 adversarial inputs targeting prompt injection for my chat agent and save as adversarial-v1.”
Coding agent running Arize skills via the ax CLI to create datasets from traces and generated examples

Running Arize skills from your coding agent.

Manage your dataset

Add, edit, export, or delete rows as the app evolves. Datasets are versioned, and appends land in the latest version in place.
Use the arize-dataset skill to append, export, or inspect datasets without leaving your editor. Try asking your agent:
  • “Append the rows in new_examples.csv to my support-regression dataset.”
  • “Export the latest version of my support-tickets dataset so I can review it offline.”
  • “Show me the schema and the first five rows of my support-qa-v1 dataset.”
Coding agent running the arize-dataset skill via the ax CLI to append new examples to an existing dataset without leaving the editor

Append new examples to an existing dataset from your coding agent with the arize-dataset skill

Auto-add rows from evaluator labels

Once the dataset exists, set up rules that automatically add spans when they match your criteria. Auto-add rules keep the dataset current with what’s actually happening in production, without manual curation. After you’ve set up an evaluator on a project, add a post-processing step that routes spans to a dataset based on the evaluator’s result. See Create evaluators for evaluator setup, then edit the evaluator configuration for your task.
Task configuration page in Arize AX showing the evaluator selection dropdown

Select the evaluator from the task configuration

Select Auto Add Spans to Dataset, then specify which eval labels should trigger the addition. For example, all spans where Correctness is Incorrect, or any span where the eval label is not null.
Evaluator configuration panel in Arize AX with the 'Auto Add Spans to Dataset' option selected and filter criteria entered

Configure auto-add rules from evaluator results

Run your first experiment

Measure whether a prompt, model, agent, or pipeline change actually improves your app.

Remote agent experiments

Run the dataset against a deployed agent over HTTP and collect every response.

Code experiments

Run the task in your own runtime, then log and compare results in Arize AX.

Prompt playground

Build a prompt, run it across the dataset, and compare variants without leaving the UI.

Further reading