134 lines
7.7 KiB
Markdown
134 lines
7.7 KiB
Markdown
# 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.
|