dp-zp-agent/tools/graphrag/evaluation/README.md

7.3 KiB
Raw Blame History

GraphRAG evaluácia

Aktuálna verzia je v5.1, tag graphrag-v5.1-frozen. Finálna správa a strojový súhrn 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:

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 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 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.

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.

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.