103 lines
4.9 KiB
Markdown
103 lines
4.9 KiB
Markdown
# Publikovanie dokumentov a dostupnosť nástrojov
|
|
|
|
## Jednotná politika
|
|
|
|
Používateľ zvolil zahrnutie dokumentov bez `published`. RAG aj GraphRAG preto
|
|
predvolene používajú `published_only=true` s týmto významom:
|
|
|
|
| Hodnota zdroja | Predvolené vyhľadávanie |
|
|
|---|---|
|
|
| `published: true` | Zahrnúť |
|
|
| Chýbajúce `published` alebo normalizované `null` | Zahrnúť |
|
|
| `published: false` | Vylúčiť |
|
|
|
|
Chýbajúca hodnota zodpovedá predvolenému významu príznaku v
|
|
[Grav](https://learn.getgrav.org/2/content/headers). Táto politika určuje
|
|
výber podľa `published`; API naďalej používa svoju existujúcu autentifikáciu.
|
|
V aktuálnom korpuse nie sú nastavené `publish_date` ani `unpublish_date`.
|
|
|
|
SQL používa `COALESCE(published, 1) = 1`, graf efektívnu publikačnú hodnotu.
|
|
Zdrojový JSON a SQLite zachovávajú pôvodné `null`; grafový builder ho
|
|
normalizuje na efektívne `true`. Všetkých 16 pôvodne neoznačených dokumentov
|
|
je teda dostupných v oboch vetvách. Jeden explicitne nepublikovaný dokument
|
|
sa predvolene vylúči.
|
|
|
|
Pri RAG sa filter aplikuje na FTS, embeddingy aj všetky rozšírenia kontextu.
|
|
Pri grafe platí pre katalóg entít, fakty, spoločné vlastnosti, počítanie,
|
|
prechádzanie grafu a zoznam zdrojov. Entity doložené iba skrytými dokumentmi
|
|
sa nezaradia do verejného katalógu. Pôvod názvu témy a canonical profilu
|
|
osoby sa kontroluje podľa príslušného zdrojového dokumentu.
|
|
|
|
Výslovné zahrnutie nepublikovaných dokumentov pre autorizované volanie:
|
|
|
|
```json
|
|
{"query": "vyhľadávací dotaz", "published_only": false}
|
|
```
|
|
|
|
Python funkcie používajú rovnaký parameter `published_only=False`.
|
|
Oba vyhľadávacie CLI podporujú `--include-unpublished`. Pred pripojením
|
|
nástrojov do OpenWebUI sa používa aktuálna OpenAPI schéma s novým defaultom.
|
|
|
|
## Migrácia uloženého grafu
|
|
|
|
Po nasadení sa vykoná spoločná synchronizácia. Tá opraví staré zamenenie
|
|
chýbajúcej hodnoty s `false` a doplní pôvod názvu témy. Verzia indexov obsahuje
|
|
`publication_policy: explicit-false-hidden-v1`. Pred migráciou predvolené
|
|
grafové vyhľadávanie vyžaduje synchronizáciu a health uvádza
|
|
`publication_sync_required`. Existujúce historické merania sa neprepisujú;
|
|
časť klasického baseline používala aj nepublikované dokumenty.
|
|
|
|
## `/health`
|
|
|
|
HTTP 200 a `status=ok` označujú živý API proces. `ready` znamená pripravenosť
|
|
oboch vyhľadávacích nástrojov. Klient/agenta pri výbere konkrétneho nástroja
|
|
zaujímajú samostatné položky `tools`:
|
|
|
|
- `tools.rag`: čitateľný SQLite/FTS5/embedding index, zhoda verzie a známa
|
|
úspešná inicializácia embeddingového modelu. Úspešné vyhľadanie alebo sync
|
|
obnoví stav modelu po prípadnom zlyhaní inicializácie.
|
|
- `tools.neo4j`: dostupné spojenie a vykonanie read-only sondy v databáze.
|
|
Sonda používa krátke časové limity a nevykonáva automatické opakovania transakcií.
|
|
- `tools.graphrag`: dostupné Neo4j, neprázdny graf, zhodná generácia dát
|
|
a migrovaná publikačná politika.
|
|
|
|
Výpadok Neo4j nespôsobí nedostupnosť RAG. Neplatný SQLite index môže vyradiť
|
|
RAG, pričom graf ostane dostupný. Počas nejasného prepnutia generácie sa
|
|
vyhľadávacie nástroje označia ako nedostupné; stav samotného Neo4j sa uvádza
|
|
samostatne. Odpovede neobsahujú prihlasovacie údaje ani surové chyby drivera.
|
|
|
|
Príklad výpadku Neo4j, skrátený na rozhodujúce polia:
|
|
|
|
```json
|
|
{
|
|
"status": "ok",
|
|
"ready": false,
|
|
"tools": {
|
|
"rag": {"ready": true, "status": "ready", "reason": null},
|
|
"neo4j": {"ready": false, "status": "unavailable", "reason": "unreachable"},
|
|
"graphrag": {"ready": false, "status": "unavailable", "reason": "neo4j_unavailable"}
|
|
}
|
|
}
|
|
```
|
|
|
|
Ide o dostupnosť retrieval nástrojov. Health neposiela otázky školskému LLM
|
|
a nemeria dostupnosť externého generatívneho modelu ani presnosť odpovedí.
|
|
|
|
## Overenie nasadenia 25. 10. 2026
|
|
|
|
- Kompletná regresná sada: **485 úspešných testov, 4 preskočené**. Zahŕňa
|
|
skutočné Cypher testy filtrovania, agregácie a grafových prechodov nad
|
|
izolovaným Neo4j grafom s rollbackom.
|
|
- Docker image bol znovu zostavený a API nasadené. Autentifikovaný `/sync`
|
|
bez Git pullu obnovil 114 dokumentov, 887 chunkov a graf 447 uzlov/879 vzťahov.
|
|
- Reálne `/search`, `/rag` a `search_graph()` overili predvolené vylúčenie
|
|
skrytého dokumentu aj jeho zahrnutie pri `published_only=false`.
|
|
- HTTP `/health` hlási všetky tri stavy pripravené; SQLite, súborová verzia
|
|
a Neo4j používajú rovnakú novú generáciu dát.
|
|
- Sonda s nefunkčnou adresou Neo4j potvrdila dostupnosť RAG pri nedostupnom
|
|
grafe. Sonda s chýbajúcim SQLite indexom potvrdila dostupnosť grafu pri
|
|
nedostupnom RAG. Produkčné služby sa pri týchto sondách nevypínali.
|
|
|
|
Strojovo čitateľný výsledok a identifikácia dát:
|
|
[publikovanie_a_dostupnost_overenie.json](publikovanie_a_dostupnost_overenie.json).
|