Embedding
Úvod: čo je embedding a prečo je kľúčový
Embedding je číselný vektor, ktorý reprezentuje text (slovo, vetu, odsek, dokument) v kontinuitnom priestore tak, aby geometrická blízkosť vektorov korelovala so sémantickou príbuznosťou. V modernom SEO, AIO/AEO a LLM optimalizácii webov umožňuje presné párovanie úmyslu používateľa s obsahom aj pri synonymách, parafrázach či viacjazyčných dotazoch. Embeddingy sú základom pre RAG (Retrieval-Augmented Generation), deduplikáciu, klasifikáciu, klastrovanie a odporúčanie obsahu.
Pojmový rámec a terminológia
- Vstup: tokenizovaný text (slová/subwordy/znaky), prípadne multimodálne vstupy (obrázky, zvuk).
- Model: neurónová sieť trénovaná na úlohe kontrastívneho učenia alebo jazykového modelovania.
- Vektor: reálne čísla dĺžky d (napr. 384, 768, 1024…), často v jednotkovej norme.
- Podobnosť: číselné skóre vyjadrujúce blízkosť (kosínus, skalárny súčin, L2 vzdialenosť).
- ANN index: dátová štruktúra na rýchle vyhľadanie najbližších susedov v priestore embeddingov.
Matematické základy: vektorový priestor a metriky
Nech u, v ∈ ℝd sú embeddingy. Používané metriky a transformácie:
- Kosínusová podobnosť:
cos(u,v) = (u·v) / (||u|| · ||v||). Invariantná voči škálu; meria uhol medzi vektormi. - Skalárny súčin:
u·v. Rýchly, ale závislý od normy; často sa kombinuje s normalizáciou. - Euclidovská vzdialenosť (L2):
||u−v||2. Vhodná, ak sú vektory normalizované. - Väzba metriky a normalizácie: ak
||u||=||v||=1, potomcos(u,v) = 1 − (1/2)||u−v||2.
Distribúcie: Vektory z moderných modelov majú pseudo-gaussovské rozdelenie komponentov a tendenciu k koncentrácii mier; preto je dôležité porovnávať skóre v rámci tej istej domény/modelu a používať kalibráciu prahov.
Normalizácia, škálovanie a centrálna limitácia chýb
- L2-normalizácia: transformácia
u ← u / ||u||zabezpečí robustnosť voči dĺžke textu a stabilitu kosínusovej metriky. - Mean-centering: odčítanie globálneho priemeru komponentov môže potlačiť dominantné smery (tzv. „common component removal“).
- Outlier handling: klipovanie komponentov (napr. na ±3σ) znižuje vplyv extrémov pri ANN indexácii.
- Skórovacia kalibrácia: používajte validačné sady a isotonic regression alebo prahovanie podľa požadovanej presnosti/recall.
Dimenzionalita, kompresia a trade-offy
- Vysoká dimenzia (≥768): vyššia presnosť, ale väčšia pamäť, pomalšie ANN.
- Nižšia dimenzia (256–512): rýchlosť a nižšie náklady, mierna strata presnosti.
- PCA/OPQ: lineárna redukcia dimenzie; Product Quantization (PQ) výrazne šetrí RAM s akceptovateľným poklesom kvality.
- Float16/Int8: kvantizácia pre inferenciu aj skladovanie indexu (latencia ↔ presnosť).
Tvorba embeddingov: vstupy, tokeny, kontext
- Granularita: generujte vektory pre vety/odseky/stránky podľa použitia. Pre vyhľadávanie RAG je optimálny odsek (100–300 slov).
- Predspracovanie: odstrániť boilerplate, navigáciu, skrýť šum; zachovať kľúčové entity, čísla a jednotky (
%,€). - Promptované odtiene: pre dotazy (query) a dokumenty (passage) môže model používať rozdielne hlavy; dodržte odporúčaný režim.
- Stabilita: verziujte model, tokenizer a parametre (dimenzia, normalizácia), aby boli výsledky reprodukovateľné.
Multijazyčnosť, doménové prispôsobenie a drift
- Multilingual: viacjazyčné embeddingy mapujú výrazy z rôznych jazykov do spoločného priestoru; vhodné pre .com domény a medzinárodné SEO.
- Domain adaptation: doplnkové tréningy na vlastnom korpuse (kontrastívne páry Q–A, titulok–odsek) výrazne zlepšia presnosť.
- Model drift: sledovať posun skóre v čase (posuv distribúcií); pri redeploye udržať dvojitý index a postupnú migráciu.
Chunkovanie dokumentov a okno kontextu
- Veľkosť chunku: 200–400 tokenov pre všeobecné texty; dlhšie pre technické dokumenty s rovnicami/tabuľkami.
- Prekryv: 10–20 % znižuje riziko straty súvisu na hranách chunkov.
- Kotvy: každý chunk má URL fragment
#id, aby asistenti citovali konkrétnu pasáž.
Indexovanie a vyhľadávanie: ANN, HNSW, IVF, PQ
- HNSW (Hierarchical Navigable Small World): vynikajúci pomer presnosť/latencia; pamäťovo náročnejší. Parametre:
M,efConstruction,efSearch. - IVF (Inverted File Index): k-means centrá; rýchly pri veľkých korpusoch, dobre sa kombinuje s PQ.
- PQ/OPQ: kvantizácia vektorov do subprostorov; znižuje pamäť aj I/O.
- Flat (brute-force): maximálna presnosť, vhodný pre malé kolekcie alebo ako gold štandard.
- Škálovanie: horizontálne shardy podľa hashovania alebo podľa clusterov tém; repliky pre vysokú dostupnosť.
Hybridné vyhľadávanie: BM25 × vektorová podobnosť
Kombinácia lexikálneho skóre (BM25) a sémantickej podobnosti rieši prípady, keď chýbajú kľúčové entity v texte dotazu alebo dokumentu.
- Skórovacia fúzia:
score = λ · rankBM25 + (1−λ) · rankVec(Reciprocal Rank Fusion alebo z-score normalizácia). - Fail-safe: ak vektorová zložka nenájde relevantné výsledky, vráťte top-N BM25.
Reranking, filtrácia a metadáta
- Rerank modeli: cross-encoder (drahší, presný) na top-100 kandidátov z ANN.
- Filtre: štruktúrované metadáta (jazyk, dátum, typ obsahu) uplatnite pred/po ANN.
- De-dup: blízke duplikáty identifikujte prahom kosínu (napr. > 0,95 po L2 normalizácii).
Embeddings v RAG pipeline pre ChatGPT/LLM
- Ingest: crawling, extrakcia textu, čistenie, chunkovanie, generovanie embeddingov + metadát.
- Recall: ANN vyhľadanie top-K pasáží; voliteľne hybrid s BM25.
- Rerank: cross-encoder pre top-K, odstránenie redundancie (MMR – Maximal Marginal Relevance).
- Skladba promptu: výber top-M pasáží pod rozumný limit tokenov; doplnenie citácií (URL#id).
- Odpoveď: generácia + postprocessing (zdroje, dátumy, jednotky); logging pre observabilitu.
Hodnotenie: Recall@k, MRR, nDCG, A/B
- Recall@k: podiel otázok, pre ktoré sa relevantná pasáž objaví v top-k.
- MRR: priemerná inverzná pozícia prvého relevantného výsledku.
- nDCG: hodnotí poradie s rôznou dôležitosťou pasáží (graded relevance).
- Answer-level metriky: presnosť odpovede po RAG (Exact Match, F1), ľudské hodnotenia.
- A/B: porovnanie modelov, dimenzií, prahov, hybridnej fúzie na reálnej prevádzke.
Prevádzka: latencia, cache, náklady a škálovanie
- Cache: LRU cache na embeddings dotazov; výsledky ANN cacheujte pre hot queries.
- Batching: dávkovanie pri generovaní embeddingov výrazne znižuje cenu na 1k tokenov.
- Streaming aktualizácií: near-real-time indexácia cez „delta index“ a pravidelné merge.
- Monitoring: latencia P50/P95, chybovosť, veľkosť indexu, drift skóre, Recall@k na kanáloch.
Bezpečnosť, súkromie a súlad (GDPR)
- PII minimalizmus: osobné údaje hashing/anonymizácia pred generovaním embeddingov.
- Právo na výmaz: udržiavajte mapu dokument → vektory → index; umožnite rýchle vyradenie a re-build.
- Scope kontrola: oddelené indexy pre „interné“ vs. „verejné“ dáta; autorizácia nad výsledkami vyhľadávania.
- Licencie: rešpektujte licenčné podmienky zdrojov pri ingestovaní obsahu do vektorového indexu.
Antivzory a diagnostika problémov
- Zmiešané verzie modelu: v jednom indexe vektory z r0 a r1 – skóre neporovnateľné; vždy verziujte a migrujte dávkovo.
- Príliš dlhé chunky: „rozmazaná“ reprezentácia, nízka presnosť; zmenšite a pridajte prekryv.
- Bez normalizácie: dĺžky dokumentov dominujú skóre; použite L2.
- Chýbajú metadáta: nemožnosť filtrovať podľa jazyka, dátumu, typu – slabé výsledky pre intent.
- Nezmyselné prahy: globálny prah pre rôzne domény; kalibrujte lokálne.
Best practices a implementačný checklist
- Vyberte model podľa jazyka/domény a stanovte dimenziu s ohľadom na náklady.
- Zaveďte konzistentnú L2-normalizáciu a verziovanie (model, tokenizer, dim, normalizácia).
- Chunkujte obsah (200–400 tokenov), s 10–20 % prekryvom a kotvami
#id. - Indexujte v HNSW alebo IVF-PQ podľa veľkosti korpusu; logujte parametre.
- Zapnite hybridné vyhľadávanie a cross-encoder reranking na top-100.
- Hodnoťte Recall@10, MRR, nDCG; sledujte answer-level metriky po RAG.
- Zabezpečte PII sanitizáciu, právo na výmaz a oddelené indexy podľa prístupových práv.
- Monitorujte drift a pravidelne re-embeddujte dynamické časti obsahu.
Prílohy: príklady schém a výpočtov
Príklad JSON metadát jedného chunku:
{ "doc_id": "manuál-123", "chunk_id": "manuál-123#c07", "lang": "sk", "title": "Inštalácia – kroky", "created_at": "2025-09-15", "updated_at": "2025-10-01", "entities": ["ProduktX", "Windows 11"], "hash": "sha256:…", "license": "CC BY 4.0", "url": "https://example.com/navod#c07" }
Kalibrácia prahu podobnosti: z validačnej sady vypočítajte distribúciu cos(u,v) pre pozitívne/negatívne páry a vyberte prah τ tak, aby maximalizoval F1 alebo splnil požadovaný precision (napr. 0,9).
MMR výber pasáží: iteratívne vyberajte pasáže, ktoré maximalizujú λ · sim(q, p) − (1−λ) · maxp'∈S sim(p, p'), čím znižujete redundanciu.