pub struct MultiReport {
pub dataset_id: Option<String>,
pub store_kind: Option<String>,
pub judge_fingerprint: Option<String>,
pub metrics: Vec<MetricReport>,
pub freshness: Option<FreshnessReport>,
}Expand description
A bundle of MetricReports with optional run metadata, suitable for
JSON persistence and baseline comparison.
Fields§
§dataset_id: Option<String>Free-form dataset identifier (e.g. "beir/nq" or "internal/v3").
store_kind: Option<String>Free-form store identifier (e.g. "memvid:livetest.mv2").
judge_fingerprint: Option<String>Opaque fingerprint of any LLM judges used. Reports with mismatched
fingerprints refuse to diff to prevent silent comparison drift.
Reserved for the upcoming ragas feature; pure retrieval runs leave
this empty.
metrics: Vec<MetricReport>One report per metric, in the order metrics were declared.
freshness: Option<FreshnessReport>Optional stale/conflict freshness rollup for the same dataset.
Implementations§
Source§impl MultiReport
impl MultiReport
Sourcepub fn new(metrics: Vec<MetricReport>) -> Self
pub fn new(metrics: Vec<MetricReport>) -> Self
Construct a MultiReport from a metric report vector. Other
metadata is filled in via the with_* builders.
Sourcepub fn with_dataset(self, id: impl Into<String>) -> Self
pub fn with_dataset(self, id: impl Into<String>) -> Self
Attach a dataset identifier.
Sourcepub fn with_store(self, kind: impl Into<String>) -> Self
pub fn with_store(self, kind: impl Into<String>) -> Self
Attach a store kind identifier.
Sourcepub fn with_judge_fingerprint(self, fp: impl Into<String>) -> Self
pub fn with_judge_fingerprint(self, fp: impl Into<String>) -> Self
Attach a judge fingerprint (reserved for ragas).
Sourcepub fn with_bootstrap(self, iterations: usize, level: f64, seed: u64) -> Self
pub fn with_bootstrap(self, iterations: usize, level: f64, seed: u64) -> Self
Attach a deterministic percentile-bootstrap confidence interval to
every metric row. Equivalent to mapping MetricReport::with_bootstrap_ci
over MultiReport::metrics. See that method for the algorithm and
determinism guarantees.
Sourcepub fn with_freshness(self, freshness: FreshnessReport) -> Self
pub fn with_freshness(self, freshness: FreshnessReport) -> Self
Attach a freshness rollup without modifying metric rows.
Sourcepub fn with_freshness_metrics(self, freshness: FreshnessReport) -> Self
pub fn with_freshness_metrics(self, freshness: FreshnessReport) -> Self
Attach a freshness rollup and append score-like freshness metrics.
Appended metric names are freshness.stale_free_rate@k and
freshness.conflict_free_rate@k. Because higher is better, these rows
can be gated with RegressionGate just like recall, nDCG, or MRR.
Sourcepub fn to_markdown(&self) -> String
pub fn to_markdown(&self) -> String
Render a compact Markdown summary table.
Sourcepub fn diff(&self, baseline: &MultiReport) -> Result<ReportDiff>
pub fn diff(&self, baseline: &MultiReport) -> Result<ReportDiff>
Diff this report against a baseline. Returns a ReportDiff with
per-metric Δ-mean and per-query winners/losers. Fails if the two
reports were produced with different judge fingerprints (silent
comparison drift).
Per-query deltas are computed by intersecting the two reports’
per_query vectors on query_id. Queries missing from either side
are skipped (they cannot be compared). winners, losers, and
unchanged use an absolute threshold of 1e-9 to filter floating
point noise; callers needing different sensitivity should inspect
MetricDelta::query_changes directly.
Sourcepub fn delta_markdown(&self, baseline: &MultiReport) -> Result<String>
pub fn delta_markdown(&self, baseline: &MultiReport) -> Result<String>
Render a head-to-head Markdown delta table of this report against
baseline (current, baseline, and Δ = current − baseline per
metric). Convenience wrapper over self.diff(baseline)?.to_markdown();
fails on a judge-fingerprint mismatch for the same reason diff does.
Trait Implementations§
Source§impl Clone for MultiReport
impl Clone for MultiReport
Source§fn clone(&self) -> MultiReport
fn clone(&self) -> MultiReport
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more