Evaluation

Ask your assistant the same questions after every change, score every answer, and see whether the change made things better or worse.

What it is for

One conversation tells you how one answer went. It cannot tell you whether uploading a new price list, rewriting the system prompt or switching models made your assistant better overall — answers vary, and you remember the memorable ones. Evaluation replaces that impression with a measurement: a fixed set of questions, answered the way a visitor would be answered, scored the same way every time, and plotted run after run.

The Evaluation page in the portal has two views:

  • Set & runs — your question set, its runs and the trend. This is the part you come back to after every change.
  • Ask one question — answers and scores a single question on the spot, with the retrieved content and the judge's reasoning. Use it to debug one answer. Nothing is stored and it never appears in the trend.

Build a question set

Each chatbot has one question set: the handful of questions you most need answered well. Start by generating questions from your own content, write your own, or both.

  • Generate from your content reads your knowledge base and proposes up to ten questions. It keeps only questions your content can actually answer, so it sometimes returns fewer than ten — that is the filter doing its job.
  • Expected answer (optional) is an example of a good answer, written by you. The judge uses it to decide what a relevant, complete answer covers. It is not treated as ground truth: different wording or extra correct detail is not penalised, and faithfulness is always judged against your retrieved content.
  • Expected sources (optional) are the documents the answer should come from, comma separated, as they appear in your Knowledge Base — for example refund-policy.pdf, faq.md. Matching ignores case and accepts part of a name. Naming sources turns on the Right source retrieved check.
  • Enabled controls whether a question is included in runs. Your plan sets how many questions can be enabled; if you move to a smaller plan, extra questions are disabled, never deleted.

What makes a good set

Questions real visitors ask, in their words. Questions the assistant got wrong before. A few whose answer lives in a single document, so a retrieval problem shows up clearly. Ten well-chosen questions tell you more than fifty generic ones.

What happens in a run

  1. Nubo records the configuration the run used: chat model, response style (temperature), reranking, retrieval depth, a fingerprint of your system prompt and a fingerprint of your knowledge base. That record is what lets the trend say what changed between two runs.
  2. Each enabled question is answered through the same pipeline as a real conversation: search your knowledge base, rerank the results if reranking is on, and answer with your chosen model.
  3. Each answer is scored by the judge, described below. Progress updates live on the page.
  4. When every question is done the run is marked complete and joins the trend. You can cancel a run while it is in progress; a cancelled run is kept but not plotted.

Your tools are never called

If your assistant uses integrations (MCP tools), evaluation never runs them. When the model asks for a tool, the request is recorded and the answer is written from your knowledge base alone. That keeps evaluation from touching your systems, but questions that need live data will score lower on completeness. The run tells you when this happened. Because it happens the same way in every run, comparing runs is still fair.

If an answer cannot be produced, it is retried a few times. A question that still has no answer is marked Failed.

How answers are scored

Every answer is read by an AI judge — a language model given a fixed scoring rubric. For each answer the judge sees:

  • the question;
  • the content that was retrieved and handed to the assistant, with the source of each passage;
  • the assistant's answer;
  • your expected answer, if the question has one;
  • a note naming any tools the assistant asked for but did not get.

It is told to judge only against the retrieved content — not against the web, and not against what it happens to know — and not to reward or punish style or length. It runs with randomness turned down to zero, so the same answer scores consistently from run to run. Before choosing any number it writes down its reasoning and lists the claims it could not find support for; both are shown on each result as Why it scored that way and Unsupported claims.

Each answer gets four scores from 1 to 5, and an overall yes/no on whether it is grounded in the content. If the judge itself fails on an answer, that answer is shown as Not scored rather than given a score it did not earn.

The four scores

Read them in this order. Context sufficiency describes what the assistant had to work with; the other three describe what it did with it.

Context sufficiency

Ignoring the answer, could the question be answered from the retrieved content alone?

  1. 5The retrieved content fully contains what is needed.
  2. 4Almost everything is there; a small detail is missing.
  3. 3Partly on topic, but a key piece is missing.
  4. 2Only loosely related to the question.
  5. 1Irrelevant, or nothing was retrieved.

When it is low. This scores retrieval, not the answer — the judge is told to decide it while ignoring the answer entirely. A low score means the right material never reached the model: the information is not in your knowledge base, the document has not finished indexing, or search returned something adjacent. Fix the content or retrieval first — no prompt can write a good answer from the wrong page, and while this score is low the other three are describing an answer built on the wrong material.

Faithfulness

Is every claim in the answer supported by the retrieved content?

  1. 5Every claim is directly supported.
  2. 4Almost all claims are supported; minor inferences are reasonable.
  3. 3Most claims are supported; some are unsupported but plausible.
  4. 2Several claims lack support.
  5. 1Most claims are unsupported or contradicted by the content.

When it is low. The assistant said things your content does not say — usually general knowledge filling a gap. The result lists the specific unsupported claims. An answer that correctly declines because the content does not cover the question is faithful; that shortfall is counted against completeness instead.

Relevance

Does the answer address the question that was asked?

  1. 5Directly and completely answers the question.
  2. 4Answers it, with minor tangential information.
  3. 3Partially answers the question.
  4. 2Loosely related, but does not really answer it.
  5. 1Does not address the question at all.

When it is low. The reply drifted: accurate, perhaps, but about something else. Common causes are an ambiguous question, retrieval that pulled a neighbouring topic, or a system prompt that steers every answer toward the same subject.

Completeness

Does the answer cover all the key aspects needed to answer the question fully?

  1. 5Covers all relevant aspects comprehensively.
  2. 4Covers most relevant aspects.
  3. 3Covers some aspects, but misses important ones.
  4. 2Covers only the basics.
  5. 1Misses most of what matters.

When it is low. Part of the answer is missing. Either the information is spread across documents and not all of it was retrieved, the answer needed live data from a tool (see tools in a run), or the question simply deserves more than the assistant wrote. An expected answer on the question tells the judge what a full answer covers.

Grounded, shown when you ask one question, is the judge's overall call on whether the answer is built on the retrieved content.

Reading a run

The summary at the top of a run:

FigureWhat it shows
The four scoresThe average of each score across the run's scored answers, from 1 to 5. Green from 4, amber from 3, red below 3.
PassedQuestions whose four scores all reached the pass threshold (4 by default), out of every question in the run.
Right source retrievedOf the questions that name expected sources, the share where at least one of those sources was among the retrieved content. This is a direct check, with no judge involved. It is hidden when no question names a source.

Each question in the run carries one status:

  • Passed — all four scores reached the threshold.
  • Below threshold — at least one score fell short. Open the result to see which, and why.
  • Failed — no answer could be produced.
  • Not scored — an answer was produced, but the judge could not score it.

Missing measurements are not bad answers

Failed and not-scored answers are left out of every average. Counting them as zero would make a judge outage look like your assistant getting worse.

The trend

The trend plots every completed run, oldest first, spaced evenly rather than by date — runs are events, not a schedule. The four average scores share one 1-to-5 axis; the pass rate sits beneath them as a percentage of scored answers. You need two completed runs before there is anything to compare.

Wherever the configuration differs from the run before, a marker names the change, so a drop explains itself:

  • Knowledge base changed — documents or pages were added, removed or updated.
  • System prompt changed
  • Model A → B
  • Reranking on / Reranking off
  • Top-K 5 → 8 — how many passages are retrieved per question.
  • Temperature 0.3 → 0.7 — the response style.

Full per-question detail is kept for your most recent runs; how many depends on your plan. Older runs keep their summary scores, so the trend stays complete.

When a score drops

What you seeLikely causeWhat to try
Context sufficiency low across many questionsThe information is missing, or has not finished indexingCheck the Knowledge Base for failed or pending files, rescan your website, add the missing document
Right source retrieved lowSearch returns the wrong documentsTurn on reranking; split long documents that cover many topics; give files descriptive names and headings
Context sufficiency fine, faithfulness lowThe assistant adds knowledge beyond your contentTell the system prompt to answer only from the provided content; choose the Precise response style
Faithfulness fine, completeness lowAnswers are cut short, the information is spread out, or the question needs live tool dataAsk for complete answers in the prompt; check the expected answer only asks for what your content contains
Relevance lowThe question is ambiguous, or the prompt steers answers off topicReword the question the way a visitor would ask it; review the system prompt
Drop right after a markerThat changeAdjust or revert it, then run the set again to confirm

Good to know

  • The judge is a language model, and it may be from the same family as the model that wrote the answer, which can flatter the answer slightly. That bias is the same in every run, so treat a single score as a signal and the comparison between runs as the measurement.
  • A run uses your live configuration and knowledge base, so run it after a change is saved, not while you are still editing.
  • Ask one question is for investigating a single answer. Its results are not stored and never enter the trend.
  • Your plan sets how many questions you can enable, how often you can run the set, and how many runs keep full detail.