3.5 KiB
GraphRAG evaluácia
Aktuálna opravená verzia je v3. Finálna správa 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.
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.
# 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
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.