Zobrazit stránkuStarší verzeZpětné odkazyNahoru Tato stránka je pouze pro čtení. Můžete si pouze prohlédnout zdrojový kód, ale ne ho měnit. Zeptejte se správce, pokud si myslíte, že něco není v pořádku. ====== 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: <code> 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í </code> Důležitý rozdíl proti textovému RAGu: <code> 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 </code> ===== 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: <code> PDF → pdftotext / PyMuPDF / OCR → textové embeddingy → běžný RAG </code> 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: <code bash> pixelrag index build pixelrag serve --index-dir ./my_index --port 30001 </code> 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]] ai/platformy/rag-a-memory/pixelrag.txt Poslední úprava: 01.07.2026 13:21autor: Petr Nosek