Agent pre manažment záverečných prác
Go to file
jp170na 674d466807 Úprava README
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-14 03:34:37 +01:00
app oprava opewebui 2026-08-15 01:52:06 +02:00
evaluation RAG baseline (mozno sa bude este zlepsovat) 2026-09-29 12:22:44 +02:00
scripts RAG baseline (mozno sa bude este zlepsovat) 2026-09-29 12:22:44 +02:00
test new test 2026-09-28 02:24:14 +02:00
.dockerignore Zlepšenia 2026-07-28 23:56:03 +02:00
.gitignore remove Windows Zone.Identifier files 2026-09-27 14:58:54 +02:00
docker-compose.yml upravy 2026-08-13 21:39:42 +02:00
Dockerfile Dockerfile 2026-08-15 00:59:53 +02:00
README.md Úprava README 2026-11-14 03:34:37 +01:00
requirements-dev.txt Zlepšenia 2026-07-28 23:56:03 +02:00
requirements.txt Hybrid vyhladavanie s embedding 2026-08-12 00:53:26 +02:00
run_e5_1_regression.sh pridanie e5 1 regression skriptu 2026-09-27 14:57:30 +02:00
run_e5_regression.sh pridanie e5 regression skriptu 2026-09-27 14:57:33 +02:00

ZP Agent

Backend, ktorý odpovedá na otázky o záverečných prácach z repozitára zpwiki (ZP Wiki, KEMT FEI TUKE). Vzniká v rámci práce Agent pre manažment záverečných prác.

Spracúva profily študentov, zadania a záznamy zo stretnutí a odpovedá na otázky o prácach, projektoch, vedúcich, témach, výsledkoch, rokoch a vzťahoch medzi študentmi. Každá odpoveď je overená a má odkazy na zdroj.

Ako funguje

  1. Synchronizácia – načíta Markdown a YAML metadáta z lokálnej kópie Git repozitára (ručne, webhookom z Gitea alebo automaticky každých 24 hodín).
  2. Indexovanie – rozdelí texty na úseky a z rovnakého snapshotu vytvorí textový, vektorový a grafový index. Nová verzia sa aktivuje až keď sú hotové všetky; pri chybe zostáva predchádzajúca.
  3. Porozumenie otázke – otázka sa preloží na typovaný plán (osoby, roly, práce, roky, obdobia, podmienky). Jednoznačné otázky plánujú pravidlá; nové formulácie priradí LLM k pevnému katalógu typov otázok. Model nikdy nepíše databázový dotaz.
  4. Vyhľadanie podkladov – podľa plánu sa hľadajú textové úseky alebo grafové fakty.
  5. Zostavenie odpovede – zoznamy, počty a metadáta skladá priamo kód; opisy a porovnania formuluje LLM výhradne z dodaných dôkazov.
  6. Kontrola pred odoslaním – backend overí osoby, práce, čísla a citácie a samostatné LLM volanie overí, že tvrdenia sú podložené. Neoverenú odpoveď nevydá; namiesto toho oznámi, že odpoveď nie je dostupná.

Pravidlá domény: autor profilovej stránky študenta je jeho vedúci (konvencia KEMT), rok práce nie je dátum stretnutia a zadanie ani plán sa nevydávajú za výsledok.

Vyhľadávanie

RAG – kombinuje fulltext BM25 a sémantické vyhľadávanie (embeddingy), výsledky spája metódou RRF. Osobu, typ práce a rok filtruje záväzne. Slovenské tvary slov zjednocuje lematizácia (Stanza) a poradie kandidátov spresňuje cross-encoder reranker. Hodí sa na otázky o obsahu, zadaní, metódach, priebehu a výsledkoch práce.

GraphRAG – pevné Cypher šablóny nad grafom v Neo4j (osoby, práce, témy, činnosti, dôkazy). Odpovedá na vzťahy: kto robil danú tému, podobní študenti, súvisiace témy, vedúci a ich študenti, roky a počty. Prepojenia dokladá výňatkami z oboch prác.

Obsahový graf – LLM z profilov extrahuje činnosti, pojmy a výsledky. Každý poznatok má doslovný výňatok, aktéra, konkrétnu prácu, fázu a dátum. Neisté poznatky sa ako fakty nepoužijú. Rovnaké pojmy v rôznych tvaroch sa automaticky zjednotia. Extrakciu spúšťa python -m tools.knowledge.build (vyžaduje nakonfigurované LLM API).

Použité technológie

  • Python, FastAPI, Pydantic – API, validácia vstupov a typované plány a odpovede.
  • SQLite + FTS5 – dokumenty, metadáta, fulltextový index, vektory a cache.
  • Sentence Transformers, multilingual-e5-small – viacjazyčné embeddingy.
  • Cross-encoder mmarco-mMiniLMv2 – preusporiadanie (reranking) nájdených podkladov.
  • Stanza – lematizácia slovenčiny.
  • Neo4j a Cypher – metadátový a obsahový graf.
  • OpenAI-kompatibilné LLM API – plánovanie nejasných otázok, formulácia a overenie odpovedí.
  • DSPy (offline) – optimalizácia inštrukcií a príkladov katalógu typov otázok.
  • Tiktoken – meranie a delenie textových úsekov.
  • MCP (FastMCP) a Claude Skills – nástroje /rag a /graphrag v Claude.
  • OAuth s PKCE, Cloudflare Tunnel – zabezpečený verejný prístup k MCP serveru.
  • Docker Compose – nasadenie API, Neo4j, MCP servera a tunela.
  • Git a Gitea webhooky – získavanie zmien zo ZP Wiki.
  • Pytest – testy funkcionality a regresie.

Priečinky

  • app/ – HTTP API (endpointy /answer, /graphrag, /health, synchronizácia) a zabezpečenie.
  • tools/rag/ – textové a vektorové vyhľadávanie.
  • tools/graphrag/ – metadátový graf a grafové dotazy.
  • tools/knowledge/ – obsahový graf: extrakcia poznatkov a ich vyhľadávanie.
  • tools/answers/ – plán otázky, zostavenie a kontrola odpovede.
  • tools/retrieval/ – spoločné vyhľadávacie pravidlá, mená, lematizácia, reranker.
  • tools/sync/ – synchronizácia s Git repozitárom a obnova indexov.
  • tools/git_runner/ – Gitea runner, ktorý dopĺňa fork jp170na/zpwiki z KEMT/zpwiki.
  • tools/runtime/ – príprava modelov a indexov pri štarte.
  • tools/claude/, packages/claude/ – zostavenie a hotové Claude Skills (dist/rag, dist/graphrag).
  • deployment/ – Dockerfile, Docker Compose a závislosti.
  • scripts/ – spúšťacie skripty.
  • test/, tools/*/tests/ – testy funkcionality jednotlivých služieb (plánovanie, vyhľadávanie, kontrola odpovedí, API, synchronizácia, balíky Claude).
  • data/ – lokálne dáta za behu (indexy, cache); nie sú v Gite.