Electric-Share.cz
Údržba

Vaše AI hledá špatně? Tohle ji naučíte na jediné grafické kartě

Vaše AI hledá špatně? Tohle ji naučíte na jediné grafické kartě - Údržba | SmartEnergyShare

Co je horší než AI, která nezná odpověď? AI, která najde návod k jinému střídači a sebevědomě podle něj poradí opravu. Podobné označení výrobku, jiná generace elektroniky. Stačí jeden přehlédnutý detail a pěkně napsaná odpověď je k ničemu.

Právě na takové detaily míří vícevektorové embeddingy. Místo jediného číselného otisku dokumentu uchovávají jemnější reprezentaci jeho obsahu. Sentence Transformers už nabízí nástroje pro jejich používání i dotrénování. Zajímavá část začíná tam, kde obecný vyhledávač přestává rozumět vašim servisním protokolům.

Vaše AI hledá špatně? Tohle ji naučíte na jediné grafické kartě

Tom Aarsen v srpnu 2026 zveřejnil praktický příklad: vícevektorový model pro lékařské vyhledávání dotrénoval za 14,5 hodiny na jediné RTX 3090. Špičková spotřeba grafické paměti dosáhla 17,5 GB. V jeho doménovém testu model překonal porovnávané obecné vyhledávače. To je doložený výsledek konkrétního experimentu, nikoli příslib stejného úspěchu nad českými manuály. Popis experimentu na Hugging Face.

Zásadní je rozdíl mezi dvěma úlohami. Generativní model skládá odpověď. Embeddingový model pomáhá vyhledat podklady. Pokud mu předložíte servisní otázku, má správný dokument posunout před texty, které pouze vypadají podobně. Žádné psaní slohovek. Spíš knihovník, který pozná rozdíl mezi bateriovým článkem a článkem na blogu.

Sentence Transformers 6.0 přidává pro tento přístup třídu `MultiVectorEncoder`. Můžete doladit hotový model nebo postavit vícevektorovou architekturu nad základním transformerem. Druhá cesta vyžaduje natrénovat také novou projekční vrstvu. Pouhé načtení základního modelu použitelný vyhledávač nezaručí. Dokumentace tréninku.

Pro první český experiment dává smysl prověřit vícejazyčný `lightonai/mLateOn`. Jeho výsledky ale změřte na vlastní češtině, zkratkách a katalozích. Vícejazyčnost na kartě modelu není záruční list na správné rozpoznání poruchového kódu.

Proč jeden vektor někdy nestačí

Běžný embeddingový vyhledávač převede úryvek na jeden vektor. Je to úsporné a rychlé. Jenže všechny informace musí vměstnat do společné reprezentace. U dotazu „střídač po aktualizaci hlásí chybu izolace pouze při dešti“ záleží na kombinaci několika podmínek. Obecná tematická podobnost nestačí.

Vícevektorový model zachovává reprezentace jednotlivých tokenů, tedy částí textu. Při vyhledávání používá například postup MaxSim: pro každý token dotazu najde nejpodobnější token dokumentu a nejlepší shody sečte. Dokumenty lze zpracovat předem, jejich podrobné porovnání s dotazem přichází později. Odtud označení pozdní interakce. Vysvětlení architektury.

Cena za jemnější porovnávání je vidět na jednoduchém výpočtu. Předpokládejme milion úryvků, každý s 200 uloženými tokenovými vektory o 128 rozměrech. Při dvoubajtovém uložení jedné hodnoty jde o 51,2 GB samotných vektorových dat. Bez metadat, indexu a provozní režie.

Milion jednotlivých vektorů o 768 rozměrech při stejném datovém typu zabere 1,536 GB. V tomto modelovém srovnání je rozdíl přibližně třiatřicetinásobný. Komprese a kratší úryvky mohou účet snížit, ale paměť nevykouzlíte marketingem.

Ani MaxSim neumí zaručit správné pochopení negace nebo přesného čísla. Identifikátor zařízení, platnost dokumentu a verzi firmwaru proto ukládejte také do metadat. Co lze spolehlivě filtrovat, není nutné nechat hádat neuronovou síť.

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 →

Nejdražší surovina jsou správně označená data

Pro pilot bych připravil 2 000 až 10 000 ověřených tréninkových trojic. Jde o pracovní návrh rozsahu, nikoli technické minimum. Každá trojice obsahuje dotaz, relevantní úryvek a zavádějící úryvek. Například otázku na poruchu konkrétního měniče, správný servisní postup a podobný postup pro jinou generaci zařízení.

Právě třetí položka rozhoduje. Náhodný recept na bábovku je snadný protivník. Manuál téměř stejného střídače už model donutí rozlišovat. Takovým příkladům se říká obtížné negativní vzorky. Pozor však na falešné negativní vzorky: dva odlišné dokumenty mohou na stejnou otázku odpovídat správně.

Data uložte například jako JSONL, jednu trojici na řádek:

```json {"dotaz":"Kde najdu postup pro model X2?","spravny":"Servisní postup pro model X2…","chybny":"Servisní postup pro starší model X1…"} ```

Jde jen o ukázku struktury. Skutečné úryvky musí obsahovat ověřitelné informace.

Tréninkovou, validační a testovací sadu oddělujte podle zdrojových dokumentů či produktových rodin. Náhodné rozdělení sousedních odstavců stejného manuálu vytváří krásné skóre a mizerné překvapení v provozu. Pro pilot navrhuji poměr 80 : 10 : 10, doplněný samostatnými dotazy na novější dokumentaci.

Zachovejte jednotky, tabulkové hlavičky a upozornění. Odstraňte opakované patičky. Úryvek „maximálně 16“ bez informace, zda jde o ampéry nebo počet modulů, je datový odpad v elegantním obalu.

Praktický trénink v Sentence Transformers

Příklad předpokládá Linux, prostředí Pythonu a funkční PyTorch s podporou vaší grafické karty. Nejdřív vytvořte oddělené prostředí. Následující příkazy instalují řadu Sentence Transformers 6:

```bash python3 -m venv .venv source .venv/bin/activate python -m pip install --upgrade "sentence-transformers[train]>=6,<7" python -c "import torch; print(torch.cuda.is_available())" ```

Poslední příkaz musí pro zamýšlený trénink na NVIDIA GPU vypsat `True`. Jinak nejdřív vyřešte ovladač a instalaci PyTorch.

Soubory `trenink.jsonl` a `validace.jsonl` připravte předem podle předchozí sekce. Následující skript je výchozí konfigurace, nikoli benchmark odladěný pro každou kartu:

```python import torch from datasets import load_dataset from sentence_transformers import ( MultiVectorEncoder, MultiVectorEncoderTrainer, MultiVectorEncoderTrainingArguments, ) from sentence_transformers.base.sampler import BatchSamplers from sentence_transformers.multi_vector_encoder.losses import ( MultiVectorMultipleNegativesRankingLoss, )

data = load_dataset( "json", data_files={ "train": "trenink.jsonl", "validation": "validace.jsonl", }, ) data = data.select_columns(["dotaz", "spravny", "chybny"])

model = MultiVectorEncoder("lightonai/mLateOn")

nastaveni = MultiVectorEncoderTrainingArguments( output_dir="vystup/udrzba", num_train_epochs=1, per_device_train_batch_size=4, per_device_eval_batch_size=4, learning_rate=2e-5, max_length={"query": 64, "document": 256}, bf16=torch.cuda.is_bf16_supported(), batch_sampler=BatchSamplers.NO_DUPLICATES, eval_strategy="epoch", save_strategy="epoch", save_total_limit=2, report_to="none", seed=42, )

trener = MultiVectorEncoderTrainer( model=model, args=nastaveni, train_dataset=data["train"], eval_dataset=data["validation"], loss=MultiVectorMultipleNegativesRankingLoss(model), ) trener.train() model.save_pretrained("vystup/udrzba/final") ```

Pořadí sloupců je podstatné: nejdřív dotaz, potom správný dokument a negativní příklad. Ostatní metadata do vstupních sloupců nepřimíchávejte. Tuto konvenci popisuje dokumentace datových sad.

Zvolená ztrátová funkce využívá jako negativní příklady také další dokumenty v dávce. `NO_DUPLICATES` omezuje duplicity, nepozná však všechny významově rovnocenné odpovědi. Dokumentace ztrátových funkcí.

Limit délky v tréninkových argumentech navíc automaticky nemění nastavení uloženého modelu pro následné vyhledávání. Délku vstupů při nasazení proto nastavte a ověřte zvlášť. Popis tréninkových argumentů.

Kolik stojí experiment a kdy pomůže LoRA

Výsledek na RTX 3090 ukazuje, že pro některé doménové experimenty není nutný server s osmi akcelerátory. Neznamená však, že stejná karta pojme libovolnou dávku a délku dokumentů. Spotřebu paměti ovlivňuje model, počet negativních příkladů, délka vstupů i způsob výpočtu skóre.

Při nedostatku paměti nejprve zkraťte dokumenty a zmenšete dávku. Pro větší efektivní dávky nabízí knihovna `CachedMultiVectorMultipleNegativesRankingLoss`, která používá ukládání mezivýsledků a další přepočty. Samotná akumulace gradientů nezajistí stejné množství vzájemně porovnávaných negativních příkladů jako velká kontrastivní dávka. Dokumentace ztrátových funkcí.

Další možnost představuje LoRA prostřednictvím knihovny PEFT. Aktualizuje malé přidané adaptéry místo všech původních vah. Sentence Transformers tento postup podporuje i pro vícevektorové modely. Šetří především trénovatelné parametry a související stav optimalizátoru; tokenové reprezentace stále něco stojí. Oficiální příklady LoRA.

Rozpočet počítejte otevřeně. Při předpokládané sazbě 20 Kč za hodinu GPU stojí patnáctihodinový běh 300 Kč. To je modelový výpočet, nikoli nabídka poskytovatele. Připočtěte úložiště, přenosy a opakované experimenty.

Doma by při průměrném příkonu celé sestavy 450 W stejný běh spotřeboval 6,75 kWh. Při modelové ceně 6 Kč/kWh jde o 40,50 Kč bez amortizace hardwaru. Největší položkou ale snadno bude práce: 2 000 kontrol po minutě znamená přes 33 hodin lidského času.

Vyhledávání musí obstát i podruhé a potřetí

Klesající tréninková ztráta ještě neznamená lepší servis. Připravte alespoň 200 až 500 nezávislých testovacích dotazů jako počáteční kontrolní sadu. Porovnejte slovní vyhledávání BM25, původní embeddingový model a dotrénovanou variantu. Všechny musí hledat ve stejných dokumentech a se stejnými přístupovými filtry.

Sledujte Recall@10: kolik relevantních podkladů systém najde mezi prvními deseti výsledky. Přidejte nDCG@10, které hodnotí také jejich pořadí. A měřte odezvu p95. Průměr umí schovat těch několik dotazů, při kterých technik stihne dojít pro kávu.

Zkuste překlepy, dotazy bez diakritiky, různé jednotky i otázky, na které korpus odpověď neobsahuje. Výsledky rozdělte podle typu zařízení. Celkové zlepšení může maskovat zhoršení u malé, ale provozně zásadní skupiny.

Pro nasazení je praktická dvoustupňová cesta. Levnější vyhledávač vybere třeba 100 kandidátů a vícevektorový model je přerovná. Otevřený Qdrant podporuje vícevektorová data a MaxSim; pro přerovnávací větev jeho návod ukazuje vypnutí HNSW pomocí `m=0`. Správný dokument však musí projít už prvním výběrem. Návod Qdrantu.

Ollama může v takové sestavě obsloužit následné generování odpovědi. Její běžné embeddingové rozhraní ale nelze automaticky zaměnit za tokenový výstup ColBERTu. Ověřte formát každé části systému. Dokumentace embeddingů Ollama.

Údržba znamená hlídat dokumenty, model i původ odpovědi

Zpráva Ars Technica ze září 2026 popsala údajný případ, kdy halucinovaná informace o čínském nákladu souvisejícím s jadernými zbraněmi málem vedla k americkému zásahu proti lodi. Jde o mediálně popsané tvrzení, nikoli důkaz, že by vícevektorové vyhledávání takové situaci zabránilo. Připomíná však cenu odpovědi bez ověřeného původu. Zpráva Ars Technica.

V údržbě energetiky je použitelný scénář mnohem přízemnější. Alarm z monitoringu doplníte modelem zařízení, verzí firmwaru a časem události. Vyhledávač nabídne relevantní servisní podklady. Technik vidí zdroj i jeho platnost. Takový návrh lze zasadit do prostředí, jaké popisuje IoT monitoring SmartEnergyShare; nejde o tvrzení, že služba tento model používá.

Provozní kontext poskytují také [řešení SES pro firmy](https://smartenergyshare.com/pro-firmy?utm_source=electric-share&utm_medium=referral&utm_campaign=satellite-marketing) a [obchodování flexibility](https://smartenergyshare.com/obchodovani-flexibility?utm_source=electric-share&utm_medium=referral&utm_campaign=satellite-marketing). Širší nabídku zastřešuje energetická platforma SES. K souvisejícím energetickým tématům patří i [SmartEnergyShare.cz](https://smartenergyshare.cz) a [SdíleníElektřiny.com](https://sdilenielektriny.com).

Každé vydání modelu spojte s verzí dat, seznamem závislostí a výsledky testů. Po změně vah vytvořte odpovídající nový index; staré dokumentové vektory nemíchejte automaticky s novými dotazovými. Uchovejte předchozí sestavu pro návrat.

Začněte jednou produktovou řadou a ověřenými otázkami. Nasazení schvalte až po měřitelném zlepšení. Vyhraje totiž systém, který správný manuál najde i po další aktualizaci, ne ten, který jednou předvedl nejhezčí odpověď.

Zdroje

Technický postup vychází především z dokumentace autorů použitých nástrojů. Ukázková konfigurace slouží jako výchozí bod; nebyla zde spuštěna nad konkrétní zákaznickou sadou. Rozpočty jsou transparentní výpočty s uvedenými předpoklady. Energetické zdroje níže doplňují kontext, nejsou dokladem přesnosti embeddingových modelů ani potvrzením jejich použití u uvedených služeb.

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.cz Vaše AI hledá špatně? Než koupíte větší model, opravte jí... Vice o training and