DiplomovaPraca/evaluation/README.md

92 lines
4.7 KiB
Markdown

# Vyhodnotenie agenta ADC
Sada obsahuje 30 otázok, po šesť v piatich kategóriách. Odpovede prvých
štyroch kategórií sú presnými úryvkami existujúceho korpusu ADC. Nie sú
nezávisle klinicky overené. Negatívne otázky testujú nedostatočne určený
vstup, nie dokázanú neprítomnosť interakcie.
## Spustenie
Z koreňa projektu, po spustení serverov:
```powershell
python -m unittest discover -s tests -v
python scripts/evaluation/audit_data.py --root .
python scripts/evaluation/run_evaluation.py --out outputs/evaluation_new --limit 10
python scripts/evaluation/judge_answers.py --run outputs/evaluation_new
```
Bez `--limit` sa spracuje všetkých 30 otázok. `--resume` obnoví experiment
iba pri rovnakej sade, indexe a konfigurácii. Chyby požiadaviek sa uchovávajú
oddelene od skóre. Pre server s autentifikáciou nastavte `LIGHTRAG_API_KEY`
v prostredí; kľúč sa neukladá do výsledkov.
## Interpretácia
- `source_hit` meria iba prítomnosť referenčného produktu medzi zdrojmi,
nie správnosť odpovede. Pre bypass a negatívne otázky sa nepočíta.
- `judgments.jsonl` obsahuje vlastnú rubriku LLM-as-a-judge, nie RAGAS.
Grounding porovnáva odpoveď s textami vrátenými priamo s odpoveďou.
Coverage porovnáva relevantné fakty s referenciou. Hodnotiteľ je tá istá
modelová služba ako generátor; výsledky vyžadujú nezávislú kontrolu.
- Časy môžu obsahovať zásahy cache a ovplyvňuje ich zaťaženie školského
servera. Nie sú benchmarkom studeného štartu ani kauzálnym meraním.
- Audit rozdielnych textov v deduplikačných skupinách nedokazuje klinickú
významnosť rozdielov.
Výstupy `evaluation_pilot` dokumentujú diagnostický beh s nedostatočne
obmedzeným grafovým kontextom. `evaluation_pilot_fixed` používa spoločné
parametre agenta, ktoré rezervujú priestor pre pôvodné texty ADC. Starý
graf ani pôvodné údaje sa pri týchto behoch neprestavujú.
Pred záverom o klinickej správnosti je potrebné overiť referencie a odpovede
odborníkom, rozšíriť otázky na viac produktov a oddeliť vývojovú a testovaciu
sadu. Pilot nepreukazuje všeobecnú prevahu GraphRAG nad klasickým RAG.
## Skutočné hodnotenie RAGAS 0.4.3
Skript `scripts/evaluation/run_ragas.py` používa priamo metriky knižnice RAGAS:
Faithfulness, AnswerRelevancy, ContextRecall a AnswerCorrectness. Výsledky
sú uložené oddelene od vlastnej rubriky v `outputs/ragas_pilot/`.
Pre uložený pilot ide o osem zodpovedateľných otázok a päť režimov, teda
40 odpovedí. Negatívne scenáre sa týmto súborom metrík nehodnotia. Bypass
nemá vyhľadávanie, preto sa pri ňom Faithfulness a ContextRecall nepočítajú.
Maximálny počet definovaných číselných skóre je 144. Chyby a NaN sa evidujú
oddelene a nenahrádzajú sa nulou.
Kontextmi sú výhradne úryvky vrátené spolu s uloženou odpoveďou. Úplný
prompt vrátane grafových opisov nebol v pôvodnom pilote uložený. Faithfulness
preto vyjadruje podporu v týchto úryvkoch, nie vernosť celému promptu.
Referenčný text sa nikdy nevkladá do vyhľadaného kontextu.
Nové oddelené prostredie možno pripraviť z koreňa projektu:
```powershell
python -m venv .venv-ragas
.\.venv-ragas\Scripts\python.exe -m pip install -r evaluation/requirements-ragas.txt
```
Spustite iba embeddingový server (`python embedding_server.py`), potom:
```powershell
.\.venv-ragas\Scripts\python.exe scripts/evaluation/run_ragas.py --out outputs/ragas_new
```
LLM sa volá priamo cez existujúcu konfiguráciu `lightrag/.env`; LightRAG server
ani webové demo nie sú na túto hodnotiacu fázu potrebné. Kľúče sa nezapisujú
do výsledkov ani trace súboru. Prerušený beh možno obnoviť cez `--resume`.
Celý použitý balíkový stav zaznamenáva `requirements-ragas.lock.txt`.
`manifest.json` zachytáva verzie, kontrolné súčty vstupov, konfiguráciu a rozsah.
`samples.json` obsahuje presné vstupy, `scores.jsonl` individuálne skóre a stav,
`api_trace.jsonl` otázky a odpovede hodnotiteľa bez autorizačných hlavičiek.
`summary.json` a `scores.csv` slúžia na kontrolu výsledkov. Hodnotiteľ používa
rovnakú školskú modelovú službu ako generátor a predvolené anglické prompty
nad slovenskými vstupmi; výsledok nie je nezávislou klinickou validáciou.
Dokumentácia: https://docs.ragas.io/en/stable/concepts/metrics/available_metrics/faithfulness/
Uložená konfigurácia MiniLM má maximálnu dĺžku vstupu 128 tokenov. Pri dlhých odpovediach a referenciách to obmedzuje sémantickú zložku AnswerCorrectness. Konfigurácia je zachytená v `embedding_config.json`. Pri opakovaní neúspešných buniek možno po dokončenom prvom behu použiť `--resume --retry-max-tokens 8192`; zvýšený limit a história zostávajú zaznamenané.