StarTrail-org/pixelrag-tiles
PixelRAG tile corpus Rendered screenshot tiles for PixelRAG, a visual retrieval-augmented-generation system that retrieves over page images instead of parsed text. Each Wikipedia page is rendered to an image and cut into fixed-height tiles; retrieval runs on the tiles directly with a Qwen3-VL embedding model. This repository holds the full tile corpus that the published FAISS indexes and embeddings were built from, so the whole pipeline (tiles → embeddings → index → search) can… See the full description on the dataset page: https://huggingface.co/datasets/StarTrail-org/pixelrag-tiles.
PixelRAG tile corpus
Rendered screenshot tiles for PixelRAG, a visual retrieval-augmented-generation system that retrieves over page images instead of parsed text. Each Wikipedia page is rendered to an image and cut into fixed-height tiles; retrieval runs on the tiles directly with a Qwen3-VL embedding model.
This repository holds the full tile corpus that the published FAISS indexes and embeddings were built from, so the whole pipeline (tiles → embeddings → index → search) can be reproduced end to end.
- Code and paper: https://github.com/StarTrail-org/PixelRAG
- FAISS indexes: StarTrail-org/pixelrag-faiss-indexes
- Training sets: Chrisyichuan/screenshot-training and related
Layout
The corpus is split into 1000 shards, one tar each:
shard_000.tar … shard_999.tarEach tar mirrors the source tree: shard_NNNNN/<article_id>.png.tiles/ containing chunk_*.webp (and per-page JSON metadata). Extract a shard with:
tar -xf shard_000.tarImage format
Tiles are stored as lossless WebP. The encode is pixel-exact: decoding a .webp gives the same pixel array as the original PNG, so embeddings computed from these tiles match the published indexes. WebP is used because it is roughly 3x smaller than PNG on this screenshot content with no loss.
Load a tile like any image:
from PIL import Image
img = Image.open("shard_00000/12345.png.tiles/chunk_0000_00.webp").convert("RGB")Article metadata
articles.json is a JSON list of Wikipedia article titles indexed by article id, so the integer in a tile path maps back to its article. For example articles[440010] == "2025_FIA_Formula_3_Championship", matching shard_NNNNN/440010.png.tiles/.
import json
articles = json.load(open("articles.json"))
title = articles[440010] # "2025_FIA_Formula_3_Championship"Known corrupt tiles
A small number of source tiles (6425, about 0.03% of the corpus) are 0-byte files left by render failures, almost all in shard_091. They are kept as-is with their original .png name so the dataset matches the source exactly. Skip any 0-byte file when loading.
Citation
If you use this corpus, please cite the PixelRAG paper (see the GitHub repository).
