Publikováno 20. dubna 2026

Jak jsem z videoarchivu udělal doporučovacího chatbota

Jak jsem z YouTube videí vytvořil katalog s přepisy, shrnutími a chatbotem, který doporučuje konkrétní obsah.

Postavil jsem doporučovací systém nad archivem YouTube videí. Uživatel nemusí hádat správné klíčové slovo. Prostě popíše problém vlastními slovy a chatbot vybere videa, která k tomu dávají smysl.

Nejde ale o volného poradenského chatbota. To bylo důležité omezení od začátku. Systém nemá radit obecně mimo zdroje, které zná. Jeho práce je najít nejlepší obsah v daném katalogu, vysvětlit výběr a říct na rovinu, když nic vhodného nemá.

Nejdřív bylo potřeba udělat pořádek ve videích

Samotný chatbot je až poslední vrstva. Nejdřív jsem musel z videoarchivu udělat data, se kterými se dá pracovat:

  • seznam videí,
  • metadata z YouTube,
  • přepisy,
  • informace o kvalitě zdrojů,
  • strukturovaná shrnutí,
  • kompaktní katalog pro výběr doporučení.

Všechno drží pohromadě přes video_id. Díky tomu se dá bezpečně propojit video, přepis, shrnutí, metadata i pozdější odkazy na konkrétní čas.

Přepisy jako základ celého systému

Bez textu není z čeho doporučovat. U všech videí jsem udělal transcript pomocí lokálního modelu large-v3. Výhoda je, že přepis může běžet na grafické kartě a není potřeba posílat každé video do externí služby.

Pro tuhle úlohu jsem nepotřeboval přepis přesný do posledního slova. Potřeboval jsem spolehlivě poznat téma, problém, část těla, kontext a doporučení. Externí Whisper API dává smysl spíš jako záloha tam, kde lokální přepis vyjde špatně, což se nikdy nestalo. Lokální model fungoval perfektně.

Shrnutí, která modelu opravdu pomáhají

Ke každému videu jsem udělal strukturované shrnutí: témata, typické problémy uživatelů, části těla, doporučení, citace a příznak, jestli se video vůbec hodí doporučovat.

Tohle je důležité, protože název videa často nestačí. Video může mít obecný název, ale uvnitř řešit velmi konkrétní situaci. Nebo naopak vypadá podle názvu relevantně, ale pro daný dotaz se nehodí.

Jednodušší řešení vyhrálo nad složitým RAGem

Původně jsem zkoušel klasické vyhledávání přes embeddings, BM25, slučování výsledků a přerovnání kandidátů. Fungovalo to, ale pro katalog kolem 300 videí to bylo zbytečně složité.

Lepší výsledek nakonec dalo jednodušší řešení: poslat modelu celý zhuštěný katalog a nechat ho vybírat jen z pevného seznamu. Katalog se do kontextu vejde a díky opakovanému použití stejné části zadání zůstávají náklady rozumné.

Co dělá chatbot při dotazu

Při každém dotazu dostane model tři věci: aktuální otázku, krátkou historii konverzace a katalog doporučitelných videí.

Výstup není volný text podle nálady modelu. Model musí určit kvalitu shody: silná, částečná, žádná, nebo potřeba doptat se. K tomu vybere až pět videí a česky vysvětlí, proč právě ta.

Pokud uživatel naváže otázkou typu „něco kratšího“ nebo „radši jiné video“, systém použije historii konverzace. Časový odkaz se dohledává až po výběru videí, aby karta mohla vést rovnou na relevantní část YouTube videa.

Proč se mi tenhle přístup líbí

Celé řešení je záměrně omezené. Chatbot si nemá vymýšlet rady mimo katalog. Má dobře pochopit dotaz, najít nejbližší obsah, vysvětlit výběr a přiznat nejistotu.

U doporučovacích systémů je takové omezení často výhoda. Menší prostor pro halucinace, lepší kontrola a jasnější odpovědnost za výsledek.