Model embeddingów
Jak działa
1) Wejście jest tokenizowane i przepuszczane przez enkoder (najczęściej Transformer), który produkuje kontekstowe wektory tokenów. 2) Warstwa poolingu (mean pooling, pooling CLS lub last-token) agreguje te wektory w pojedynczy wektor o stałej długości. 3) Wektor jest opcjonalnie rzutowany i normalizowany (L2), aby podobieństwo kosinusowe równało się iloczynowi skalarnemu. 4) Model trenuje się kontrastywnie na parach/trójkach (pozytywy przyciągane, negatywy odpychane), często z twardymi negatywami i prefiksami rozróżniającymi zapytanie od dokumentu. Na etapie użycia zapytania i dokumenty są kodowane do wektorów, a wyszukiwanie polega na znalezieniu najbliższych sąsiadów (ANN) w bazie wektorowej.
Rozwiązany problem
Klasyczne wyszukiwanie leksykalne (dopasowanie słów kluczowych) nie wychwytuje synonimów, parafraz ani znaczenia i jest trudne do przeniesienia między modalnościami. Modele embeddingów rozwiązują to, sprowadzając różne dane do wspólnej przestrzeni wektorowej, w której bliskość oznacza podobieństwo znaczeniowe, co umożliwia szybkie i skalowalne porównywanie, wyszukiwanie i grupowanie według sensu.
Komponenty
Najczęściej enkoder Transformer (np. BERT), produkujący wektor dla każdego tokenu z uwzględnieniem kontekstu całej sekwencji.
Oficjalna
Typowo mean pooling (uśrednienie z maską uwagi), pooling tokenu CLS lub pooling ostatniego tokenu.
Oficjalna
Normalizacja L2 wektora wyjściowego, czasem z dodatkową warstwą liniową lub wsparciem Matryoshka (MRL) dla skracania wymiaru.
Oficjalna
Najczęściej strata typu InfoNCE lub triplet, z twardymi negatywami; często wieloetapowy trening (kontrastywne wstępne uczenie + fine-tuning na parach z nadzorem).
Oficjalna
Implementacja
Jeśli wektory nie są znormalizowane L2, iloczyn skalarny nie równa się podobieństwu kosinusowemu, co zaburza ranking.
Wiele modeli (E5, BGE, EmbeddingGemma) wymaga różnych prefiksów dla zapytania i dokumentu; ich pominięcie obniża jakość wyszukiwania.
Po obcięciu wektora do mniejszego wymiaru (MRL) trzeba go ponownie znormalizować, inaczej podobieństwa są zafałszowane.
Użycie poolingu CLS dla modelu trenowanego z mean poolingiem (lub odwrotnie) daje słabe reprezentacje.
Ewolucja
Mikolov i in. wprowadzają wydajne uczenie gęstych, rozproszonych reprezentacji słów przez dedykowany model sieciowy.
Pennington, Socher i Manning (Stanford) proponują globalne wektory słów oparte na statystyce współwystępowania.
Model siamski na bazie BERT z poolingiem produkuje porównywalne wektory zdań, czyniąc porównania semantyczne szybkimi i skalowalnymi.
Microsoft wprowadza ogólne osadzenia tekstu trenowane kontrastywnie przy słabym nadzorze (weakly-supervised).
BAAI publikuje otwarte zasoby i modele osadzeń (BGE), osiągające czołowe wyniki na benchmarkach wyszukiwania.
OpenAI udostępnia modele text-embedding-3-small (1536 wym.) i -large (3072 wym.) z możliwością skracania wymiaru.
Otwarty, wielojęzyczny (100+ języków) model osadzeń ~308M parametrów, 768 wym. z Matryoshka (512/256/128) i kontekstem 2048 tokenów, zoptymalizowany pod działanie na urządzeniu.
Hiperparametry (konfigurowalne osie)
Długość wektora wyjściowego; wpływa na jakość, koszt pamięci i szybkość wyszukiwania. Modele z Matryoshka pozwalają skracać wymiar.
Maksymalna liczba tokenów wejściowych, które model może zakodować w jeden wektor.
Sposób agregacji wektorów tokenów w jeden wektor (mean, CLS, last-token).
Miara stosowana przy porównywaniu wektorów; najczęściej podobieństwo kosinusowe lub iloczyn skalarny.
Złożoność obliczeniowa
Złożoność czasowa: O(n^2 * d). Złożoność przestrzenna: O(n^2 + n * d).
Paradygmat wykonania
Enkoder aktywuje wszystkie parametry dla każdego wejścia; brak routingu rzadkiego (w odróżnieniu od MoE).
Równoległość
Enkoder Transformer przetwarza wszystkie tokeny równolegle; kodowanie wielu dokumentów jest trywialnie zrównoleglalne (embarrassingly parallel).
Wymagania sprzętowe
Masowe mnożenia macierzy enkodera Transformer i kodowanie dużych korpusów korzystają z rdzeni tensorowych.
Małe modele (np. all-MiniLM, EmbeddingGemma) kodują pojedyncze zapytania z akceptowalną latencją na CPU, w tym na urządzeniach brzegowych.