137 lines
9.4 KiB
Markdown
137 lines
9.4 KiB
Markdown
# GraphRAG evaluácia
|
||
|
||
Aktuálna verzia je **v7**, tag `graphrag-v7-frozen`.
|
||
[Správa v7](results/final_v7_2026-10-26/REPORT.md): graf DEV 1 046/1 046,
|
||
nový query-group TEST 80/80, model DEV 46/46, finálne odpovede TEST 80/80
|
||
(prvý pokus 77/80). Všetkých 591 testov prešlo. Stará regresia má 319/320;
|
||
jeden nepodložený modelový názov sa nedoručil. TEST sa neprekrýva so žiadnou odhalenou query skupinou;
|
||
korpus, ľudia a šablóny sú známe. Dve kategórie majú len 2 a 7 nových skupín.
|
||
|
||
CLI vyžaduje explicitné `--questions`, `--audit`, `--freeze-manifest`
|
||
(pri TESTe) a nový výstupný adresár. Použite `graphrag_questions_v7.json`,
|
||
`results/v7_preparation/source_audit.json`, `frozen_v7.json`.
|
||
Generátor `benchmark_v7` vytvára otázky jednorazovo z raw zdrojov, bez
|
||
predikcií. Odstránil sa odhad začiatku štúdia z adresára, nie nedokumentované
|
||
otázky z merania. [Príkazy a postup](../../../docs/graphrag_v7_2026-10-26_worklog.md).
|
||
|
||
## Historická v6
|
||
|
||
Historická verzia je **v6**, tag `graphrag-v6-frozen`.
|
||
[Finálna správa v6](results/final_v6_2026-10-25/REPORT.md) oddeľuje grafový
|
||
DEV 722/722, regresiu 320/320 a generované odpovede modelu.
|
||
Generovanie má strict **316/320 (98,75 %)**; všetkých **565 testov** prešlo.
|
||
Benchmark v6 ponecháva všetkých 1 042 otázok, ich ID a rozdelenie. Opravuje
|
||
15 očakávaní po priamom čítaní zdrojov; generický odkaz „rešerš“ nie je názov
|
||
akademického projektu. Všetky staršie dáta a výsledky ostávajú zachované.
|
||
Modelový DEV má 42 známych otázok; finálna regresia obsahuje všetkých 320.
|
||
|
||
Použite `--questions tools/graphrag/evaluation/graphrag_questions_v6.json`,
|
||
`--audit tools/graphrag/evaluation/results/v6_preparation/source_audit.json`
|
||
a `--freeze-manifest tools/graphrag/evaluation/frozen_v6.json`.
|
||
[Postup, kontroly a zdrojová vzorka](../../../docs/graphrag_v6_2026-10-25_worklog.md).
|
||
Kontrola vzorky je AI kontrola; ľudské posúdenie je pripravené v CSV, neprebehlo.
|
||
Ročník adresára sa pri chýbajúcom explicitnom začiatku štúdia používa ako
|
||
náhradná konvencia, nie ako nezávislý administratívny doklad.
|
||
|
||
## Historická v5.1
|
||
|
||
Historická verzia je **v5.1**, tag `graphrag-v5.1-frozen`.
|
||
[Finálna správa](results/final_v5_1_2026-10-25/REPORT.md) a
|
||
[strojový súhrn](results/final_v5_1_2026-10-25/summary.json) oddeľujú
|
||
vyhľadávanie, zdrojovú kontrolu všetkých vrátených typovaných faktov a generovanie.
|
||
|
||
- Graf DEV: **722/722**.
|
||
- Graf historická regresia: **320/320**, vrátane kontroly nadbytočných faktov.
|
||
- Generovanie: 39 vopred deklarovaných DEV a finálna regresia všetkých 320
|
||
historických otázok. Finálny výsledok: **317/320 (99,06 %)**, bez chýb JSON
|
||
a bez opravného požiadavku. Všetky tri zlyhania zostávajú započítané.
|
||
- Kompletné automatizované testy: **525 passed, 4 skipped**.
|
||
|
||
Všetky otázky sú už známe. V5.1 je regresia, nie nový nezávislý TEST; finálna
|
||
regresia generovania obsahuje aj 39 DEV otázok. Pôvodné gold ani výsledky sa
|
||
nemenili. Prvá iterácia v5 (319/320) zostáva uložená a má overený zdrojový patch.
|
||
|
||
Reprodukcia v5.1 vyžaduje zodpovedajúci release checkout, raw wiki, JSON vstupy
|
||
aj graf podľa manifestu. Používajte vždy nový výstupný adresár:
|
||
|
||
```bash
|
||
python -m tools.graphrag.evaluation.evaluate_graphrag \
|
||
--split test \
|
||
--audit tools/graphrag/evaluation/results/v5_1_preparation/source_audit.json \
|
||
--freeze-manifest tools/graphrag/evaluation/frozen_v5_1.json \
|
||
--output-dir /tmp/graphrag-v5-1-reproduction
|
||
```
|
||
|
||
Nové zmrazenie po vývoji používa kompletný DEV a `--purpose historical_regression`.
|
||
Odtlačky zahŕňajú spoločné moduly aj efektívnu publikačnú politiku. Každý reálny
|
||
DEV výsledok musí prejsť nezávislou kontrolou všetkých vrátených typovaných faktov.
|
||
Pri ďalšom nezávislom experimente treba nové, vopred zdrojovo overené otázky.
|
||
|
||
## Historický protokol v4
|
||
|
||
Nasledujúce merania a príkazy opisujú pôvodnú v4. Na reprodukciu použite jej
|
||
pôvodný checkout/graf; aktuálny kód nezodpovedá odtlačkom frozen_v4.
|
||
|
||
Historická zmrazená verzia je **v4**. [Finálna správa](results/final_v4_2026-10-25/REPORT.md) obsahuje protokol, výsledky a obmedzenia.
|
||
|
||
| Meranie grafového vyhľadávania | Správne | Úspešnosť |
|
||
|---|---:|---:|
|
||
| DEV/regresia v4 | 722/722 | 100,00 % |
|
||
| Širší TEST v4 | 320/320 | 100,00 % |
|
||
|
||
Cieľ ≥92 % grafového vyhľadávania bol splnený v prvom finálnom behu. TEST má desať kategórií, 288 kladných a 32 záporných otázok, bez runtime chýb. Osoby aj korpus sú známe; nové sú otázky a kombinácie faktov. Logické skupiny ani normalizované otázky sa medzi DEV a TEST neprekrývajú. Výsledok neznamená všeobecnú 100 % správnosť na ľubovoľnom vstupe.
|
||
|
||
Generovanie odpovedí dosiahlo **281/300 (93,67 %)** na novom externom TESTe; 20 DEV otázok malo 19/20. Všetkých 19 zlyhaní vrátane 7 neplatných JSON odpovedí ostáva započítaných. Doplnkový audit všetkých vrátených grafových kontextových faktov má **319/320 (99,69 %)**; strict 320/320 neznamená pravdivosť každej nadbytočnej hodnoty. Najslabšia LLM kategória je názov + tag (21/30).
|
||
|
||
Samostatne sa hodnotí generovanie odpovedí cez školské OpenWebUI API po dodaní skutočného grafového kontextu. [Protokol generovania](../../answer_evaluation/README.md) oddeľuje 20 DEV a 300 nových LLM TEST výstupov. Natívny výber nástrojov hlavným agentom je ďalší blok projektu.
|
||
|
||
## Reprodukcia zmrazeného grafu
|
||
|
||
Použi zodpovedajúci kód, rovnakú pôvodnú wiki, JSON vstupy a obsah Neo4j podľa manifestu. Súkromné kľúče ostávajú v `.env`.
|
||
|
||
```bash
|
||
set -a
|
||
source .env
|
||
set +a
|
||
python -m tools.graphrag.evaluation.evaluate_graphrag \
|
||
--split test \
|
||
--audit tools/graphrag/evaluation/results/v4_preparation/source_audit.json \
|
||
--freeze-manifest tools/graphrag/evaluation/frozen_v4.json \
|
||
--output-dir /tmp/graphrag-v4-reproduction
|
||
```
|
||
|
||
Existujúce finálne výstupy a manifesty sa neprepisujú. Opakované spustenie rovnakého TESTu je reprodukcia, nie nové nezávislé overenie. Ak sa podľa odhalených TEST chýb ladí ďalšia verzia, tieto otázky sú od tej chvíle DEV.
|
||
|
||
## Zdrojový benchmark a história
|
||
|
||
- `graphrag_questions.json`: pôvodných 500 otázok. V2 opravila 137 nesúladov (128 tagových predpokladov a 9 neúplných množín kategórií). Zmeny sú v `results/v2_preparation/legacy_corrections.json`.
|
||
- V2: 509 DEV a 80 profilovo oddelených TEST otázok; finálny TEST 67/80 (83,75 %). Po odhalení sa stal regresiou.
|
||
- V3: 589 DEV a 13 **nových** doplnkových otázok vytvorených z pôvodných dokumentov posledných dvoch neodhalených profilov. Nešlo o výber trinástich z pôvodných 500. Meranie prebehlo interným skriptom nad Neo4j bez OpenWebUI či LLM. DEV 589/589, malý TEST 13/13; obmedzené pokrytie neumožňovalo tvrdiť všeobecnú 100 % presnosť.
|
||
- V4: 722 DEV (602 historických + 120 nových), 320 nových TEST skupín nad všetkými známymi profilmi. `source_oracle.py` číta raw Markdown oddelene od buildera. `benchmark_v4.py` nepoužíva výsledky vyhľadávania pri tvorbe očakávaní ani výbere otázok. Kontrola surových zdrojov doplnila 45 zmien/rozšírení historických väzieb názvov; záznamy a mapovanie ID sú v `results/v4_preparation/`.
|
||
|
||
V1–v3 ostávajú v pôvodných adresároch s manifestmi a tagmi `graphrag-v1-frozen`, `graphrag-v2-frozen`, `graphrag-v3-frozen`. Na reprodukciu treba ich pôvodný kód a graf. Percentá rôznych verzií nie sú kontrolovaným porovnaním identických otázok. Klasický RAG a jeho referenčné experimenty ostávajú samostatné.
|
||
|
||
## Strict a zmrazenie
|
||
|
||
Správne hodnoty patria tej istej osobe/práci a majú prepojené typované dôkazy. Overuje sa význam roku, názov a typ práce, relácie, kategória a autor toho istého dokumentu, zdrojové alternatívy a URL, presné množiny a počet, explicitné no-answer a neorezaný výsledok. Rozpoznaná hodnota z otázky sama nie je dôkazom. Schema3 overuje strojové vzory ciest, nie iba textový zoznam očakávaných trás.
|
||
|
||
Freeze vyžaduje kompletný DEV, nulové runtime chyby, platný zdrojový audit a odtlačky kódu, otázok, pôvodných súborov, JSON vstupov, grafu a parametrov. V4 explicitne deklaruje prekryv 72 profilov a nulový prekryv logických skupín. Starší režim profilovo oddeleného holdoutu zostáva zachovaný.
|
||
|
||
Oracle aj evaluator sú pravidlové. Priama kontrola pôvodných riadkov a stratifikovaná kontrola anotácií nie sú náhradou nezávislej ľudskej anotácie celého datasetu.
|
||
|
||
## Vývoj ďalšej verzie
|
||
|
||
Generátory historických v1–v4 neregeneruj na pôvodných miestach. Nové dáta, manifesty a merania potrebujú nové cesty/verziu. `benchmark_v4 --extra-exposed` vie vyradiť ďalšie odhalené skupiny, ale množstvo nových zdrojových prípadov je konečné a kvóty sa nesmú meniť podľa úspechu vyhľadávania.
|
||
|
||
```bash
|
||
python -m tools.graphrag.evaluation.evaluate_graphrag \
|
||
--split dev --audit tools/graphrag/evaluation/results/v4_preparation/source_audit.json \
|
||
--output-dir /tmp/graphrag-next
|
||
python -m tools.graphrag.evaluation.freeze_graphrag \
|
||
--dev-results /tmp/graphrag-next/graphrag_dev.json \
|
||
--audit tools/graphrag/evaluation/results/v4_preparation/source_audit.json \
|
||
--output /tmp/graphrag-next/frozen.json
|
||
```
|
||
|
||
Záverečná kompletná automatizovaná sada: **448 passed, 4 skipped** (vrátane nových testov generovania). Neo4j integračné testy používajú izolovaný scope a rollback. Výsledky obsahujú úplné JSON/CSV a odtlačky pre reprodukciu.
|