2.8 KiB
2.8 KiB
Evidence: rag-eval-pipeline-closure
Changed Assets
scripts/eval_rag_retrieval.pyeval/rag-retrieval/cases/golden-cases.jsoneval/rag-retrieval/fixtures/*.jsoneval/rag-retrieval/reports/baseline.jsoneval/rag-retrieval/reports/baseline.mdeval/rag-retrieval/README.mdmvp/architecture/rag-eval-closure.mdsrc/test/java/com/superbiz/agent/eval/RagLookupSnapshotGeneratorTest.javasrc/test/java/com/superbiz/agent/eval/RagEvalSeedImporterTest.javascripts/generate_rag_lookup_snapshots.ps1scripts/prepare_rag_eval_seed.ps1eval/rag-retrieval/seed-docs/*.mdsrc/main/java/com/superbiz/agent/dto/Frontmatter.javasrc/main/java/com/superbiz/agent/dto/KnowledgeEntry.javasrc/main/java/com/superbiz/agent/service/FrontmatterParser.javasrc/main/java/com/superbiz/agent/service/KnowledgeIndexService.javasrc/main/java/com/superbiz/agent/service/DocumentManagementService.javasrc/main/java/com/superbiz/agent/service/VectorIndexService.javasrc/main/java/com/superbiz/agent/service/VectorSearchService.javasrc/main/java/com/superbiz/agent/service/SpringAiVectorStoreSidecarService.javasrc/main/resources/application.yml
Baseline Result
Evaluated 7 cases: passRate=1.0, recall@5=1.0, failed=0
Regression Signals
The evaluator now fails on:
- missing expected source
- missing breadcrumb or evidence keyword
- non-
lookupResultfixture - selected attempt mismatch
- fallback reason mismatch
- fallback reason outside accepted values
- evidence status mismatch
- missing context source
- rerank top source mismatch
The snapshot generator now provides:
- real
LookupKnowledgeToolinvocation - one fixture per golden case
- explicit opt-in through
rag.snapshot.enabled=true - optional post-generation baseline evaluation
- scoped retrieval through
retrieval.kb-scope=rag-eval - Spring AI VectorStore by default through
retrieval.vector-store.mode=spring - scoped L0 hints through the same
retrieval.kb-scope
The seed importer now provides:
- canonical eval docs under
eval/rag-retrieval/seed-docs - real
DocumentManagementServiceimport/reindex - stable
source/docIdmetadata kb_scope=rag-evalisolation from local non-eval documents- frontmatter stripping before chunk embedding
- an over-filter decoy seed doc for fallback-path evaluation
The diff now detects:
- aggregate pass/recall regression
- case pass regression
- hit-level regression
- first-rank regression
- selected attempt/fallback/evidence/rerank changes
Final Spring Live Snapshot
.\scripts\generate_rag_lookup_snapshots.ps1 -Fixtures <temp-fixtures> -RetrievedAt 2026-07-06T00:00:00Z
Evaluated 7 cases: passRate=1.0, recall@5=1.0, failed=0
Key fallback trace:
selectedAttempt=UNFILTERED_VECTOR_RETRY
fallbackReason=filtered_vector_no_evidence
rerankTopSource=rag-l0-filter-fallback