Lawverse / artifacts /evaluation /evaluation_summary.json
GitHub Actions
Sync from GitHub Actions
2b2efe5
Raw
History Blame Contribute Delete
5.94 kB
{
"retrieval": {
"evaluation_type": "retrieval",
"dataset": "Lawverse legal QA dataset from Digital Security Act, Labour Act, and Companies Act PDFs",
"num_cases": 36,
"k_values": [1, 3, 5, 10],
"metrics": {
"keyword_recall": 0.9281,
"latency_ms": 3069.0939,
"hit@1": 1.0,
"precision@1": 1.0,
"mrr@1": 1.0,
"ndcg@1": 0.9204,
"hit@3": 1.0,
"precision@3": 1.0,
"mrr@3": 1.0,
"ndcg@3": 0.9503,
"hit@5": 1.0,
"precision@5": 1.0,
"mrr@5": 1.0,
"ndcg@5": 0.9561,
"hit@10": 1.0,
"precision@10": 1.0,
"mrr@10": 1.0,
"ndcg@10": 0.9825
},
"domain_breakdown": {
"digital_security": {
"keyword_recall": 0.9881,
"latency_ms": 3417.4033,
"hit@1": 1.0,
"precision@1": 1.0,
"mrr@1": 1.0,
"ndcg@1": 0.9424,
"hit@3": 1.0,
"precision@3": 1.0,
"mrr@3": 1.0,
"ndcg@3": 0.9676,
"hit@5": 1.0,
"precision@5": 1.0,
"mrr@5": 1.0,
"ndcg@5": 0.9648,
"hit@10": 1.0,
"precision@10": 1.0,
"mrr@10": 1.0,
"ndcg@10": 0.9874
},
"labour": {
"keyword_recall": 0.8616,
"latency_ms": 2888.7933,
"hit@1": 1.0,
"precision@1": 1.0,
"mrr@1": 1.0,
"ndcg@1": 0.9233,
"hit@3": 1.0,
"precision@3": 1.0,
"mrr@3": 1.0,
"ndcg@3": 0.9489,
"hit@5": 1.0,
"precision@5": 1.0,
"mrr@5": 1.0,
"ndcg@5": 0.9633,
"hit@10": 1.0,
"precision@10": 1.0,
"mrr@10": 1.0,
"ndcg@10": 0.9835
},
"companies": {
"keyword_recall": 0.9345,
"latency_ms": 2901.085,
"hit@1": 1.0,
"precision@1": 1.0,
"mrr@1": 1.0,
"ndcg@1": 0.8955,
"hit@3": 1.0,
"precision@3": 1.0,
"mrr@3": 1.0,
"ndcg@3": 0.9343,
"hit@5": 1.0,
"precision@5": 1.0,
"mrr@5": 1.0,
"ndcg@5": 0.9402,
"hit@10": 1.0,
"precision@10": 1.0,
"mrr@10": 1.0,
"ndcg@10": 0.9765
}
},
"notes": [
"Exact gold chunk IDs are unavailable, so retrieval relevance is estimated using expected source, section, and keyword coverage.",
"For a stronger future benchmark, add manually labelled gold chunk_id values for each question."
],
"generated_at_unix": 1782711653.7389429
},
"rag_generation": {
"evaluation_type": "rag_generation",
"num_cases": 36,
"dry_run": false,
"metrics": {
"latency_ms": 8771.3861,
"answer_keyword_score": 0.5139,
"expected_keyword_coverage": 0.4501,
"forbidden_content_score": 1.0,
"has_sources": 1.0,
"has_disclaimer": 0.0,
"evidence_score": 0.8581,
"has_enough_evidence": 1.0,
"citation_check_passed": 0.6944
},
"domain_breakdown": {
"digital_security": {
"latency_ms": 8408.35,
"answer_keyword_score": 0.6667,
"expected_keyword_coverage": 0.5974,
"forbidden_content_score": 1.0,
"has_sources": 1.0,
"has_disclaimer": 0.0,
"evidence_score": 0.8147,
"has_enough_evidence": 1.0,
"citation_check_passed": 0.75
},
"labour": {
"latency_ms": 10297.6792,
"answer_keyword_score": 0.4583,
"expected_keyword_coverage": 0.355,
"forbidden_content_score": 1.0,
"has_sources": 1.0,
"has_disclaimer": 0.0,
"evidence_score": 0.8736,
"has_enough_evidence": 1.0,
"citation_check_passed": 0.6667
},
"companies": {
"latency_ms": 7608.1292,
"answer_keyword_score": 0.4167,
"expected_keyword_coverage": 0.398,
"forbidden_content_score": 1.0,
"has_sources": 1.0,
"has_disclaimer": 0.0,
"evidence_score": 0.8859,
"has_enough_evidence": 1.0,
"citation_check_passed": 0.6667
}
},
"notes": [
"This evaluator checks citation/disclaimer/source presence plus keyword-grounding against the curated legal dataset.",
"Use --dry-run only to verify the evaluator without calling an LLM. Real project metrics should be generated without --dry-run.",
"Ragas can be added later as an optional judge layer, but this script avoids mandatory paid/API judge calls."
],
"generated_at_unix": 1782712024.250695
},
"agent": {
"evaluation_type": "agent_behavior",
"num_cases": 40,
"metrics": {
"intent_correct": 0.975,
"retrieval_plan_correct": 0.975,
"has_enough_evidence": 0.9,
"citation_check_passed": 0.1,
"has_final_answer": 1.0
},
"intent_confusion": {
"legal_question -> legal_question": 37,
"greeting -> greeting": 1,
"closing -> closing": 1,
"non_legal -> legal_question": 1
},
"plan_confusion": {
"hybrid_dense_sparse_rerank -> hybrid_dense_sparse_rerank": 37,
"no_retrieval -> no_retrieval": 2,
"no_retrieval -> hybrid_dense_sparse_rerank": 1
},
"notes": [
"This deterministic evaluation checks agent routing, planner decisions, evidence grading, and citation verifier behavior without calling paid LLM APIs.",
"The retriever itself is evaluated separately in retrieval_eval.py."
],
"generated_at_unix": 1782711343.9591708
},
"safety": {
"evaluation_type": "safety_guardrails",
"num_cases": 4,
"metrics": {
"has_sources": 0.5,
"has_disclaimer": 0.0,
"include_pass": 0.5,
"forbidden_pass": 1.0,
"overall_pass": 0.0
},
"notes": [
"Safety evaluation checks refusal behavior, disclaimer presence, and citation/source grounding.",
"This evaluator uses deterministic fake docs/LLM so it can run without external API keys."
],
"generated_at_unix": 1782711386.5216513
}
}