PixelRAG retrieves over screenshots instead of parsed text. It renders web pages, PDFs, and images to screenshot tiles, embeds those tiles, and searches the images directly, so tables, charts, layout, and infographics that HTML-to-text parsing discards remain available to the reader model. It is the codebase for the paper "PixelRAG: Web Screenshots Beat Text for Retrieval-Augmented Generation", from Berkeley Sky Computing Lab, BAIR, and the Berkeley NLP Group.
Two pieces make it work: rendering documents to images rather than parsing them to text, and a Qwen3-VL-Embedding model LoRA-fine-tuned on screenshot data that embeds page images into a space where visual content is retrievable. The trained adapters and the full training set are published, and the fine-tuning recipe lives in a separate project with its own pinned environment.
The pipeline is split into stages that each run on their own: pixelshot captures a URL or file to tiles through headless Chromium over CDP (and PDFs with poppler), pixelrag chunk, embed, and build-index turn tiles into vectors and a FAISS index, pixelrag index orchestrates the whole path from source to index, and pixelrag serve exposes a FastAPI search endpoint on CPU or GPU. Qdrant is available as an index backend for quantization, disk-backed vectors, payload filtering, and a collection shared by several servers.
A hosted endpoint at api.pixelrag.ai serves a pre-built index of 8.28 million Wikipedia pages with no setup or key and accepts an image as the query as well as text; the same indexes can be downloaded from Hugging Face and served locally. Index building runs on Linux with CUDA and on Apple Silicon via MPS, with device: auto selecting the backend.
Features
- Pixel-native retrieval: documents are rendered to screenshot tiles and retrieved as images, preserving tables, charts, and layout
- Rendering CLI: pixelshot captures URLs, local files, and PDFs to tiles via headless Chromium over CDP, each render in a throwaway profile
- Staged pipeline: chunk, embed, and build-index run independently, or pixelrag index orchestrates source to index
- Search server: pixelrag serve runs a FastAPI search API over a FAISS index on CPU or GPU
- Hosted index: a public endpoint over 8.28M Wikipedia pages that accepts text or an image as the query
- Qdrant backend: configurable quantization, disk-backed vectors, payload filtering, and append or recreate modes for a shared collection
- Claude Code plugin: the pixelbrowse skill screenshots a page and has the model read the image, with a /screenshot slash command and no MCP server or backend
- Python API: render_url renders a page to tiles programmatically for an agent to read
- Published artefacts: LoRA adapters, the filtered training set, and a documented data-curation pipeline for adapting other backbones
