Skip to main content

RetrievalCompleteness

Checks whether all required ground truth documents were retrieved. A set-based metric that does not require an LLM judge.

PropertyValue
Default threshold0.8
Requires LLM judgeNo
Required fieldsretrievalContext, context (ground truth)
Available sinceP1

How It Works

The metric compares the set of retrieved documents (retrievalContext) against the set of ground truth documents that should have been retrieved (context).

score = retrieved_ground_truth_docs / total_ground_truth_docs

Supports exact match and semantic (embedding-based) matching.

Example

var testCase = AgentTestCase.builder()
.context(List.of( // ground truth: must be retrieved
"Full refund within 30 days.",
"Returns require original packaging.",
"Refunds processed in 5–7 business days."
))
.retrievalContext(List.of( // what was actually retrieved
"Full refund within 30 days.",
"Refunds processed in 5–7 business days.",
"We offer next-day delivery." // not in ground truth
))
.build();

EvalScore score = new RetrievalCompleteness(0.8).evaluate(testCase);
// score.value() → 0.67
// score.passed() → false
// score.reason() → "2 of 3 required documents retrieved. Missing: 'Returns require original packaging.'"

In JUnit 5

@Test
@AgentTest
@Metric(value = RetrievalCompleteness.class, threshold = 0.9)
void retrieverShouldFetchAllGroundTruthDocs() {
var testCase = AgentTestCase.builder()
.context(requiredDocuments)
.retrievalContext(retrievedDocs)
.build();

AgentAssertions.assertThat(testCase)
.meetsMetric(new RetrievalCompleteness(0.9));
}

Match Modes

new RetrievalCompleteness(0.8, MatchMode.EXACT)     // string equality
new RetrievalCompleteness(0.8, MatchMode.SEMANTIC) // embedding cosine similarity