62 lines
3.5 KiB
Markdown
62 lines
3.5 KiB
Markdown
# GraphRAG evaluácia
|
|
|
|
Aktuálna opravená verzia je **v3**. [Finálna správa](results/final_v3_2026-10-25/REPORT.md) uvádza výsledky aj ich obmedzenia.
|
|
|
|
- DEV/regresia: **589/589**.
|
|
- Posledný doplnkový TEST: **13/13**, iba dva úplne nové profily a obmedzené kategórie.
|
|
- Širší nezávislý TEST v2 pred finálnymi opravami: **67/80**. Je archivovaný a jeho otázky sa po odhalení chýb stali DEV.
|
|
- Celá testovacia sada: **430 passed, 4 skipped**.
|
|
|
|
Tieto čísla neznamenajú 100 % všeobecnú správnosť kódu. Vyhľadávanie sa hodnotí bez generovania odpovede LLM.
|
|
|
|
## Reprodukcia aktuálnej zmrazenej verzie
|
|
|
|
Použi zodpovedajúci kód, rovnaké pôvodné wiki súbory, vstupné JSON 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/v3_preparation/source_audit.json \
|
|
--freeze-manifest tools/graphrag/evaluation/frozen_v3.json \
|
|
--output-dir /tmp/graphrag-v3-reproduction
|
|
```
|
|
|
|
V1 a v2 sú zachované v pôvodných adresároch s manifestmi a Git tagmi `graphrag-v1-frozen` a `graphrag-v2-frozen`. Na ich reprodukciu treba zodpovedajúcu verziu kódu a grafu; aktuálny upravený kód úmyselne neprejde kontrolou starého manifestu. Originálny klasický RAG ostáva samostatným referenčným experimentom.
|
|
|
|
## Referenčné údaje a ďalší vývoj
|
|
|
|
`graphrag_questions.json` je pôvodných 500 otázok. V2 opravila 137 nesúladov: 128 nepravdivých predpokladov o tagoch a 9 množín kategórií. Pravidlá a každá zmena majú zdrojový záznam v `results/v2_preparation/legacy_corrections.json`.
|
|
|
|
`source_oracle.py` číta pôvodný Markdown nezávisle od grafového buildera. `benchmark_v2.py` vytvára opravenú regresiu a pôvodný profilovo oddelený v2 holdout. `benchmark_v3.py` presúva všetky vystavené v2 prípady do DEV, opravuje projekt/práca anotácie a rezervuje posledné nepoužité profily. Nový vývoj musí mať novú verziu, nové výstupy a primerane nezávislý holdout. Archivované datasety neregeneruj na mieste.
|
|
|
|
```bash
|
|
# Príklad vývoja na existujúcom datasete do nového adresára:
|
|
python -m tools.graphrag.evaluation.evaluate_graphrag \
|
|
--split dev --audit tools/graphrag/evaluation/results/v3_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/v3_preparation/source_audit.json \
|
|
--output /tmp/graphrag-next/frozen.json
|
|
```
|
|
|
|
Samotné ďalšie spustenie toho istého TESTu je reprodukcia, nie nové nezávislé vyhodnotenie. Existujúce freeze manifesty a finálne výstupy sa neprepisujú.
|
|
|
|
## Čo hodnotí strict
|
|
|
|
Správne hodnoty musia patriť tej istej osobe/práci a mať prepojené typované dôkazy. Overuje sa význam roku, názov a typ práce, relácie, zdrojové alternatívy a URL, presné množiny a počet, explicitné no-answer/ambiguous a neorezaný výsledok. Rozpoznaná hodnota z otázky sama nie je dôkazom. Schema3 používa strojovo overované väzby a vzory ciest; textové `expected_paths` pôvodnej schema2 sú historické anotácie.
|
|
|
|
## Testy
|
|
|
|
```bash
|
|
pytest -q
|
|
# Po načítaní .env:
|
|
RUN_NEO4J_TESTS=1 pytest -q
|
|
```
|
|
|
|
Neo4j integračné testy používajú izolovaný scope a rollback. Výsledky obsahujú JSON aj CSV, kategórie, obtiažnosti, priemer/medián/p95, Git revízie, Python a obsahové odtlačky.
|