Vložte text, rozsekejte ho na kousky, podívejte se na jejich vektory a zkuste, jak dobře RAG najde odpověď na vaši otázku. Embedding model běží přímo ve vašem prohlížeči, žádná data se nikam neodesílají. Doprovodný nástroj k druhému dílu seriálu o RAG.
Při prvním otevření se musí stáhnout embedding model (cca 110 MB). Stahuje se jednou a pak je v cache prohlížeče. Na pomalém připojení může trvat 30–60 sekund. Bez něj to nefunguje.
KROK 1 · TEXT KE ZPRACOVÁNÍ
Vložte text
Může to být cokoli, smlouva, FAQ, manuál, článek. Pro lepší demonstraci doporučuji aspoň 5–10 vět na různá témata.
Rozsekat podle:
Pro jednoduchost se tady počítá ve slovech, reálné systémy počítají v tokenech. Překryv zajistí, že se myšlenka nezlomí přesně na hraně dvou chunků, protože konec jednoho chunku se zopakuje na začátku dalšího.
Barevně podbarvený text je překryv. Stejná slova se opakují na konci jednoho chunku a na začátku dalšího, aby se myšlenka nezlomila přesně na hraně mezi nimi.
KROK 2 · VEKTORIZACE
Spočítat vektory chunků
Každý chunk se převede embedding modelem na vektor čísel. Zobrazujeme zkrácených 256 dimenzí v mřížce 16×16, barva odpovídá hodnotě (zelená = vyšší, šedá = blízko nuly, červená = nižší). Model má ve skutečnosti 384 rozměrů, 256 jich ukazujeme pro názornost (vysvětlení je na konci stránky).
KROK 3 · OTÁZKA A HLEDÁNÍ
Položte otázku
Otázka projde stejným embedding modelem. Pak se spočítá kosinová podobnost mezi vektorem otázky a každým chunkem. Chunky se seřadí od nejpodobnějšího. Model E5 je natrénovaný tak, že text otázky dostane před sebe prefix „query: “ a každý chunk prefix „passage: “. Hřiště je přidává za vás, bez nich by hledání dopadalo hůř.
KROK 4 · CO JDE DO LLM
Sestavený prompt pro LLM
Tohle by RAG poslal jazykovému modelu (Claude, GPT, Gemini), který z toho sestaví odpověď. Tady jen ukazujeme, jak ten prompt vypadá, samotné volání LLM tady neděláme.
Model multilingual-e5-small ve skutečnosti vrací 384 čísel. Pro názornost jich ukazujeme 256 a z těchto 256 se tady počítá i kosinová podobnost. Je to zjednodušení pro ukázku: model na zkracování vektorů není trénovaný, takže reálný systém používá vždy celý vektor a pořadí výsledků se může od ukázky mírně lišit. Princip je stejný, podobnost se počítá přes vzájemný vztah všech čísel, ne jednotlivé hodnoty. Jiné modely mají rozměrů víc, třeba 1536 nebo 3072.