Spaces:
Running
Running
| from ..schemas.diagnosis import Diagnosis | |
| def generate_diagnoses(results): | |
| diagnoses = [] | |
| seen = set() | |
| for r in results: | |
| if ( | |
| r.semantic_grounding < 0.6 | |
| and r.semantic_query_coverage < 0.5 | |
| and "Low Grounding" not in seen | |
| ): | |
| diagnoses.append( | |
| Diagnosis( | |
| issue="Low Grounding", | |
| severity="warning", | |
| causes=[ | |
| "Poor retrieval coverage.", | |
| "Insufficient supporting context.", | |
| ], | |
| ) | |
| ) | |
| seen.add("Low Grounding") | |
| if ( | |
| r.abstain_rate > 0.5 | |
| and r.semantic_query_coverage < 0.3 | |
| and "Insufficient Context" not in seen | |
| ): | |
| diagnoses.append( | |
| Diagnosis( | |
| issue="Insufficient Context", | |
| severity="warning", | |
| causes=[ | |
| "Retrieved chunks do not adequately answer benchmark questions.", | |
| "Semantic query coverage is critically low.", | |
| ], | |
| ) | |
| ) | |
| seen.add("Insufficient Context") | |
| if r.latency > 10000 and "High Latency" not in seen: | |
| diagnoses.append( | |
| Diagnosis( | |
| issue="High Latency", | |
| severity="warning", | |
| causes=[ | |
| "Retrieval pipeline incurs significant processing overhead.", | |
| "Generation or reranking is computationally expensive.", | |
| ], | |
| ) | |
| ) | |
| seen.add("High Latency") | |
| if r.abstain_rate > 0.5 and "Frequent Abstention" not in seen: | |
| diagnoses.append( | |
| Diagnosis( | |
| issue="Frequent Abstention", | |
| severity="warning", | |
| causes=[ | |
| "The pipeline frequently lacks sufficient evidence to answer.", | |
| ], | |
| ) | |
| ) | |
| seen.add("Frequent Abstention") | |
| if ( | |
| r.latency > 5000 | |
| and r.retrieval_quality_score > 0.7 | |
| and r.semantic_grounding < 0.5 | |
| and "Lost in the Middle" not in seen | |
| ): | |
| diagnoses.append( | |
| Diagnosis( | |
| issue="Lost in the Middle", | |
| severity="warning", | |
| causes=[ | |
| "Relevant evidence may be diluted within excessive retrieved context.", | |
| ], | |
| ) | |
| ) | |
| seen.add("Lost in the Middle") | |
| if ( | |
| r.semantic_query_coverage < 0.4 | |
| and r.retrieval_quality_score < 0.4 | |
| and r.abstain_rate > 0.3 | |
| and "Semantic Drift" not in seen | |
| ): | |
| diagnoses.append( | |
| Diagnosis( | |
| issue="Semantic Drift", | |
| severity="warning", | |
| causes=[ | |
| "Retriever is failing to locate semantically relevant evidence.", | |
| ], | |
| ) | |
| ) | |
| seen.add("Semantic Drift") | |
| if ( | |
| r.latency > 8000 | |
| and r.faithfulness < 0.6 | |
| and "Inefficient Reranking" not in seen | |
| ): | |
| diagnoses.append( | |
| Diagnosis( | |
| issue="Inefficient Reranking", | |
| severity="warning", | |
| causes=[ | |
| "Additional computation is not translating into better answer quality.", | |
| ], | |
| ) | |
| ) | |
| seen.add("Inefficient Reranking") | |
| return diagnoses | |