Learning
Všechny články
AI17. srpna 2026 5 min

Nech model štítek vymyslet, pak ho teprve namapuj

U velkého číselníku je generování levnější než výběr ze seznamu

Klasifikace jde obrátit: napřed odhad, pak teprve číselník

Máš dotaz z vyhledávání a taxonomii o tisících položek, do které ho chceš zařadit. Standardní postup je poslat modelu ten seznam a nechat ho vybrat — přes structured output s výčtem povolených hodnot. Funguje to do určité velikosti a pak přestane: existuje horní hranice toho, kolik toho do omezení výčtem vůbec pošleš, a s každým dotazem platíš za celý číselník znovu.

Doug Turnbull to obrací. Modelu se taxonomie neukáže vůbec. Dostane jen dotaz a instrukci vymyslet novou, nikdy neviděnou kategorii, která na dotaz sedí, ve tvaru odpovídajícím tvé hierarchii. Model vrátí něco jako Furniture / Living Room / Tables / Coffee. Taková větev v tvé taxonomii neexistuje. To je v pořádku, protože to není odpověď — je to dotaz do embeddingového prostoru.


Druhý krok dělá zarovnání, ne model

Vymyšlený štítek se zaembeduje malým modelem, u Turnbulla MiniLM, a porovná skalárním součinem s předpočítanými embeddingy skutečných položek číselníku. Vyhraje Furniture / Living Room Furniture / Coffee Tables & End Tables / Coffee Tables.

Rozdělení práce je tady to podstatné. Jazykový model dělá to, v čem je dobrý — porozumí dotazu a vysloví záměr slovy, která k němu sémanticky patří. Embedding dělá to, v čem je dobrý on — přiřadí ta slova k nejbližšímu bodu v pevně dané množině. Ani jeden z těch kroků nevyžaduje, aby model měl celou taxonomii v kontextu.

Cenově to mění strukturu úlohy. Prompt už neroste s velikostí číselníku, roste jen s délkou dotazu. Přidání tisíce nových kategorií znamená přepočítat embeddingy, ne předělat prompt. A protože ta generovaná část je krátká a jednoduchá, zvládne ji levnější a menší model.


Stejný trik už znáš jako HyDE

Vzor je stejný jako u hypothetical document embeddings. Tam se místo embeddingu dotazu nechá model vymyslet dokument, který by na dotaz odpovídal, a hledá se podle jeho embeddingu — protože odpověď je v embeddingovém prostoru blíž k reálným odpovědím než otázka. Tady se místo dotazu embeduje vymyšlený štítek, protože štítek je blíž ke štítkům než dotaz.

Zobecněné pravidlo: když se dvě věci špatně porovnávají, nech model vyrobit falešný exemplář té cílové kategorie a porovnávej až ten. Halucinace tady není chyba, kterou tolerujeme. Je to celý mechanismus. Model má úmyslně vyrobit něco, co neexistuje, jen aby to leželo ve správné části prostoru.

To je i důvod, proč tenhle postup nevyžaduje přesnost modelu na úrovni jednotlivých položek. Nemusí trefit správnou větev, stačí, aby trefil správné okolí.


Kde to selže

Metoda má jasnou hranici, kterou stojí za to znát dopředu. Přiřazení je vždy nejbližší položka, i když správná odpověď je "žádná". Prahování na skalárním součinu je nutné, jinak dostaneš zařazení i pro dotaz, který do taxonomie nepatří.

Druhé riziko je taxonomie, jejíž kategorie se liší jemným rozdílem, ale znějí podobně. Embedding rozhoduje sémantickou blízkostí, ne tvým doménovým pravidlem, takže dvě sousední větve pro něj splynou. Pokud rozdíl mezi kategoriemi není v jazyce, tenhle postup ho nezachytí.

Nakonec: tvar, který modelu ukážeš v příkladech, řídí celý výsledek. Když je vygenerovaný štítek strukturně jinde než reálná taxonomie — jiná hloubka, jiná slovní zásoba — porovnání se rozpadne dřív, než se ke skalárnímu součinu dostaneš.


Co si z toho odnést

Když narazíš na klasifikaci proti velkému číselníku, nezvětšuj prompt. Obrať pořadí: nech model vyslovit odpověď volně a zarovnání na povolené hodnoty udělej až potom, levnou a deterministickou vrstvou.

To zobecnění nese dál než na štítky. Kdykoli stojíš před úlohou "vyber jednu z mnoha", zvaž variantu "popiš tu správnou a pak najdi nejbližší". Ušetříš kontext, oddělíš pochopení od zarovnání a získáš vrstvu, kterou můžeš ladit nezávisle na modelu — což je u prahu, pod kterým se nemá zařadit nic, jediný způsob, jak to vůbec řešit.

Zdroje

Poslech místo čtení — 2 zdroje k načtení.