Evaluation and Quality Engineering

Evaluation and Quality Engineering

Evaluation Dataset Versioning — Stack

Evaluation dataset versioning › Stack

65 of 73 in this book · 3 min read

Technology landscape as of 2026-10-10. Knowledge cutoff May 2026.

Selection criteria

What is being chosen is an identity scheme and a store that honours it. The decisive properties are immutability and whether the identifier can be attached to a result cheaply enough that people actually do it.

  • Immutability of a referenced state. Whether a version, once cited by a result, can be altered — and whether the system prevents it or merely discourages it.
  • Content addressing. Whether the identifier is derived from the items themselves, so that it cannot be applied to the wrong state by mistake.
  • Diff readability. Whether the difference between two versions is presentable as added, removed and changed items rather than as a binary difference.
  • Storage efficiency at scale. Whether versions share unchanged content or each one is a full copy, which decides whether frequent versioning is affordable.
  • Reference resolution. Whether items that point at external documents can pin the content rather than the location.
  • Result-side integration. How easily the version identifier is captured onto every stored score, and whether it can be made mandatory.
  • Retrieval of an old state. How long it takes to reconstruct and run against a version from two years ago, and whether that is tested.
  • Deletion handling. Whether content can be removed from historical versions to satisfy a deletion request without destroying the version's identity semantics.

Options

Option Best for Watch out for
The application repository's own version control Small to medium collections kept as text files, where review and history come free Large files and binary attachments age the repository badly; a version identifier is a commit, which says nothing about whether the data changed
Data versioning layers over object storage (DVC, LakeFS, Git LFS and comparable) Collections too large for a code repository, with content-addressed storage and branch semantics Another system to operate and to learn; the pointer in the repository and the data in the store can be separated by a careless operation
Table formats with time travel (Delta Lake, Apache Iceberg, Apache Hudi) Large collections queried as tables, where a version is a snapshot identifier and diffing is a query Retention policies expire old snapshots, silently ending reproducibility; deletion for compliance interacts awkwardly with immutable history
Dataset versioning inside evaluation platforms (LangSmith, Langfuse, Braintrust and similar) Keeping the version attached to runs automatically, with no integration work Semantics are the vendor's; export of an old version, and its fidelity, is worth testing before relying on it
Dataset hubs with revision identifiers (Hugging Face Hub datasets and comparable) Sharing versioned collections across teams and repositories Public-by-default patterns are a hazard for production-derived content; revision pinning must be used deliberately
A relational store with append-only item revisions and named releases Organisations needing versioning to coexist with existing access control, audit and deletion machinery Entirely bespoke; the diff, the reconstruction path and the retention story are all yours to build and to test
Content digests computed over the materialised item set at run time Any arrangement, as a cheap guarantee that two runs saw identical data Detects divergence without explaining it; needs a canonical serialisation, or the digest changes when nothing did