PixelRAG: When You Stop Parsing the Page and Embed the Pixels Instead
Every RAG pipeline begins by parsing a document to text — a lossy step that discards tables, charts, and layout before retrieval even runs. PixelRAG (Berkeley/Princeton/EPFL/Databricks, 2025) skips text entirely: render the page to screenshot tiles, embed them with a LoRA-tuned Qwen3-VL-Embedding model, retrieve over images in FAISS, and let a VLM read the answer off the pixels. The frontier finale of the embeddings arc — and a decision framework for when pixel-native retrieval is worth it.
Every RAG pipeline starts with a step almost nobody audits: turning a document into text. A PDF, a web page, a financial statement — a parser linearises it into a string before retrieval, before embedding, before the model sees anything. And that step is lossy.
The web is not natively textual. Tables, multi-column layouts, charts, infographics, the position of a number inside a form — HTML and PDF parsers flatten all of it into a stream and throw the structure away. By the time your retriever runs, half the meaning of the page is already gone. The retriever was rarely the bottleneck. The parser was.
PixelRAG is a 2025 research system from UC Berkeley, Princeton, EPFL, Databricks, and Renmin University that asks a blunt question: what if you never convert the document to text at all? Retrieve and read in pixel space — embed the page as an image, retrieve the image, and let a vision-language model read the answer straight off the pixels.
The idea: embed the pixels, not the text
Text RAG parses a page to text chunks and loses the table — the reader can't find the answer because the answer was in the layout. PixelRAG renders the page to screenshot tiles, retrieves the right tile, and the reader reads the number off the image. No OCR, no HTML parsing, no chunking of extracted text. The capture replaces the entire parse-and-chunk front end.
How it works — four stages, all in pixel space
- Render — `pixelshot` turns any document (web page, PDF, image) into screenshot tiles with a headless browser (Playwright/CDP). This single step stands in for the whole parse-and-chunk pipeline.
- Embed — each tile is embedded by `Qwen3-VL-Embedding-2B`, a vision-language embedding model LoRA-fine-tuned on screenshot data with curated contrastive pairs, so visual layout becomes retrievable geometry.
- Index — tile vectors go into a FAISS index. The query (text — or even an image) is embedded into the same space, and retrieval is ordinary nearest-neighbour search over images.
- Read — the retrieved tiles are fed directly as pixels to a VLM. There is no intermediate text conversion at any point; retrieval and reading both happen in pixel space.
# Render any page or document to screenshot tiles
pixelshot https://en.wikipedia.org/wiki/Python --output ./tiles
# Query a hosted visual index of 8.28M Wikipedia pages — no setup, no key
curl -X POST https://api.pixelrag.ai/search \
-H "Content-Type: application/json" \
-d '{"queries": [{"text": "What is the capital of France?"}], "n_docs": 5}'
What the paper reports
The authors built the first retrieval pipeline to run over a full Wikipedia corpus in pixel space — 8.28M articles rendered to ~30M screenshot images, served behind a FAISS index. Their headline result is the surprising one:
- PixelRAG beats no-retrieval and text-based RAG baselines — including on text-centric QA benchmarks like Natural Questions and SimpleQA, exactly where text RAG was supposed to hold the advantage.
- On harder benchmarks (noisy news corpora, multimodal and agentic QA) the paper reports gains of up to 18.1% over text-based baselines.
- Because a page is now an image, resolution becomes an efficiency lever: the paper reports up to ~3x token-cost reduction at lower screenshot resolution while holding accuracy.
Honesty check: these are the authors' own reported numbers on their own benchmarks, from a paper released in late 2025. PixelRAG is frontier research, not a battle-tested production default — there is no long track record yet. Treat the figures as a strong reason to evaluate on your data, not a guarantee.
A frontier tool, not a default
The senior move is not 'rip out your RAG stack and bolt on PixelRAG.' It is knowing which document you are facing — and matching the retrieval method to it.
| Reach for pixel-native RAG | Stick with text RAG |
|---|---|
| Tables, spreadsheets, financial statements | Plain prose corpora (clean text, no layout) |
| Charts, diagrams, infographics, image-PDFs | Latency-critical paths — a VLM reading pixels is heavier than a text reader |
| Layout-heavy, multi-column, or form documents | Tiny or cost-sensitive corpora — rendering + GPU embedding + a 200GB-class index is real overhead |
Where this bites in production: a compliance or finance assistant that parses a statement to text can silently drop the column a number lived in, then answer confidently against the wrong cell. On layout-dependent documents the parser is the failure mode — and reading the pixels is how you stop losing the half of the page that text extraction throws away.
Where it sits in the embeddings story
This is the last step in a single arc. word2vec gave a word one frozen vector. Attention let a word's vector change with its sentence. BERT and sentence-transformers pushed the unit of meaning up from the word to the whole sentence. PixelRAG pushes it one step further: the unit of meaning is the page, embedded as it looks. The thread through all of it — the best embedding isn't the cleverest math, it's the one that loses the least.
Visualise embeddings in Explore →: See how text becomes geometry — the same idea PixelRAG extends from words to whole pages.
- PixelRAG: Web Screenshots Beat Text for Retrieval-Augmented Generation — Wang, Li, et al. (2025)
- PixelRAG — official code (StarTrail-org, Apache-2.0)
- Screenshot-embedding LoRA adapters on Qwen3-VL-Embedding (HuggingFace)
- ColPali: Efficient Document Retrieval with Vision Language Models — Faysse et al. (2024), the visual-retrieval lineage
- Live demo + hosted 8.28M-page visual index
Try it interactively
GenAI Systems Lab is a free platform for AI engineers — configure real failure modes, break things, and build the judgment that gets you hired.
Open GenAI Systems Lab →