StarTrail-org/PixelRAG
https://arxiv.org/abs/2606.28344. The end of web parsing. The beginning of scalable pixel-native search. link: https://pixelrag.ai/
PixelRAG – Retrieval‑Augmented Generation on Screenshots
PixelRAG is an open‑source library that lets you search and retrieve information from documents by the way they look, not just by their raw text. It renders web pages, PDFs, or images into tiled screenshots, embeds those images with a vision‑language model, and builds a vector index that can be queried with text or images.
What it does
- Render any URL, PDF, or image into a set of high‑resolution screenshot tiles (
pixelshot). - Embed the tiles with a LoRA‑fine‑tuned
Qwen3‑VL‑Embeddingmodel that captures visual layout (tables, charts, infographics). - Index the embeddings with FAISS (or Qdrant) to enable fast similarity search.
- Serve a REST API (
pixelrag serve) that accepts text or image queries and returns the most relevant screenshot tiles. - Provides a Claude Code plugin (
pixelbrowse) so Claude can “see” a page by callingpixelshotlocally.
Core components
| Command | Role | Install extra |
|---|---|---|
pixelshot |
Convert a document → image tiles (uses Playwright/Chromium) | pip install pixelrag |
pixelrag chunk / embed / build-index |
Turn tiles → vectors → FAISS index | pip install 'pixelrag[embed]' |
pixelrag index |
Orchestrates full pipeline (source → ingest → embed → index) | pip install 'pixelrag[index]' |
pixelrag serve |
Launch a FastAPI search service (CPU or GPU) | pip install 'pixelrag[serve]' |
| Qdrant backend | Optional disk‑backed, scalable vector store | pip install 'pixelrag[serve,qdrant]' |
Quick start (no setup needed)
# Render a page to tiles
pixelshot https://en.wikipedia.org/wiki/Python -o ./tiles
# Query the public Wikipedia index (8.28 M pages)
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}'
The hosted API returns the screenshot tiles that contain the answer, letting any downstream LLM read the visual content directly.
Building your own index
# pixelrag.yaml
source:
type: local
path: ./my_docs
embed:
model: Qwen/Qwen3-VL-Embedding-2B
device: auto # picks CUDA, MPS, or CPU
output: ./my_index
pip install 'pixelrag[index]'
pixelrag index build # renders → embed → FAISS index
pixelrag serve --index-dir ./my_index --port 30001
You can then query the local server with the same curl request shown above.
Claude “eyes” plugin
- Install the CLI so
pixelshotis on your PATH (uv tool install pixelragorpipx install pixelrag). - Add the plugin in Claude Code Marketplace and install
pixelbrowse@pixelrag-plugins. - Use commands like:
Claude will callclaude -p "screenshot https://news.ycombinator.com and summarize the top stories"pixelshot, receive the screenshot tiles, and answer based on the visual layout.
Training (optional)
The repo includes a separate train/ folder that fine‑tunes the embedding model on a large screenshot dataset (LoRA on Qwen3‑VL‑Embedding‑2B). Pre‑trained adapters are published on Hugging Face, so you can use them out‑of‑the‑box without training.
Where to find more
- Live demo & docs: https://pixelrag.ai
- API reference: https://pixelrag.ai/docs
- Colab quickstart notebook: linked in the README
- Pre‑built Wikipedia index: downloadable from the Hugging Face dataset
StarTrail-org/pixelrag-faiss-indexes(≈217 GB).
License
Apache‑2.0 – free for commercial and research use.
PixelRAG turns visual structure into a searchable knowledge base, enabling LLMs (Claude, GPT, etc.) to answer questions that depend on tables, charts, and layout that traditional text‑only RAG would miss.
Related
- Project
- Project
- Project
- Project
- Dispatch