Skip to main content

Dynamic Evaluation Set Generation with Large Language Models

Project description

YourBench Logo

YourBench: A Dynamic Benchmark Generation Framework

[GitHub] · [Dataset] · [Documentation] · [Paper]

GitHub Repo stars

YourBench Demo Video
Watch Demo on YouTube
Watch our 3-minute demo of the YourBench pipeline


YourBench is an open-source framework for generating domain-specific benchmarks in a zero-shot manner. It aims to keep your large language models on their toes—even as new data sources, domains, and knowledge demands evolve.

Highlights:

  • Dynamic Benchmark Generation: Produce diverse, up-to-date questions from real-world source documents (PDF, Word, HTML, even multimedia).
  • Scalable & Structured: Seamlessly handles ingestion, summarization, and multi-hop chunking for large or specialized datasets.
  • Zero-Shot Focus: Emulates real-world usage scenarios by creating fresh tasks that guard against memorized knowledge.
  • Extensible: Out-of-the-box pipeline stages (ingestion, summarization, question generation), plus an easy plugin mechanism to accommodate custom models or domain constraints.

Quick Start (Alpha)

# 1. Clone the repo
git clone https://github.com/huggingface/yourbench.git
cd yourbench

# Use uv to install the dependencies
# pip install uv # if you do not have uv already
uv venv
source .venv/bin/activate
uv sync
uv pip install -e .

# 3. Get a key from https://openrouter.ai/ and add it to the .env file (or make your own config with a different model!)
touch .env
echo "HF_TOKEN=<your_huggingface_token>" >> .env
echo "HF_ORGANIZATION=<your_HF_username_or_organization>" >> .env

# 4. Run the pipeline with an example config
yourbench run --config example/configs/example.yaml

Note: The above instructions are a work-in-progress, and more comprehensive usage info will be provided soon.

Process Flow

Process Flow

Key Features

  • Automated Benchmark Generation
    Generate question-answer pairs that test LLMs on specific domains or knowledge slices, derived directly from your raw documents.

  • Flexible Pipeline
    Each stage (ingestion, summarization, chunking, multi-/single-hop QG, deduplication) can be enabled or disabled via YAML config. Fine-grained control allows minimal or comprehensive runs.

  • Robust Config System
    A single YAML config controls model roles, data paths, chunking parameters, question generation instructions, deduplication thresholds, etc.

  • Multi-Model Ensemble Support
    Use different LLMs for ingestion, summarization, question generation, or answering. This fosters broader coverage and question style diversity.

  • Deduplication & Quality Filtering
    Automatic grouping of near-duplicate questions to prune and keep a curated set.

  • Extensive Logging & Analysis
    Built-in modules measure dataset coverage, question distribution, difficulty metrics, and more.

  • Public or Private
    Optionally push ingested or generated data to the Hugging Face Hub or keep it local.

  • Extensible
    Each pipeline step is modular. Easily add custom question-generation prompts, chunking logic, or domain-specific expansions.


Core Concepts & Workflow

YourBench follows a multi-stage approach:

  1. Document Ingestion
    Convert PDFs, HTML, Word, or text into a standardized Markdown format.

  2. Summarization
    Generate a concise "global summary" for each document, using a designated summarization LLM.

  3. Chunking
    Split or chunk documents (and optionally combine multiple smaller segments) based on text similarity or length constraints.

  4. Question Generation

    • Single-Shot: Create straightforward, single-chunk questions.
    • Multi-Hop: Combine multiple chunks to produce more complex, integrative questions.
  5. Deduplication
    Remove or group near-duplicate questions across your dataset using embedding-based similarity.

  6. Analysis
    Evaluate question distribution, difficulty, coverage, or run custom analyses.

  7. Export
    The resulting question sets can be stored locally or uploaded as a new dataset on the Hugging Face Hub.


🧰 Development

We use:

  • Ruff for code formatting and linting
  • pytest for testing

🚀 Try YourBench on Hugging Face

To test YourBench on your own documents:

  • Use the Demo Space to generate a dataset and leaderboard in one click – entirely free
  • Use the Advanced Space for full control over the pipeline, with custom configs and your own inference

🤝 Contributing

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Install development dependencies
  4. Make your changes
  5. Run tests and ensure code style compliance
  6. Commit your changes (git commit -m 'Add amazing feature')
  7. Push to the branch (git push origin feature/amazing-feature)
  8. Open a Pull Request

📄 License

This project is licensed under the Apache-2.0 License - see the LICENSE file for details.

🙏 Acknowledgments

Citation

If YourBench is helpful to you, please cite!:

@misc{shashidhar2025yourbencheasycustomevaluation,
      title={YourBench: Easy Custom Evaluation Sets for Everyone}, 
      author={Sumuk Shashidhar and Clémentine Fourrier and Alina Lozovskia and Thomas Wolf and Gokhan Tur and Dilek Hakkani-Tür},
      year={2025},
      eprint={2504.01833},
      archivePrefix={arXiv},
      primaryClass={cs.CL},
      url={https://arxiv.org/abs/2504.01833}, 
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

yourbench-0.3.0.tar.gz (57.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

yourbench-0.3.0-py3-none-any.whl (64.3 kB view details)

Uploaded Python 3

File details

Details for the file yourbench-0.3.0.tar.gz.

File metadata

  • Download URL: yourbench-0.3.0.tar.gz
  • Upload date:
  • Size: 57.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for yourbench-0.3.0.tar.gz
Algorithm Hash digest
SHA256 8b5485c890f33ee1d6f634d44362d5588d62d9ad542a830b7250c359fe5134f6
MD5 8167fd765098c365014f256d4619dd4a
BLAKE2b-256 9c5fb9ec49c747cd0b117a3d5632e0d1b47c2b98c7f44012293d300b61529dd0

See more details on using hashes here.

Provenance

The following attestation bundles were made for yourbench-0.3.0.tar.gz:

Publisher: python-publish.yml on huggingface/yourbench

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file yourbench-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: yourbench-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 64.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for yourbench-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6c8d2083ce47982551b8639a33d651c068c6ff3d76ad06d8b0db392f305d8304
MD5 7736b7544ff7abda4c5ac2aeafa0c464
BLAKE2b-256 8114e65a89adb55afc37f421a2bff96288206da083f7dfafd5053d5fa7dadd37

See more details on using hashes here.

Provenance

The following attestation bundles were made for yourbench-0.3.0-py3-none-any.whl:

Publisher: python-publish.yml on huggingface/yourbench

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page