trénink přes Trainer, batch sampler bez duplicit dotazů

Váš RAG hledá jak turista. Multi-vektorové embeddingy to umí desetkrát líp — a doladíte je doma za víkend
Zkuste si jednoduchý experiment. Vezměte stostránkové PDF s technickou dokumentací a popište ho jednou větou. To přesně dělá klasický bi-encoder, když zmáčkne celý dokument do jednoho vektoru o 768 dimenzích. Překvapení pak trvá přesně do chvíle, kdy si zákazník postěžuje, že vyhledávání v jeho firemní znalostní bázi je loterie. Řešení existuje od roku 2020 a jmenuje se ColBERT: místo jednoho vektoru na dokument máte vektor pro každý token. Dlouho to byla akademická záležitost s netriviálním tréninkem. Od květnu 2025 to umí knihovna Sentence Transformers ve verzi 5.0 přímo z krabice, na pár desítek řádků kódu. A stejná filozofie — malý doladěný model šlape velký obecný — letos znamenala i to, že 350milionový model doladěný stovkou kroků GRPO porazil v generatingu strukturovaných výstupů modely desetkrát větší.
Jedno číslo na dokument je jako popsat film plakátem
Nejdřív rychlá teorie, bez které ztratíte půlku obrázku. Klasické embedding modely (E5, BGE, GTE, all-MiniLM) spadnou text do jednoho bodu ve vektorovém prostoru. Hledání pak spočívá v cosines podobnosti mezi dotazem a dokumentem. Je to rychlé a indexy jsou malé. Jenže veškerá sémantika se tlačí do jednoho čísla řady.
Multi-vektorové modely, jejichž otcem je ColBERT Omara Khattaba ze Stanfordu, fungují jinak. Každý token dostane vlastní embedding, typicky o 128 dimenzích. Při hledání se pak počítá tzv. late interaction: pro každý token dotazu najdete nejpodobnější token dokumentu (operátor MaxSim) a výsledky se sečtou. Dotaz „kdy platí záloha za elektřinu" si tak najde přesně ten odstavec, kde se o zálohách mluví, i když dokument celkově pojednává o něčem jiném.
Kolik to stojí? Řádově padesátkrát větší index. Jeden vektor 768 dimenzí v FP16 zabere 1,5 kB. Tři sta tokenů po 128 dimenzích už 77 kB. ColBERTv2 to z části řeší reziduální kompresí a knihovna PLAID dotahuje rychlost dotazů do praktických čísel. Odměnou je přesnost: model answerai-colbert-small-v1 s pouhými 33 miliony parametrů na benchmarku BEIR poráží embeddery desetkrát větší. Malé modely doladěné pro konkrétní doménu prostě nejedí velké obecné pagaje k snídani.
Sentence Transformers 5: ColBERT na třicet řádků
Přichází květen 2025 a Sentence Transformers 5.0 přidává nativní podporu vícevektorových modelů — trénink, evaluaci i inferenci. Žádné hackování přes RAGatouille nebo originální ColBERT repozitář, kde se člověk topil v konfiguracích.
Základní trénink vypadá takhle:
```python from sentence_transformers import SentenceTransformer, InputExample from sentence_transformers.losses import ColBERTNCAELoss from sentence_transformers.training_args import BatchSamplers
model = SentenceTransformer("answerai/colbert-small-v1") loss = ColBERTNCAELoss(model)
train_examples = [ InputExample(texts=[dotaz, relevantní_odstavec]), InputExample(texts=[dotaz2, relevantní_odstavec2]), ] ```
Klíčová věc je volba loss funkce. `ColBERTNCAELoss` je dedikovaná pro late interaction. Pro klasické bi-encodery pak `CachedMultipleNegativesRankingLoss` dovolí dávkové velikosti až 16 384 díky gradientnímu cachování — víc negativů v batchi znamená výrazně lepší model. Data sbíráte ve formátu dotaz–pozitiv–negativ. Pozitivy snadno syntetizujte větším LLM, tvrdé negativy vytáhnite z vlastní databáze jako dokumenty, které klasický retriever vrátil, ale anotátor je odmítl.
Bez evaluace jdete naslepo. `InformationRetrievalEvaluator` vám spočítá NDCG@10 na vlastní sadě dotazů. Pravidlo z praxe: pokud doladění na vašich datech nepřinese alespoň pět bodů NDCG navíc oproti hotovému modelu, nevyplatilo se a vracíte se k základu.
Chcete ušetřit na energiích?
Zjistěte, kolik můžete ušetřit sdílením elektřiny z FVE nebo optimalizací bateriového úložiště.
Spočítat úsporu →Kolik to stojí: od Colabu po 4090
Teď čísla, na která se ptá každý. Nejekonomičtější cesta je Google Colab: verze zdarma vám dá T4 s 16 GB VRAM, což na doladění 33milionového ColBERTu se Snowball LoRA bohatě stačí. Colab Pro za 10 dolarů měsíčně přidá lepší GPU a delší sezení. Pro serióznější trénink si proněměte GPU u RunPod — RTX 4090 vyjde zhruba na 0,35 až 0,70 dolaru za hodinu, A100 80 GB kolem 1,5 až 1,9 dolaru. Typický doladěcí běh na vlastním korpusu deseti až sta tisíc párů zabere dvě až osm hodin. Počítejte tedy 50 až 500 korun za experiment.
Máte doma grafiku? Použitá RTX 3060 12 GB stojí kolem 9 tisíc korun a na embeddingy vystačí. RTX 4090 je za 45 až 60 tisíc korun luxus, který se vrátí jen při pravidelném tréninku. Nezapomeňte na elektřinu: celonoční trénink na 450 wattech vás přijde zhruba na 50 korun. To není cena, to je drobné.
Úskalí číslo jedna je paměť pro inferenci multi-vektorových modelů. Vektorové databáze (Qdrant, Weaviate, Milvus) umí multi-vektory, ale počítejte index desetkrát až padesátkrát větší než u klasiky. Pro milion odstávců počítejte desítky GB v FP16. Kompresí do int8 klesne spotřeba čtyřikrát, PLAID formáty ještě níž. Pokud na to nemáte stroj, zůstaňte u bi-encoderu a investujte čas do lepších dat.
Sto kroků GRPO aneb malý model, který překvapil
Druhá polovina roku 2025 přinesla pěkný důkaz, že velikost není všechno: 350milionový jazykový model doladěný metodou GRPO na pouhých 100 tréninkových krocích generoval strukturované JSON výstupy spolehlivěji než mnohem větší obecné modely. GRPO — Group Relative Policy Optimization — je technika, kterou DeepSeek proslavil při tréninku R1. Místo klasického RLHF s modelem odměny porovnává skupinu odpovědí stejného modelu a posiluje ty lepší podle programovatelné odměnové funkce.
V praxi to znamená: vezmete Qwen2.5-0.5B, napíšete odměnu, která dává bod za validní JSON odpovídající schématu, a pustíte `GRPOTrainer` z knihovny TRL. Sto kroků s LoRA na jedné GPU zabere odpoledne a stojí korunu navíc k elektřině. Žádný tým anotátorů, žádný cluster.
Proč to zmiňuji v článku o embeddingech? Protože je to tutéž lekci. Doladěný malý specialista poráží obecného velikána v úzké úloze. Platí pro jazykové modely, platí pro retrievery, platí pro klasifikátory. Než si koupíte další API klíč k desetkrát většímu modelu, zkuste stovku kroků doladění nad tím, co už máte. Budete překvapen, kolik peněz jste doposud rozdávali za tokeny, které nepotřebujete.
Paměť pro kódovací agenty, kterou vlastníte vy
Třetí trend, který letos nabral rychlost: kódovací agenti s lokální pamětí. Cursor, Copilot i Claude Code si historii vaší práce ukládají do svých cloudů. Když změníte předplatné, mění se i to, co agent ví o vašem projektu. Řešením je vlastní paměť postavená právě na embeddingech: ChromaDB nebo LanceDB na disku, embedding model přes Ollama (nomic-embed-text, snowflake-arctic-embed), a pár stovek řádků kódu, které shrnují každou relaci agenta do vektorů.
Výsledná architektura je prostá. Po každém tasku agent zapíše shrnutí — co se pokazilo, jaké byly nápady, co fungovalo. Při dalším úkolu se dotaz embedded a relevantní vzpomínky se vstříknou do kontextu. Projekt Letta (dříve MemGPT) nebo Mem0 toto dělají jako produkt, ale základ zvládnete sami za víkend.
A tady se vrací multi-vektorové vyhledávání na scénu. Kód je zrnitý: důležitý je řádek, ne celý soubor. Token-level embeddingy paměťového store najdou přesně tu funkci, kterou jste před měsícem psali stejným stylem, zatímco bi-encoder vrátí pěknou náhodnou směs. Bonus je právní a praktický zároveň: nic neopouští váš disk, což oceníte u klientského kódu pod NDA nebo v EU, kde GDPR na cloudy s tréninkovými daty klade ostřejší otázky, než by většina vendorů ráda slyšela.
Tmavá strana: když stejná technologie pracuje pro nudify
Ne všechno je růžové a upřímný článek to musí říct. Na podzim se dostal na světlo světa skandál, který shrnuje dvojnрудnost open-source AI: Meta schvalovala a zobrazovala reklamy na aplikace generující nahé fotky — s cílením, které zasáhlo i skutečné dospívající. Jedna z reklam nesla nápadný slogan o tom, že jde o „AI, kterou muži skutečně používají". Základní modely a techniky za těmito aplikacemi jsou dostupné každému, kdo umí číst dokumentaci na Hugging Face.
Stejné embeddingy ovšem pracují i na druhé straně barikády. Detekce zneužití fotek dětí (Google CSAI Match, nástroje organizace Thorn) stojí na podobných principech — porovnávání vektorových reprezentací obsahu. Vektorové databáze se používají na sítění generovaného obsahu, odhalování duplicit a boj s dezinformacemi. Technologie je neutrální, rozdíl je v tom, kdo ji nasadí a jaké má regulace. Připomíná to debatu o komunitní energetice: sdílení elektřiny je skvělý koncept, ale bez pravidel a technické rovnováhy se z něj stane chaos. O tom, jak vypadá fungující regulované sdílení v praxi, se ostatně píše na Sdílení energie i na BESS Global Blog — a obojí stojí na stejném principu: otevřený přístup plus zodpovědnost.
Pro vývojáře z toho plyne jedno: pokud publikujete open modely nebo datasety, počítejte s tím, že je někdo použije k hnusným věcem. Dokumentujte zamýšlené použití, přidejte licenční omezení a alespoň základní filtry. Svatá inklance to nezachrání, ale pár nejméně chytrostních zneužití zastaví.
Embeddingy v energetice: kde to u nás reálně hodí
Asi se ptáte, co to všechno má společného s českou praxí. Víc, než by se zdálo. Energetika je odvětví posekané dokumenty: legislativa, distribuční podmínky, cenová rozhodnutí ERÚ, datasety z měření. Semantické vyhledávání nad těmito texty je přesně ta úloha, kde doladěný embedding model na stovech dotazů od poradců udělá z chatbota nástroj místo hořkého vtipu. Kdo řeší energetické poradenství nebo provozuje IoT monitoring desítek tisíc měřicích bodů, dřív nebo později narazí na potřebu hledat v telemetri
Obchodujete s batteriovými úložišti nebo hledáte partnera pro flexibilitu a day trading elektřiny? SmartEnergyShare nabízí kompletní řešení pro BESS projekty od 50 do 250 kW — obchodování flexibility, SVR služby a IoT monitoring. Zjistěte víc →
Další články na toto téma najdete na: SmartEnergyShare.info Co jsou multi-vector embeddingy a proč je potřebujete Vice o vllm v0