embedinkTakévector embedding, embedding vector, word embedding, vektorová reprezentacePokročilý
Definice
Embedding je číselná vektorová reprezentace objektu, například slova, věty, obrázku, produktu nebo uživatele, navržená tak, aby zachytila významové či statistické vztahy. Modely strojového učení s embeddingy počítají podobnost, řazení, doporučování a vyhledávání, protože podobné objekty leží vektorově blízko sebe.
Nezaměňujte: V umělé inteligenci embedding znamená vektorovou reprezentaci dat, zatímco ve webu může embedding znamenat vložení externího obsahu do stránky.
Proč se význam převádí na čísla
Embedding řeší praktický problém: model neumí přímo počítat se slovem, dokumentem, obrázkem ani uživatelem jako s lidským významem. Místo toho každý objekt převede na seznam čísel pevné délky. Čísla nejsou ručně pojmenované vlastnosti typu „barva“ nebo „téma“. Vznikají učením z dat, takže jednotlivé rozměry mohou nést směs více signálů. Důležité je chování celého vektoru: podobné vstupy mají mít podobné souřadnice.
U jazykových modelů se embedding často vytváří pro tokeny, věty nebo celé dokumenty. U doporučovacích systémů může embedding reprezentovat produkt, zákazníka nebo relaci. U multimodálních modelů mohou být ve společném prostoru texty i obrázky, což dovolí hledat obrázek podle textového dotazu nebo popsat obraz pomocí jazyka.
Co v embeddingovém prostoru znamená blízkost
Blízkost vektorů obvykle znamená podobnost podle toho, na čem byl model trénován. Dvě věty mohou být blízko, protože mluví o stejném tématu, i když nepoužívají stejná slova. Dva produkty mohou být blízko, protože je kupují podobní lidé. Nejčastěji se porovnává kosinová podobnost, skalární součin nebo eukleidovská vzdálenost.
Embedding není databázový klíč ani přesná logická reprezentace. Vektorové vyhledávání vrací kandidáty, kteří jsou pravděpodobně relevantní. Přesnost se často zvyšuje dalším řazením, filtrováním podle metadat nebo kombinací s klasickým fulltextem.
Dva příklady z praxe
Sémantické hledání v dokumentaci
Tým uloží embeddingy odstavců interní dokumentace do vektorového indexu. Vývojář napíše dotaz „proč mi padá přihlášení po změně tokenu“ a systém najde text o expiraci session, i když stránka neobsahuje přesnou formulaci dotazu. Výsledek se může předat do RAG, kde jazykový model odpoví s oporou v nalezených úryvcích.
from math import sqrt
def cosine(a, b):
dot = sum(x*y for x, y in zip(a, b))
return dot / (sqrt(sum(x*x for x in a)) * sqrt(sum(y*y for y in b)))
query = [0.12, 0.88, -0.10]
paragraph = [0.10, 0.91, -0.04]
print(cosine(query, paragraph))Doporučení produktů podle chování
E-shop vytvoří embedding produktu z nákupů, prokliků a kategorií. Když si zákazník prohlíží běžecké boty do terénu, systém najde produkty s podobným vektorem, třeba nepromokavé ponožky nebo trailovou vestu. Doporučení se nezakládá jen na názvu produktu, ale na vzorcích chování ostatních zákazníků.
Kde embedding ztrácí přesnost
Embedding může skrýt důležité detaily. Věty „smlouva byla schválena“ a „smlouva nebyla schválena“ mohou být tematicky blízké, i když mají opačný význam. U citlivých aplikací je proto potřeba kontrolovat negace, čísla, časové údaje a oprávnění. Problémem mohou být také zastaralé embeddingy: když se změní dokument nebo katalog, uložený vektor už nemusí odpovídat aktuálnímu obsahu.
Příklady z praxe
Negace v embeddingu zkreslila právní vyhledávání
Právní oddělení výrobní firmy nasadilo sémantické hledání nad archivem smluv. Rešeršér zadal dotaz „případy, kdy odstoupení od smlouvy nebylo uznáno“ a index vracel převážně dokumenty, kde odstoupení uznáno bylo, protože vektory obou formulací ležely velmi blízko. Řešením bylo doplnit strukturovaný filtr podle metadat o výsledku sporu a nad prvních sto vektorových kandidátů pustit přeřazovací model typu cross-encoder. Podíl relevantních dokumentů v prvních deseti výsledcích vzrostl z necelé třetiny na více než osmdesát procent.
Chybná normalizace vektorů před uložením do indexu
Vývojář nasadil vyhledávání v katalogu školení a výsledky vypadaly náhodně: dlouhé popisy kurzů se držely na prvních místech bez ohledu na dotaz. Ukázalo se, že index byl nastaven na skalární součin, ale embeddingy z modelu nebyly normalizovány na jednotkovou délku, takže rozhodovala velikost vektoru, nikoli směr. Po přidání normalizace při zápisu i při dotazu se relevance srovnala a metrika NDCG@10 se zvedla o téměř polovinu bez jakékoli změny modelu.
import numpy as np def normalize(vectors: np.ndarray) -> np.ndarray: norms = np.linalg.norm(vectors, axis=1, keepdims=True) norms[norms == 0] = 1.0 return vectors / norms embeddings = np.array([[0.9, 0.2, -0.3], [4.5, 1.0, -1.5]]) print(normalize(embeddings)) # oba zaznamy maji nyni stejny smer
Časté omyly
- MýtusEmbedding je jen komprese textu.
- Ve skutečnostiEmbedding sice zkracuje vstup na pevně dlouhý vektor, ale cílem není bezeztrátové uložení původního obsahu. Cílem je zachytit vztahy užitečné pro model, vyhledávání nebo doporučování.
- MýtusKdyž mají dva texty podobný embedding, znamenají totéž.
- Ve skutečnostiPodobný embedding znamená blízkost podle naučeného prostoru, ne garantovanou totožnost významu. Texty mohou být tematicky podobné a zároveň se lišit v negaci, přesném čísle nebo závěru.
Časté dotazy
- Proč embedding obsahuje stovky až tisíce čísel?
- Embedding obsahuje mnoho čísel proto, že model potřebuje prostor pro zachycení různých vztahů mezi objekty. Jednotlivý rozměr obvykle nemá jednoduchý lidský název, ale celá kombinace souřadnic umožní odlišit význam, styl, kontext nebo chování. Více rozměrů může zlepšit vyjadřovací schopnost, ale také zvyšuje nároky na ukládání, indexaci a výpočty.
- Může se embedding ukládat do databáze?
- Embedding lze ukládat do běžné databáze jako pole čísel, ale pro rychlé hledání podobných vektorů se používá vektorový index nebo specializovaná vektorová databáze. Rozhodnutí závisí na objemu dat, požadované latenci a typu dotazů. Menší projekt často vystačí s rozšířením existující databáze, větší vyhledávání potřebuje optimalizovanou aproximaci nejbližších sousedů.
- Je embedding pro stejný text vždy stejný?
- Embedding může být deterministický, pokud stejný model, stejná verze, stejné nastavení a stejný vstup vždy vracejí stejný vektor. V praxi se výsledky mohou změnit po aktualizaci modelu, změně tokenizace, jiném předzpracování textu nebo použití služby, která model průběžně nahrazuje. Produkční systémy proto ukládají i informaci o použitém modelu a často přepočítávají vektory dávkově.
- Kdy embedding nestačí pro vyhledávání?
- Embedding nestačí tam, kde je rozhodující přesná shoda, právní formulace, číselná hodnota, negace nebo aktuální oprávnění uživatele. Vektorová podobnost umí najít tematicky blízký obsah, ale nemusí rozlišit jemný rozdíl ve významu. Spolehlivé vyhledávání často kombinuje embedding s metadaty, fulltextem, pravidly a následným přerankingem kandidátů.
Zdroje
- Word embeddings(otevře se v novém okně)
- torch.nn.Embedding(otevře se v novém okně)
- Efficient Estimation of Word Representations in Vector Space(otevře se v novém okně)
- Machine Learning Crash Course(otevře se v novém okně)