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

134 lines
7.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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