Mesh, nebo jeden router: šest měření, která rozhodnou o pokrytí bytu
Počet antén neříká, jestli signál projde do ložnice. O pokrytí rozhoduje RSSI a SNR v kritických místech, latence při zátěži a způsob propojení mesh uzlů.
RAG (retrieval-augmented generation) dovolí klást otázky nad vlastními dokumenty, aniž by text opustil váš počítač. Následující postup popisuje cestu od PDF k odpovědi lokálního modelu včetně nástrojů a nároků na hardware.
RAG (retrieval-augmented generation) stojí na třech krocích: převést dokumenty na číselné vektory, při dotazu najít nejpodobnější pasáže a vložit je do promptu jazykového modelu. Celý řetězec se dá provozovat na jednom počítači, aniž by jediný bajt textu odešel do cloudu – dokumenty zůstávají v lokální vektorové databázi a model odpovídá přes Ollamu nebo llama.cpp.
Pro anglické texty stačí all-MiniLM-L6-v2: 384 dimenzí, zhruba 80 MB, běží rychle i na CPU. Na češtinu je ale slabý, protože je trénovaný primárně na angličtině. Pro vícejazyčné dokumenty se používají modely jako intfloat/multilingual-e5-base (768 dimenzí), BAAI/bge-m3 (1024 dimenzí, kontext až 8192 tokenů) nebo mxbai-embed-large (1024 dimenzí). Přes Ollamu se stahují příkazem ollama pull nomic-embed-text (768 dimenzí) nebo mxbai-embed-large.
Důležité pravidlo: stejný model musí zpracovat jak indexované bloky, tak dotaz. Záměna modelů mezi fázemi rozbije podobnost vektorů a vyhledávání přestane fungovat.
Pro tisíce až desetitisíce bloků není potřeba žádný server. ChromaDB se instaluje přes pip, běží v procesu a data ukládá do lokální složky. FAISS od Facebooku je jen knihovna s indexy v paměti nebo na disku. Qdrant přináší HTTP API a filtrování podle metadat, což se hodí, když chcete omezit hledání na jeden dokument. LanceDB kombinuje vektorové a sloupcové úložiště. Všechny čtyři varianty zvládnou provoz bez internetu.
Nejjednodušší cesta je Ollama: ollama pull llama3.1:8b, qwen2.5:7b nebo gemma2:9b. Alternativami jsou llama.cpp s ručním nastavením vrstev na GPU (-ngl) a LM Studio s grafickým rozhraním. Modely se stahují v kvantizaci Q4_K_M, která u 7–8miliardového modelu zabere kolem 4–5 GB disku a stejně tolik paměti.
Embeddingy zvládne i slušný CPU, protože model je malý a běží dávkově. Nároky určuje LLM:
Vektorová databáze při desítkách tisíc bloků zabere stovky megabajtů, takže pro ni platí stejné nároky jako pro běžnou aplikaci.
Kdo nechce psát pipeline ručně, má tři rozumné volby. Open WebUI se připojí k Ollamě a umí nahrát dokumenty a dělat RAG přímo v rozhraní. AnythingLLM je desktopová aplikace s lokálním režimem a správou dokumentů. LlamaIndex a LangChain zůstávají volbou pro vlastní skripty v Pythonu, kde se hodí napojení na firemní systémy nebo vlastní chunkovací logika.
Kvalitu odpovědí určuje retrieval, ne model. Pokud chunk obsahuje dvě nesouvisející myšleni, embedding je rozostřený a dotaz ho nenajde. Podobně škodí chunk příliš velký – model sice dostane kontext, ale v promptu zabere místo a vytlačí ostatní bloky. U českých textů je nutné počítat s tím, že anglické embedding modely nerozliší pády a synonyma spolehlivě.
Druhý problém je halucinace: model bez výslovné instrukce si odpověď domyslí, i když v retrieved blocích není. Pomáhá systémový prompt typu „odpovídej pouze z dodaného kontextu, jinak napiš, že informace není k dispozici“ a vracení citací na konkrétní soubor a stranu.
Zálohu celého systému řeší prosté zkopírování složky s vektorovou databází a souborů modelů – žádná data nikam neodcházejí a obnovení na jiném stroji znamená přenést dvě složky.
Foto: Matheus Bertelli / Pexels
Počet antén neříká, jestli signál projde do ložnice. O pokrytí rozhoduje RSSI a SNR v kritických místech, latence při zátěži a způsob propojení mesh uzlů.