====== PixelRAG ======
//Vytvořeno: **1.7.2026** | Aktualizováno: **~~LASTMOD~~**//
[[https://github.com/StarTrail-org/PixelRAG|PixelRAG]] je nástroj a výzkumný projekt pro vizuální RAG nad weby, PDF a obrázky. Místo klasického převodu dokumentu na text pracuje s jeho vizuální podobou: stránku vyrenderuje jako obrázek, vytvoří z ní embedding a při dotazu hledá vizuálně relevantní stránky nebo části dokumentu.
Na projekt upozorňuje také [[https://x.com/akshay_pachaar/status/2068317780064276917|příspěvek Akshay Pachaar na X]], který posloužil jako další zdroj k tématu.
===== Základní princip =====
PixelRAG není klasické OCR. Nejde primárně o nástroj typu „vezmi obrázek a ulož z něj rozpoznaný text“. Je to spíš vyhledávací vrstva nad obrázky dokumentů.
Zjednodušená pipeline:
PDF / web / obrázek
→ screenshoty nebo tiles
→ vizuální embeddingy
→ FAISS index
→ dotaz
→ nalezení relevantních screenshotů
→ vision model přečte vybrané obrázky a odpoví
Důležitý rozdíl proti textovému RAGu:
Textový RAG:
PDF → text/OCR → textové chunky → textové embeddingy → odpověď z textu
PixelRAG:
PDF → obrázky stránek → vizuální embeddingy → nalezení obrázku → odpověď z obrázku
===== Jak pozná, který obrázek použít =====
PixelRAG neposílá při každém dotazu všechny uložené obrázky do vision modelu. To by bylo pomalé a drahé. Výběr probíhá přes embeddingový index.
==== Indexace dokumentu ====
Při indexaci se dokument rozdělí na screenshoty nebo dlaždice. Každá stránka nebo tile se převede pomocí [[https://huggingface.co/Qwen/Qwen3-VL-Embedding-2B|Qwen3-VL-Embedding-2B]] na vektor. Tyto vektory se uloží do FAISS indexu spolu s metadaty, například zdrojový dokument, číslo stránky nebo index dlaždice.
Typicky se ukládá:
* obrázek stránky nebo dlaždice,
* embedding obrázku,
* metadata k dohledání původní stránky,
* FAISS index pro rychlé podobnostní hledání.
==== Vyhledání při dotazu ====
Při dotazu se textový dotaz také převede na embedding ve stejném prostoru jako obrázky. FAISS pak najde nejpodobnější obrázkové embeddingy.
Až poté se vybrané obrázky předají vision modelu, který z nich přečte odpověď, opíše hodnotu z tabulky, vysvětlí graf nebo popíše vizuální část dokumentu.
==== Časté nedorozumění ====
Vision model se používá až po vyhledání relevantních obrázků. To ale neznamená, že lokální embedding model není potřeba. Pro běžný lokální provoz je embedding model potřeba minimálně ve dvou místech:
* při indexaci dokumentů,
* při převodu dotazu na embedding.
Server PixelRAG sice umí přijmout i předpočítaný embedding dotazu, ale pak musí tento embedding vzniknout někde jinde. Raspberry Pi tedy může být jen lehký server a úložiště, ale embeddingy musí buď počítat samo, nebo je musí dostat z jiného stroje či služby.
===== Kdy PixelRAG použít =====
PixelRAG dává smysl tam, kde informace není jen v textu, ale i ve vizuální podobě dokumentu.
Vhodné případy:
* **Technické manuály s diagramy** – zapojení, bloková schémata, rozkresy zařízení.
* **PDF s tabulkami** – když je důležité rozložení buněk a běžný textový extraktor tabulku rozbije.
* **Grafy a dashboardy** – hodnoty, trendy, osy, legendy a vizuální vztahy.
* **Infografiky a schémata** – obsah, který se špatně převádí na lineární text.
* **Screenshoty aplikací** – hledání podle vzhledu UI, dialogů nebo chybových stavů.
* **Webové stránky se složitým layoutem** – stránky, kde HTML parsing zahodí nebo pomíchá důležitý kontext.
* **Skenované dokumenty s layoutem** – formuláře, sestavy, starší dokumentace, kde nestačí čisté OCR.
Typické otázky, pro které je PixelRAG vhodný:
* „Najdi stránku, kde je blokové schéma zapojení.“
* „Kde je tabulka s parametry napájení?“
* „Jaká hodnota je v pravé části grafu?“
* „Na které stránce manuálu je rozkres svorkovnice?“
* „Který screenshot obsahuje konkrétní chybovou hlášku?“
Hlavní důvod použití je zachování vizuální struktury. Textový RAG může z dokumentu vytáhnout slova, ale ztratí vztah mezi sloupci tabulky, popisky grafu nebo pozici prvků na stránce.
===== Kdy PixelRAG nepoužít =====
PixelRAG není univerzální náhrada běžného textového RAGu. Pro mnoho dokumentů je zbytečně těžký.
Nevhodné nebo méně vhodné případy:
* **Běžná textová PDF** – dokumenty složené hlavně z odstavců textu.
* **Dokumentace s dobře extrahovatelným textem** – například čisté HTML, Markdown, DOCX nebo textové PDF.
* **Velké archivy, kde jde hlavně o fulltext** – textový index bude levnější, menší a rychlejší.
* **Slabý hardware bez akcelerace** – embeddingový model je hlavní výpočetní limit.
* **Situace, kde potřebuješ přesný strojově čitelný text** – pro to je vhodnější OCR nebo parser.
* **Citlivé dokumenty posílané do cizího API** – pokud se používá cloudový vision model nebo hosted služba, je potřeba řešit soukromí dat.
Pokud jde o běžné textové PDF, praktičtější pipeline je:
PDF → pdftotext / PyMuPDF / OCR → textové embeddingy → běžný RAG
PixelRAG se vyplatí přidat až ve chvíli, kdy textová extrakce nestačí.
===== Výkonnostní a provozní limity =====
==== Úložiště ====
PixelRAG ukládá obrázky stránek nebo dlaždic. To je výrazně větší než čistý textový index. U jednotek až stovek PDF to nemusí být zásadní problém, ale u tisíců dokumentů nebo rozsáhlých webových archivů roste úložiště rychle.
V dokumentaci projektu jsou uvedené velké referenční indexy:
* hosted Wikipedia index obsahuje miliony článků,
* předpřipravený FAISS index pro Wikipedia má stovky GB,
* plné uložené screenshoty velkého korpusu mohou mít jednotky až desítky TB.
To ukazuje hlavní trade-off: PixelRAG si kupuje vizuální věrnost za cenu většího úložiště a náročnější indexace.
==== Výpočet embeddingů ====
Hlavní výpočetní náročnost není samotný FAISS index, ale vytvoření embeddingů přes multimodální model. PixelRAG používá Qwen3-VL-Embedding-2B, tedy 2B parametrů velký multimodální embedding model.
README projektu uvádí u lokální indexace ukázkového PDF přibližně:
* asi 3 minuty na Apple Silicon,
* asi 1 minutu na GPU.
Pro Raspberry Pi projekt neuvádí konkrétní měření. Bez vlastního benchmarku se nedá slíbit použitelný výkon. Reálně je potřeba počítat s tím, že bez CUDA nebo MPS bude embedding výrazně pomalejší.
==== Raspberry Pi a ARM64 ====
Raspberry Pi může dávat smysl jako lehká část systému:
* drží uložené PDF a screenshoty,
* drží malý FAISS index,
* servíruje nalezené obrázky,
* posílá vybrané stránky do cloudového vision modelu.
Pro plně lokální provoz je problém embeddingový model. Na Raspberry Pi bude limit hlavně RAM a rychlost CPU. Pi může zvládnout malé experimenty, ale pro pravidelné indexování větších PDF sad je vhodnější výkonnější stroj, GPU nebo Apple Silicon.
Možný kompromis:
* embeddingy vytvořit na výkonnějším stroji,
* hotový index a obrázky přesunout na Raspberry Pi,
* dotazy buď embeddingovat externě, nebo upravit workflow tak, aby Pi přijímalo předpočítané embeddingy,
* vision čtení vybraných obrázků dělat cloudovým modelem.
==== Čeština ====
Qwen3-VL-Embedding-2B uvádí podporu více než 30 jazyků a multimodální vstupy včetně textu, obrázků a screenshotů. Čeština by tedy neměla být principiální překážka.
Je ale potřeba počítat s tím, že PixelRAG je v dokumentaci a paperu demonstrovaný hlavně na anglických korpusech. Pro česká PDF je vhodné udělat vlastní test na reálných dokumentech. Kvalita bude záviset na:
* kvalitě skenu nebo screenshotu,
* velikosti písma,
* složitosti tabulek a grafů,
* použitém vision modelu pro finální odpověď,
* tom, jestli jsou dotazy a instrukce formulované způsobem, kterému embedding model dobře rozumí.
===== Hosted API pixelrag.ai =====
[[https://pixelrag.ai/docs|Hosted API PixelRAGu]] poskytuje veřejný endpoint nad předpřipraveným vizuálním indexem Wikipedie. Podle dokumentace jde o index 8,28 milionu Wikipedia článků. API umí vyhledávat textovým dotazem, obrázkem nebo kombinací textu a obrázku.
Pro vlastní PDF není toto API nutné. Pokud chceš indexovat soukromé dokumenty lokálně, používá se lokální pipeline:
pixelrag index build
pixelrag serve --index-dir ./my_index --port 30001
Hosted API je užitečné hlavně pro:
* rychlé vyzkoušení principu bez lokální instalace,
* hledání ve veřejném Wikipedia indexu,
* testování integrace agenta,
* pochopení formátu výsledků a tiles.
Pro citlivá nebo soukromá PDF není vhodné posílat data do cizí služby bez vyřešeného soukromí a podmínek zpracování.
===== Doporučená architektura =====
Pro běžné osobní nebo interní použití je praktičtější hybridní přístup:
- Z PDF nejdřív vytáhnout text přes PyMuPDF, pdftotext nebo OCR.
- Nad textem vytvořit běžný textový RAG.
- Uložit i obrázky stránek jako doplňkový zdroj.
- PixelRAG nebo vision model použít jen pro stránky, kde text nestačí: tabulky, grafy, schémata, formuláře a skeny.
Tím se omezí objem uložených obrázků i počet drahých vision dotazů. PixelRAG pak není hlavní index pro všechno, ale specializovaná vizuální vrstva pro případy, kde textový RAG selhává.
===== Shrnutí =====
PixelRAG se vyplatí použít, když potřebuješ vyhledávat a číst dokument podle toho, jak vizuálně vypadá. Je silný u tabulek, diagramů, grafů, formulářů, screenshotů a složitých webů. Není ale ideální jako obecná náhrada OCR nebo textového RAGu.
Pro Raspberry Pi je realistické uvažovat spíš o roli lehkého serveru, úložiště nebo orchestrátoru. Plně lokální indexace přes multimodální embedding model je hlavní limit a pro větší dokumenty bude pravděpodobně potřeba výkonnější hardware nebo externí výpočet.
===== Zdroje =====
* [[https://github.com/StarTrail-org/PixelRAG|PixelRAG – GitHub repozitář]]
* [[https://pixelrag.ai/docs|PixelRAG API dokumentace]]
* [[https://arxiv.org/abs/2606.28344|PIXELRAG: Web Screenshots Beat Text for Retrieval-Augmented Generation]]
* [[https://huggingface.co/Qwen/Qwen3-VL-Embedding-2B|Qwen3-VL-Embedding-2B na Hugging Face]]
* [[https://x.com/akshay_pachaar/status/2068317780064276917|Akshay Pachaar – příspěvek na X k PixelRAG]]