# 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. ```bash # 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](../tools/graphrag/evaluation/results/final_v7_2026-10-26/REPORT.md). Ďalší blok je natívna integrácia nástrojov a hlavného agenta v OpenWebUI.