dp-zp-agent/docs/graphrag_v7_2026-10-26_worklog.md

7.7 KiB
Raw Permalink Blame History

Uzavretie bodu 3 — GraphRAG v7, 26. 10. 2026

V7 opravuje konkrétne chyby z posledného auditu. Historické otázky, manifesty, tagy a výsledky v1–v6 zostávajú zachované. Záloha projektu, indexových súborov a grafu je v /tmp/zp-v7-backup-20261026/.

Opravy

  1. Dotaz rešpektuje ľubovoľný štvormiestny rok vrátane 1899, 1999, 2100 a 9999. Nepodporovaný zápis po „roku“, napríklad 10000 alebo 20xx, sa odmieta cez unsupported_year_constraint. Podmienka sa nepremení na vyhľadávanie bez časového obmedzenia.
  2. Upozornenie na neúplnosť už nepovoľuje kladné tvrdenie o úplnom zozname v inej vete. Kontrola rozlišuje aj pravdivé popretie „Nie je to úplný zoznam“. Testy obsahujú obe možnosti aj skloňované „všetkých študentov“.
  3. Model vyberá štruktúrované claims, source_urls, status, count; answer ponecháva prázdne. Text pre používateľa zostaví render_graph_answer() z overených hodnôt, bez gold a bez nových faktov. Pôvodná HTTP odpoveď, parsované tvrdenia a vykreslená odpoveď ostávajú osobitne uložené. Voľná próza modelu sa nepoužíva ako doručený text.
  4. Pri kontrole starého alebo neočakávaného voľného textu sa odmietajú nepodložené číselné údaje. URL a doslovné hodnoty overených titulov sa pred týmto porovnaním odlíšia od nových tvrdení. Prípad s dopísaným rokom 2099 tak neprejde. Samotné porovnávanie čísel nie je úplný sémantický analyzátor slovenčiny; doručený grafový text je preto deterministický a obsahuje iba overené polia.
  5. count musí mať podklad v úplnej agregácii. Pozitívna faktová odpoveď musí obsahovať tvrdenia a citácie; kontrolujú sa zdroje jednotlivých uvedených atribútov. Prázdna úplná agregácia s počtom 0 je platná.
  6. Citácie sa kontrolujú v bežnom texte, inline a referenčnom Markdowne aj HTML href/src, vrátane relatívnych URL, HTML entít a vnorených zátvoriek v platnej URL. Povolené sú iba URL dodané pre konkrétny dotaz.
  7. Ročník adresára sa prestal používať ako začiatok štúdia. Builder aj nezávislý oracle vyžadujú explicitnú vetu v texte. Graf uvádza start_year_basis=explicit_text|missing a start_year_confidence=documented|unknown. Oracle vedie cohort_year oddelene; táto hodnota sa nevydáva za začiatok štúdia. Pri chýbajúcom údaji nástroj vráti missing_documented_start_year.
  8. Hodnotenie mena povoľuje obmedzené gramatické prípony v prirodzenom texte, ale štruktúrovanú identitu naďalej porovnáva presne. „Martina NaN1“ sa nezamieňa za iného Martina. Pri deterministickom texte sú mená aj tak v pôvodnom tvare. Parser JSON neprepisuje neplatné hodnoty; jeden spoločný opravný požiadavok pre formát/kontext ostáva limitom.
  9. Evaluačné CLI vyžadujú explicitný dataset, audit a manifest. Odpovedný runner vyžaduje aj zoznam DEV; historická regresia navyše vlastné ID. Už nevyberajú v4 ako tichý predvolený benchmark. Hashované cesty kódu generovania sú relatívne voči projektu, aby sa dali overiť aj inde.

Benchmark a oddelenie meraní

Všetkých 1 042 odhalených v6 otázok prešlo do DEV. Pridali sa štyri potrebné regresné otázky na roky mimo 20xx. DEV má 1 046 otázok. Odstránenie odhadu štúdia opravilo 10 očakávaní; údaje, ktoré dokument neuvádza, sa očakávajú ako nenájdené. ID ani text pôvodných otázok sa nevymazali. Zmeny sú v v7_preparation/source_corrections.json.

Nový TEST má 80 otázok, 72 kladných a 8 záporných, vo všetkých desiatich kategóriách. Seed, kvóty a výber boli uložené pred vyhľadávaním. Žiadna logická query skupina sa neprekrýva s odhalenými otázkami ani DEV. Ide o nové kombinácie nad známou wiki, osobami a šablónami. Nie je to experiment s neznámymi osobami, novým korpusom alebo ľudskou anotáciou.

Počet otázok v kategóriách je obmedzený dostupnými novými skupinami: spojenie autor–kategória má dve nové skupiny, výpis kategórií sedem. Kvóty sa neurčovali podľa úspechu retrievera. Reprezentatívnu vzorku 20 otázok (dve z každej kategórie) skontrolovala AI priamo oproti Markdownom pred meraním. source_review_packet.json obsahuje pôvodné výňatky a dôkazy; source_review.csv závery. Človek ju neanotoval. Odstránenie odhadu z adresára teda rieši neistotu z auditu; nenahrádza nezávislú ľudskú anotáciu celého korpusu.

Graf sa zmrazí po kompletnom DEV. Generovanie má vopred deklarovaných 46 DEV otázok: predchádzajúcich 42 a štyri nové rokové regresie. Finálny nový TEST sa spustí raz po úspešnom DEV. Výsledky sa nepoužijú na ladenie tejto verzie. Všetkých 320 pôvodných historických otázok sa meria oddelene ako regresia; jej prekryv s modelovým DEV je priznaný.

Zmrazenie a nasadenie

frozen_v7.json viaže implementáciu, raw Markdown, dataset, JSON vstupy, graf, publikačnú politiku a parametre. Deklarácia frozen_answers.json navyše fixuje model, prompt, renderer a presné ID merania. Kompletný frozen_release_v7.json pokrýva všetky runtime moduly a merané artefakty.

Docker sa overuje cez /health, reálne /rag, grafové pozitívne aj negatívne dotazy, novú rokovú regresiu a chýbajúci začiatok štúdia. JSON, SQLite a Neo4j majú spoločnú generáciu po /sync s pull_git=false. Publikačná politika ostáva: iba explicitné published=false sa vylúči.

Príkazy

Konfiguráciu načítajte z prostredia bez jej vypisovania. Pri reprodukcii vždy používajte nové výstupné cesty; existujúce otázky a merania neprepisujte.

# Jednorazové vyhlásenie benchmarku; hotový dataset neregenerovať.
python -m tools.graphrag.evaluation.benchmark_v7

RUN_NEO4J_TESTS=1 RUN_LIVE_TESTS=1 RUN_LIVE_RAG_E2E=1 \
  HF_HUB_OFFLINE=1 TRANSFORMERS_OFFLINE=1 python -m pytest -q

python -m tools.graphrag.evaluation.evaluate_graphrag \
  --questions tools/graphrag/evaluation/graphrag_questions_v7.json --split dev \
  --audit tools/graphrag/evaluation/results/v7_preparation/source_audit.json \
  --output-dir NOVY_GRAF_DEV
python -m tools.graphrag.evaluation.freeze_graphrag \
  --questions tools/graphrag/evaluation/graphrag_questions_v7.json \
  --dev-results NOVY_GRAF_DEV/graphrag_dev.json \
  --audit tools/graphrag/evaluation/results/v7_preparation/source_audit.json \
  --purpose independent_holdout --output NOVY_MANIFEST.json
python -m tools.graphrag.evaluation.evaluate_graphrag \
  --questions tools/graphrag/evaluation/graphrag_questions_v7.json --split test \
  --audit tools/graphrag/evaluation/results/v7_preparation/source_audit.json \
  --freeze-manifest NOVY_MANIFEST.json --output-dir NOVY_GRAF_DEV

python -m tools.answer_evaluation.evaluate_graph_answers \
  --questions tools/graphrag/evaluation/graphrag_questions_v7.json \
  --audit tools/graphrag/evaluation/results/v7_preparation/source_audit.json \
  --freeze-manifest NOVY_MANIFEST.json \
  --dev-ids tools/graphrag/evaluation/results/v7_preparation/generation_dev_ids.json \
  --split dev --output-dir NOVY_LLM_DEV

Pre nový TEST použite tie isté parametre, --split test, --dev-results NOVY_LLM_DEV/answers_dev.json a nový výstupný adresár. Pri historickej regresii použite --split regression a navyše --regression-ids tools/graphrag/evaluation/results/v7_preparation/regression_ids.json. Opakovaný beh už odhaleného TESTu je reprodukcia/regresia, nie ďalší nezávislý experiment. Po ladení podľa TESTu treba nový vopred deklarovaný TEST.

Kompletné výsledky a zostávajúce metodické obmedzenia sú v správe v7. Ďalší blok je natívna integrácia nástrojov a hlavného agenta v OpenWebUI.