Beta by Cross Data

Ground truth for evaluating a retrieval system

Abstract. You can't measure your RAG without knowing which chunks are the right ones. And every standard metric - recall@k, nDCG@10, MRR - assumes a prerequisite: a set of relevance judgments (qrels) over the evaluated corpus. On a private corpus, that set almost never exists. Building it by hand takes a domain expert a few days for a hundred questions - and the real blocker, in practice, isn't even the cost; it's finding the person, because annotation comes after their day-to-day work and the weeks go by with nothing to show.

We build this reference set from your two files, questions.csv and chunks.csv, with a measure of its reliability and an explicit list of the uncertain cases. Its labels reproduce human judgment: on public benchmarks, the ranking derived from them reaches an nDCG@10 of X%, versus X% for the best state-of-the-art retriever, and it orders systems the way human qrels do (details). To see what you'd actually get, a demonstration on a single question, against your full corpus, at no cost and with no commitment.

In short, for your leadership

To know whether an AI assistant finds the right documents, you need a reference set of correct answers. Building it by hand ties up a domain expert for several days - days they almost never have, so the project waits, or moves ahead unmeasured. Goldset delivers this reference set without taking up your experts' time, for €2,500 excl. tax for a hundred questions, with data processed exclusively in the European Union and deleted after delivery.

This reference set lets you measure your system's performance, and so stop depending on any one model provider: if one changes its prices, alters its model or disappears, you can switch and check that your assistant still works just as well.

See the deliverable on your own documents, at no cost and with no commitment.

Send us your corpus - up to 20,000 chunks - and a single question. We run the process and send back the real deliverable, in its final format, on your own documents.

To be clear: one question is not an evaluation set. At that volume, no metric can be computed, and that's not the point. The point is to answer the two questions everyone asks before committing a budget - what exactly will I receive, and are the chunks it picks the right ones for my domain.

Request a free one-question demonstration Give us your feedback

Tell us the approximate size of your corpus. We reply within 24 business hours, with instructions for the submission. You can also write directly to contact@crossdata.tech.

The problem

A team builds retrieval into its product: a corpus, a chunking strategy, an embedding model, sometimes a reranker. And then comes the question of “does it actually work?”. Without qrels, you see three behaviours - and none of them holds up.

  1. Measure nothing. Chunk size, top_k, the embedding model - all tuned by eye. It's like walking through fog without a compass.
  2. Measure end to end. An automated evaluation of the final answer shows a drop. But it can't tell a retrieval step that missed the right chunk from a generation step that misused it. And you end up optimising the wrong layer.
  3. Annotate by hand. Sorting some fifty candidates takes an expert eight to ten minutes. A hundred questions, and that's a few days of their time. The real problem, again, is finding the person: annotation comes after everything else, takes weeks to land, and nobody does it again once the corpus moves. This is the part everyone underestimates.

The reference set also has a property the components it evaluates don't: it stays valid when you change embedding model, chunking, or reranker. It's a durable asset - where the retriever it measures, by contrast, is bound to be replaced.

The deliverable

The deliverable has three parts:

The files

An archive, sent as a download link. No integration, no SDK, no environment to set up - Simple, basic.

qrels.csv - the reference set

One row per (question, evaluated candidate chunk) pair - including the candidates judged not relevant. Their presence proves the candidate pool was actually examined, and they make useful negatives for training a reranker.

Table 1. Columns of qrels.csv.
ColumnTypeDescription
query_idstrIdentifier taken from questions.csv
chunk_idstrIdentifier taken from chunks.csv
rankintChunk's rank for this question, starting at 1
gradeintRelevance grade: 2 highly relevant, 1 relevant, 0 not relevant
scorefloatContinuous relevance score, for fine-grained tie-breaking
confidencefloatReliability index of this chunk's score, in [0,1]

qrels.trec

The same content in the standard query_id 0 chunk_id grade format, directly consumable by ir_measures and pytrec_eval.

uncertain.csv

Questions on which the system failed to converge, or whose best candidate scores low - typically an ambiguous question, or one with no answer in the corpus. We'd rather bound the uncertainty and tell you, than show a uniform confidence that isn't there.1

report.html and metrics.json

A reliability index, overall and per question; the distribution of the number of relevant chunks per question; the estimated coverage of the candidate pool2; and the exact command line to recompute your own metrics. The same values come back in metrics.json, in structured form, so you can track one run against the next.

fulldata.jsonl

The content of qrels.csv, enriched with the text of the questions, the content of the chunks and the reliability index of each score. Everything sits in a single file: it is the one the validation app reads, without needing your original files.

Optional: no questions? We generate them

No set of questions yet? As an option, from the Discovery plan, we generate synthetic questions from your corpus, covering several axes: task type, complexity, phrasing style. The generation method is state of the art, and the questions come with a report that rates the quality of each one: you know which to keep, review or drop.

An interactive app for your experts to evaluate

Included in the Starter plan, at no extra cost. A local web application that presents the reference set to your domain experts so they can validate the judgments, or correct them where needed. Since the processing is reliable, there is normally little to change: the job is to validate, not to redo the annotation.

It ships as a Docker image, to deploy on your own infrastructure and open to the experts of your choice. It is optional: the reference set works without it.

To run it on your fulldata.jsonl file:

docker pull goldset-verification:latest
docker run --rm -p 8080:8080 \
  -v /path/to/fulldata.jsonl:/data/fulldata.jsonl:ro \
  goldset-verification:latest /data/fulldata.jsonl

Optional: fine-tuned models

The reference set isn't only for measuring: it also makes a very good training set. As an option, we fine-tune three models on your corpus: an embedding model, a reranker and a late-interaction model (like ColBERT). We take care of data augmentation, to guarantee performance that generalises beyond the questions in the reference set.

Every delivery comes with a comparison of the performance gain against a standard retriever (hybrid BM25 + embedding), measured on your reference set.

Two delivery modes, either or both:

  • the model weights, which you deploy wherever you want, offline included;
  • the fine-tuned models, hosted, with their API, run by us on sovereign infrastructure in the European Union, with no logging and no retention of requests, with a one-year commitment and one retraining a year included. After 15 months of subscription (the committed year, plus 3 months), the model weights are yours: we hand them over. A no-commitment option, cancellable any month, also exists, without ownership of the weights (see Pricing).

Available from the Starter plan. Retraining available after the corpus changes, included once a year with the hosted API. Prices: see Pricing.

Measured reliability

A ground-truth reference set is only worth something if its reliability is measured. So we separate three claims, each established on its own.

Table 3. Validation levels and results.
ClaimProtocolResult
Labels reproduce human judgment Public benchmarks with human qrels (BEIR, mMARCO fr), with a candidate pool identical to the one used in production Ranking derived from our labels, scored against human qrels: nDCG@10 = X%, versus X% for the best state-of-the-art retriever on the same pool
The property holds on a domain-specific corpus Blind sample, independently annotated by two domain experts Agreement with the expert: X%, with two experts agreeing with each other at X%
The reference set ranks systems correctly Eight retrieval configurations ranked with human qrels, then with ours Kendall's τ = X: the two rankings coincide

The third claim is the most important in practice. What is a reference set actually for? Not to rule on a single document, but to say whether one configuration is better than another. And that's also the level at which this kind of judgment is most reliable. No annotation method - human ones included - guarantees the accuracy of any single label taken on its own.

Data handling

Nothing is kept beyond delivery. Each run executes inside dedicated infrastructure, hosted in the European Union, created for that one job and destroyed as soon as the results are delivered. Corpus, questions, intermediate representations and working files disappear with it. Deliberately, and verifiably.

  • A confidentiality agreement is signed before any transfer, on simple request.
  • Your data is only ever used to produce your deliverable. It is never used to train or fine-tune any model - except, as an option and at your request, the fine-tuned model delivered to you. It is never reused for any other client.
  • The language models used are, without exception, run by us inside the European Union. No third-party model API is involved. This is not an option enabled on request: it is the only configuration in which we operate the service. They run on the infrastructure of one of our providers: Verda (Helsinki, Finland), OVHcloud (Roubaix, France), Scaleway (Paris, France), or Hetzner (Gunzenhausen, Germany). None of your content is ever submitted to a model operated outside the Union, and therefore never to a provider subject to the US CLOUD Act.
  • Running on your own infrastructure is available in the Enterprise plan, including offline (see Pricing).
  • Only the deliverable persists, for the lifetime of the download link (X days), then it's deleted too. So any later re-run starts from a fresh submission - that's the price of keeping nothing.
  • One exception, if you choose the hosted API: we keep the fine-tuned model that serves it, and nothing else. Requests are neither logged nor retained.

Why Goldset?

Comparison with alternatives

You could object that free solutions exist. They do - the real question is what they produce. An open generator prompts a model to write a question from each chunk: the resulting pair is relevant by construction, but it carries only one relevant chunk per question, whereas a real corpus has several that answer it. Recall built on that is distorted: finding the single source chunk gives perfect recall, while any other relevant chunk retrieved counts as a miss.3

Table 4. Three ways to obtain qrels on a private corpus.
Open generatorHuman annotationGoldset
Relevant chunks per question1, by constructionevery one in the poolevery one in the pool
Recall (recall@k)a first, rough estimateyesyes
Fine-grained metrics (nDCG@k)no: a single chunk, binary relevanceyes, if the annotation is gradedyes, relevance graded from 0 to 2
Measured reliabilitynoneinter-annotator agreementreliability index per chunk; local app (Docker image) for your experts to validate the chunks retrieved for each question
Cost for 100 questionsa few days of a data scientist's time, with no question validationa few days of a domain expert's time, subject to availabilityno need to tie up your teams; see Pricing
Reissued as the corpus evolvesin theoryin practice, neveryes; on subscription, 4 runs a year for the price of 3

Market landscape

The previous table contrasted families of methods; this one names actual tools. Most belong to the same family as the “open generator” - a set of questions generated from the corpus, at most one relevant chunk per question - and a few automate relevance evaluation without building that question set themselves. None cover both steps with a measured reliability figure.

Table 5. Landscape of open-source and managed market tools, and what they actually cover.4
ToolKindCoversDoesn't cover
RAGASopen source Generates a question set from a knowledge graph built over the corpus One relevant chunk per question, by construction; published human validation limited to a single study
Giskard / RAGETopen source Generates varied question types, then evaluates with a language model Same recall limitation; no published human correlation
LlamaIndex / DeepEvalopen source Generates question/context pairs directly from the index One relevant chunk per question, by construction
UMBRELAopen source Reference relevance assessor, a published reproduction of an assessor protocol A research building block: no candidate pool, no pipeline, no deliverable
RAGELOopen source Ranks RAG systems against each other by comparing their answers Does not build a corpus's qrels; it compares systems, not documents
ARESopen source (research) Fine-tuned evaluators, with statistical confidence intervals Engineering work to build in-house; not a delivered service
Bedrock / Vectara / Galileo / Patronusmanaged, proprietary Evaluates language-model-generated answers Evaluates an answer, not a retrieval reference set; vendors subject to the US CLOUD Act
Toloka / Scale AImanaged, human annotation Manual annotation at scale Costly and slow on a confidential, specialised corpus; never repeated

Each of these tools covers part of the need; none covers all of it. What makes Goldset different:

  • Each question is evaluated against several candidate chunks from your corpus, not just one. That's what makes the measured recall meaningful.
  • Each chunk gets a relevance grade and a reliability index.
  • The labels reproduce human judgment (nDCG@10 = X% on public benchmarks), without taking up your experts' time.
  • The deliverable is ready to use, with no integration.
  • Processing is hosted in the European Union.

The difference is the combination of all five points - not any one of them alone.

Pricing

* Beta phase: turnaround times are indicative. We come back to you with an adjusted turnaround after the order.

Table 2. Plans. Amounts in euros, excluding tax. Each plan covers a maximum number of questions and chunks: pick the smallest one that covers yours. Standard extends beyond 500 questions (€10 per extra question); beyond 100,000 chunks, on quote. Enterprise answers a different need: running the service on your side, offline, with a service commitment. Rows marked “+” are add-ons, available from the plan above them.
PlanPriceQuestions CorpusIncludesTurnaround*
Discovery900202,000 graded top-10, summary report. The €900 is deducted from the plan you order next within thirty days (Starter: €1,600 instead of €2,500)72 h
+ Question generation10/questionsynthetic questions generated from your corpus with a state-of-the-art method, with a report rating the quality of each question; they count towards the plan's volume
Starter2,50010020,000 graded top-10, full reliability report, uncertain cases flagged, expert validation app (Docker image) 5 days
+ Fine-tuned models5,000embedding, reranker and late-interaction models fine-tuned on your corpus, weights delivered, with a comparison against a hybrid BM25 + embedding retriever (see The deliverable)
+ Hosted fine-tuned models and API300/monthhosted on sovereign infrastructure in the EU, no logging or retention; one-year commitment; one retraining a year included; model weights yours after 15 months (the committed year + 3 months)
+ Hosted models and API, no commitment400/monthsame hosting terms, cancel any month; no retraining included, no ownership of the weights
+ Model retraining5,000after the corpus changes, full training; included once a year with the hosted API
+ Reference set refreshplan priceafter the corpus changes, full run at the plan price; on a yearly subscription, 4 runs (the initial reference set and 3 refreshes) for the price of 3
Standard5,000500100,000 graded top-20, your retriever scored against the reference set5, gap to the state of the art, one-hour debrief10 days
+ Extra questions10/questionbeyond 500, at the Standard rate; corpus beyond 100,000 chunks on quote
+ Additional retriever750scoring one more retriever against the reference set
Enterprisefrom 25,000/yron quoteon quote runs on your own infrastructure, quarterly refresh, contractual service commitmentcontractual

A few purchase scenarios

  • Try before committing. The free demonstration, then Discovery on 20 questions (€900). Convinced, you move to Starter within thirty days: €1,600 more. Total: €2,500 excl. tax for 100 questions - the Starter price, with a trial on top.
    What you gain: you know, before committing a budget, whether the deliverable holds up on your own documents. Then you can measure your assistant and judge every change on numbers.
  • An internal assistant, no questions yet. A corpus of 8,000 chunks, no set of questions: Starter (€2,500) + generation of 100 questions at €10 (€1,000). Total: €3,500 excl. tax.
    What you gain: starting from scratch without taking up your experts' time, and measuring your assistant's quality from day one.
  • Choosing between two architectures. 300 questions taken from your tickets, a 60,000-chunk corpus, your current retriever and one candidate to compare: Standard (€5,000) + one additional retriever (€750). Total: €5,750 excl. tax.
    What you gain: an architecture decision made on numbers measured on your data, not on gut feeling or a public benchmark that looks nothing like your corpus.
  • Improving retrieval without managing infrastructure. Starter (€2,500) + hosted fine-tuned models and API (€300/month). First year: €6,100 excl. tax, one retraining included; the weights are yours from month 15.
    What you gain: an assistant built on models adapted to your corpus, with the gain measured against a standard retriever, no ML team to hire and no infrastructure to run - and models that end up being yours.
  • A corpus that changes every quarter. Standard on a yearly subscription: the initial reference set and three refreshes, i.e. 4 runs for the price of 3 (3 × €5,000). Yearly total: €15,000 excl. tax. If everything has to run on your side, that's the Enterprise plan, on quote.
    What you gain: every quarter, you know whether your assistant's quality holds up as the documents change, and you spot a drop before your users do.

Frequently asked questions

How do I know your reference set is correct?

Our labels are validated on public benchmarks with human judgments - and on a domain-specific corpus annotated by domain experts, with the same performance. That means the method generalises beyond benchmarks. You can check it on your own corpus if you want to, without it being necessary, with the validation app included from the Starter plan: fifty annotations from one of your experts is enough, and we give you the agreement rate between them and us. And the deliverable isn't binary: every chunk carries a relevance grade and a reliability index, and the questions that don't converge are isolated in a separate file.

Isn't evaluation by a language model biased?

Taken naively, yes - and that's documented. That's precisely the problem our protocol addresses, and the reason a single call to a model isn't enough. The choice of models isn't tuned case by case; it systematically targets the best quality available, spread across several independent families, which mechanically limits the risk that a judgment favours one particular system. What we show you are the measured effects: the reliability index, the flagged borderline cases and, if you wish, agreement with your own experts.

How many questions are needed?

Fifty for a first signal. A hundred to two hundred to compare two configurations with an interpretable gap. Five hundred and above to segment by question type and pinpoint where failures occur - which is usually where the useful information is.

We don't have a set of questions.

Start with your real questions, even a small number: usage logs, tickets, support requests. These are the best ones - automatically generated questions are always too well-formed compared to what real users actually do. Failing that, we can generate them, explicitly covering several axes: task type, complexity, phrasing style - as an option from the Discovery plan, with a report rating the quality of each generated question.

What happens when the corpus changes?

The reference set stays valid for the unchanged part. To bring it up to date, we rerun the full processing on your current corpus: since we keep nothing, that is what guarantees an up-to-date result. At the plan price, or on a yearly subscription: 4 runs a year for the price of 3.

What file format?

Two UTF-8 encoded CSV files. questions.csv with the columns id and question; chunks.csv with id, text, and optionally source. If the files don't validate, you receive the details of the offending rows within 24 business hours.

Notes

  1. The proportion of flagged questions is small in practice, but it is not zero, and we do not try to hide it: an ambiguous question, or one whose answer is absent from the corpus, should be identified as such rather than given an arbitrary label that would silently distort your metrics.
  2. The coverage of the candidate pool mechanically bounds the measurable recall: a relevant chunk missing from the pool is not labelled, so it cannot be counted. This is the exercise's structural limit; it is shown in every delivery.
  3. This is a recognised limitation of this family of methods, not an implementation flaw of any particular tool.
  4. Description based on each tool's public documentation at the time of writing; these projects move fast.
  5. During the beta phase, the evaluation runs on data you send us by email; we send back a results report in HTML and JSON.

To get started. The simplest path is the demonstration at the top of the page: your corpus, one question, at no cost. Then the Discovery plan - twenty questions, €900 excluding tax, delivered within 72 hours (indicative during the beta phase); the €900 is deducted from the plan you order next within thirty days (Starter: €1,600 instead of €2,500).

Write to us Give us your feedback

Tell us the rough size of your corpus and how many questions you have. Our reply includes a quote and instructions for the submission. Direct address: contact@crossdata.tech.

Not ready to decide yet? Your feedback in 2 minutes helps us shape what comes next.