Sam Austinon October 17, 202612 min read

Preference Datasets Explained: How Pairwise Human Feedback Is Collected

Contents

Every aligned model learned a taste from somebody's clicks — this is where those clicks come from

Every aligned chatbot learned from someone's opinion. Somewhere a person read two answers, picked the one they liked better, and clicked a button. Multiply that click by hundreds of thousands of prompts and you have a preference dataset.

These datasets sit underneath reward models, RLHF and DPO. Their quality decides whether your model learns to be helpful or learns to ramble confidently — the failure mode covered in the reward hacking guide. Yet the way the data gets made is rarely discussed.

This guide covers what preference datasets contain, how teams collect them, which public ones exist, and the quality traps to avoid. Dataset cards and licenses vary, so check them before you use anything.

What a Preference Dataset Contains

A preference dataset records which responses people prefer for a given prompt. The classic record has three parts:

  • Prompt: the user's question or instruction, sometimes with conversation history.
  • Chosen response: the answer the annotator preferred.
  • Rejected response: the answer the annotator liked less.
{
  "prompt": "How do I reset a forgotten router password?",
  "chosen": "Hold the reset button for 10 seconds, then sign in with the default credentials printed on the label.",
  "rejected": "You should contact your internet provider."
}

That triple is the atomic unit of alignment data: one prompt, one preferred answer, one dispreferred answer. Reward models learn to score the chosen response above the rejected one, and direct preference optimization trains on the same pair with no separate reward model, which the DPO guide walks through in detail.

Three Feedback Formats

Datasets differ in how annotators express preference. Surveys group them by granularity:

Format What the annotator does Example datasets What it carries
Pairwise Compares two responses, picks one HH-RLHF, SHP One clean comparison per row
List-wise Ranks several responses for one prompt UltraFeedback, Nectar A ranking you can expand into many pairs
Point-wise Scores each response on its own HelpSteer, HelpSteer2 Attribute-level detail, more scale drift

Pairwise comparison feels natural, and people judge relative quality more consistently than absolute quality. Point-wise scores carry richer information, such as correctness versus verbosity, and they suffer more from scale drift between annotators.

How Collection Works, Step by Step

Most pipelines follow the same seven steps, and the choices inside each one show up in your model's behaviour months later.

Step 1: Gather Prompts

Prompts decide what the model will learn to handle. Teams draw them from several sources:

  • Real user conversations, with personal data removed.
  • Existing instruction datasets, such as Flan, ShareGPT-style chats, or Evol-Instruct.
  • Targeted sets for coding, math, safety, or another focus area.
  • Red-teaming prompts, written to provoke harmful output.

UltraFeedback pulled roughly 64 thousand prompts from sources including UltraChat, ShareGPT, Evol-Instruct, TruthfulQA, FalseQA and FLAN.

Step 2: Generate Candidate Responses

Next, someone or something produces the responses to compare:

  • Several different models answer each prompt, which gives diverse quality levels. UltraFeedback used a pool of open-source and proprietary models.
  • One model samples multiple times at nonzero temperature.
  • Humans write some responses, which costs more and sets a high-quality reference.
  • On-policy sampling, where you generate responses from the very model you plan to train.

Anthropic's HH-RLHF used responses from a 52-billion-parameter model, and later rounds used models improved by earlier preference data, including an iterated online dataset refreshed weekly over five weeks.

Step 3: Build the Annotation Interface

The interface shapes the data. Good ones:

  • Randomize which response appears on the left or right, to cancel position bias.
  • Hide model identities, so annotators judge content, not brand.
  • Show full conversation context for multi-turn tasks.
  • Offer a tie or "can't tell" option, so annotators do not invent preferences.
  • Capture reasons or attributes, such as tags for factual errors, when the budget allows.

Step 4: Write Clear Guidelines

Annotators need rules for what "better" means: more helpful, more accurate, safer, or better formatted. Guidelines must also say what to do when goals conflict, such as a helpful answer that includes harmful instructions. Vague guidelines produce inconsistent labels, and inconsistent labels produce confused models.

Step 5: Annotate With Quality Controls

Serious projects build checks into the process:

  • Gold items with known answers, to test annotator attention.
  • Overlap, meaning several annotators label the same items so you can measure agreement.
  • Training and qualification tests before annotators touch real data.
  • Ongoing feedback and spot checks.

Agreement matters more than people expect. Even trained labelers often disagree on a substantial share of pairs, so treat perfect agreement as unrealistic.

Step 6: Aggregate and Binarize

Convert raw annotations into training records. For ranked or scored data, a common move picks the best and worst responses as chosen and rejected. Researchers also recommend dropping pairs with small score margins, because near-ties carry mostly noise.

def make_pairs(prompt, responses, scores, min_margin=1.0):
    ranked = sorted(zip(responses, scores), key=lambda x: x[1], reverse=True)
    best, worst = ranked[0], ranked[-1]
    if best[1] - worst[1] < min_margin:
        return []  # skip near-ties; they are mostly noise
    return [{"prompt": prompt, "chosen": best[0], "rejected": worst[0]}]

Step 7: Clean and Validate

Before release or training, run checks:

def validate(ex):
    assert ex["prompt"].strip() and ex["chosen"].strip() and ex["rejected"].strip()
    assert ex["chosen"] != ex["rejected"]

Also remove duplicates and near-duplicates, filter broken or truncated responses, check for overlap with your evaluation sets, and strip personal information.

Preference Datasets Explained: How Pairwise Human Feedback Is Collected

Figure 1: Preference Datasets Explained: How Pairwise Human Feedback Is Collected — the interface, the guidelines and the quality checks decide what each pair records

Five Ways to Source Preference Labels

Dedicated Human Annotators

Trained contractors or crowd workers compare responses under written guidelines. This approach gives the most control and the highest cost. In Anthropic's HH-RLHF collection, crowd workers held conversations with a model and chose the better of two replies at each turn.

Mined Community Signals

Some datasets mine existing human behaviour. The Stanford Human Preferences dataset (SHP) uses Reddit: when two answers to the same question draw different upvotes, the more upvoted one becomes the preferred response. It spans 18 subject areas and holds about 385 thousand preference pairs. It costs little, and it carries the biases of Reddit, including timing effects and community norms.

Live Platform Votes

Arena-style sites collect votes from users who compare anonymous model answers. Chatbot Arena released a cleaned set of about 33 thousand conversations with pairwise human votes. These datasets reflect what real users prefer, with a user population that skews technical.

AI Feedback

A strong model can label preferences at low cost. UltraFeedback generated four responses per prompt from different models, then used GPT-4 to rate them, which yielded roughly 340 thousand comparison pairs after binarization. Nectar follows a similar approach with GPT-4 rankings. AI labels scale cheaply and inherit the biases of the judge, such as favouring longer or more polished answers — the same dynamics behind RLAIF and Constitutional AI.

Implicit Product Feedback

Teams with live products also mine behaviour: thumbs up or down, regenerate clicks, and user edits. An edited response beats the original draft, which creates a natural pair. These signals come cheap and noisy, and they work best as supplements rather than as the whole dataset.

Notable Public Datasets at a Glance

  • HH-RLHF (Anthropic): about 169 thousand comparisons covering helpfulness and harmlessness, including red-teaming data.
  • SHP (Stanford): about 385 thousand Reddit-derived pairs across 18 communities.
  • UltraFeedback (Tsinghua and collaborators): about 64 thousand prompts with four responses each, rated by GPT-4.
  • Nectar: about 183 thousand list-wise GPT-4 rankings.
  • HelpSteer and HelpSteer2 (NVIDIA): point-wise human ratings on attributes like helpfulness and correctness.
  • Chatbot Arena Conversations: about 33 thousand human-voted comparisons.
  • WebGPT comparisons: about 20 thousand comparisons from the WebGPT project.
  • OpenAssistant (oasst1): community-written conversation trees with rankings.

Check each dataset's licence and terms of use, since they vary and some responses come from models whose outputs carry usage restrictions.

Quality Beats Quantity

A Stanford study on preference data found that 10 thousand examples from UltraFeedback outperformed about 140 thousand examples from HH-RLHF on a reward-model chat benchmark. Composition mattered more than raw scale.

That finding should change how teams budget. Spend money on cleaner guidelines, better prompts and smarter filtering before you buy ten times more labels.

Quality Problems to Watch

  • Annotator disagreement: preferences vary, especially on style and borderline safety cases.
  • Length bias: annotators, human and AI, often prefer longer answers, and models learn to pad.
  • Position bias: the first response often wins when the interface does not randomize order.
  • Weak contrast: if chosen and rejected responses differ only slightly, the pair teaches little.
  • Prompt gaps: narrow prompt coverage creates models that handle only narrow tasks.
  • Judge bias in AI-labelled data: self-preference and verbosity bias carry over.
  • Stale on-policy mismatch: responses from an old model may not match what your current model generates.
  • Contamination: prompts that overlap with benchmarks inflate evaluation results.
  • Annotator wellbeing: safety datasets expose labelers to disturbing content, so provide support, rotations and opt-outs.

Off-Policy vs On-Policy Data

Two strategies compete:

  • Off-policy data comes from other models or older checkpoints. It is cheap to reuse and may not match your model's own mistakes.
  • On-policy data comes from the model you are training. It targets the failures your model actually makes, and it requires fresh generation and labelling as the model changes.

Many teams start with public off-policy data, then collect on-policy pairs once the pipeline works — the same iterate-and-refresh loop that reward-model training depends on.

How to Evaluate a Preference Dataset

Do not trust a dataset because it is popular. Test it:

  1. Measure agreement on an overlapping sample, using Cohen's kappa or percent agreement.
  2. Read 100 pairs by hand, and note how often you disagree with the label.
  3. Train a small reward model and check accuracy on held-out pairs you trust.
  4. Run ablations: train on subsets, filtered versions and mixtures, then compare downstream results.
  5. Check length statistics: if chosen responses run much longer than rejected ones, expect length bias.
  6. Scan for duplicates and benchmark overlap.

Hand review catches problems that metrics miss, and it takes an afternoon.

Build Your Own: A Practical Plan

A small, focused dataset often beats a big generic one:

  1. Define the behaviour you want to improve, such as tone, accuracy in your domain, or refusal behaviour.
  2. Collect 500 to 1,000 realistic prompts from your product.
  3. Generate two to four responses per prompt, ideally from your own model at moderate temperature, plus a stronger model for contrast.
  4. Write guidelines with examples, and pilot them on 50 items.
  5. Label with two or more annotators on an overlapping subset, and measure agreement.
  6. Filter near-ties and low-agreement items.
  7. Train and test: check a reward model or DPO run on held-out prompts, and read the samples.
  8. Iterate: add pairs where the model still fails.

Common Mistakes I See Teams Make

  • Collecting before writing guidelines. You pay for noise.
  • Skipping randomization. Position bias sneaks in.
  • Keeping near-ties. They add noise, not signal.
  • Chasing size. Composition and cleanliness matter more.
  • Ignoring licences. Some datasets restrict commercial use.
  • Never reading the data. Hand review catches what metrics miss.

Your Quick-Start Checklist

  1. Decide the format: pairwise, list-wise, or point-wise.
  2. Gather diverse, realistic prompts.
  3. Generate candidate responses with enough quality contrast.
  4. Write guidelines and pilot them.
  5. Randomize order, hide model identities, and add gold items.
  6. Measure agreement, and filter near-ties.
  7. Validate, deduplicate, and check licences and privacy.
  8. Test the dataset with a small reward model or DPO run before you scale.

Best Book to Read

CoverBookDescriptionGet it
Cover of “Human-in-the-Loop Machine Learning” Human-in-the-Loop Machine Learningby Robert Monarch annotation interfaces, guidelines and quality control, which is most of this article in book form. View on Amazon
Cover of “Designing Machine Learning Systems” Designing Machine Learning Systemsby Chip Huyen label cost, data quality, and the trade-offs behind buying richer supervision. View on Amazon
Cover of “Reinforcement Learning: An Introduction” Reinforcement Learning: An Introductionby Sutton & Barto reward signals and why the shape of the data changes what a policy learns. View on Amazon
Cover of “AI Engineering” AI Engineeringby Chip Huyen evaluation design for systems where answer quality is the product. View on Amazon

As an Amazon Associate I earn from qualifying purchases. Links on this page are affiliate links, and I may earn a commission at no extra cost to you.

Unlock AI That Actually Works

Get lifetime access to GPT-6 Astra, Claude Fable 5.1, Gemini 3.5, Grok 4.5, and more — all in one platform. Build websites, apps, videos, content, and digital products from a single command. No monthly fees. No tool-hopping.

Click here to get GPTAstra Max now — one-time payment, lifetime access.

Frequently Asked Questions

What is a preference dataset?

A preference dataset records which response people prefer for a given prompt. The classic record has three parts: the prompt, the chosen response that the annotator preferred, and the rejected response they liked less. Pairwise datasets store exactly one comparison per row. List-wise datasets store a ranking of several responses, which you can expand into several pairs. Point-wise datasets store a score per response, often on multiple attributes such as helpfulness and correctness. That triple of prompt, chosen and rejected is the atomic unit of alignment data: reward models learn to score chosen above rejected, and direct preference optimization trains on the same pair without a separate reward model.

What is the difference between pairwise, list-wise and point-wise preference data?

Pairwise data asks an annotator to compare two responses and pick one, which is what HH-RLHF and SHP do. List-wise data asks for a ranking of several responses for the same prompt, as UltraFeedback and Nectar do, and each ranking converts into many pairs. Point-wise data asks for a score per response, sometimes across several attributes, which is what NVIDIA's HelpSteer datasets use. Pairwise comparison feels natural and people judge relative quality more consistently than absolute quality. Point-wise scores carry richer information, for example separating correctness from verbosity, but they suffer more from scale drift: two annotators can use the same scale differently, while a relative pick is self-normalizing.

Which public preference datasets should I start with?

HH-RLHF from Anthropic holds about 169 thousand comparisons covering helpfulness and harmlessness, including red-teaming data. SHP from Stanford holds about 385 thousand Reddit-derived pairs across 18 communities. UltraFeedback holds about 64 thousand prompts with four responses each, rated by GPT-4, which binarizes to roughly 340 thousand comparison pairs. Nectar adds about 183 thousand list-wise GPT-4 rankings, HelpSteer and HelpSteer2 provide point-wise human ratings, Chatbot Arena Conversations offers about 33 thousand human-voted comparisons, WebGPT contributes about 20 thousand comparisons, and OpenAssistant oasst1 provides community-written conversation trees with rankings. Start with one, measure agreement and length statistics, and only then mix in others, because licences and model-output restrictions differ between them.

How many preference pairs do I need to train a reward model?

Fewer clean pairs than most teams assume, and the evidence comes from a comparison rather than a rule of thumb: a Stanford study on preference data found that 10 thousand examples from UltraFeedback outperformed about 140 thousand examples from HH-RLHF on a reward-model chat benchmark, so composition and cleanliness mattered more than raw scale. For a focused domain dataset, 500 to 1,000 realistic prompts with two annotators and filtering for near-ties is a workable starting point. Measure before scaling: train a small reward model on held-out pairs you trust, and add pairs only where the model still fails.

How do I reduce length bias in preference data?

Length bias is the tendency of annotators, human and AI, to prefer longer answers, which teaches a model to pad. Check it directly by comparing the length distribution of chosen against rejected responses in your dataset; a large gap means the model may be learning verbosity instead of quality. Then counter it in collection and aggregation: write guidelines that say brevity wins when two answers are equally correct, randomize the order of responses so position does not act as a cue, drop pairs whose chosen and rejected responses differ only trivially, and when you use model judges, check whether the judge rewards polished padding. Re-measure the length gap after every filtering pass rather than trusting a single check.

Wrapping Up

A preference dataset turns human judgment into training data: prompts, candidate responses, and a record of which response people preferred. How you collect it, from guidelines to interface to aggregation, shapes what your model learns to value.

Start small, write clear guidelines, measure agreement, and test the data before you scale. Ten thousand clean pairs can teach a model more than a hundred thousand sloppy ones.

What are You Looking For?

esc