Documentation Index
Fetch the complete documentation index at: https://mintlify.com/StarTrail-org/PixelRAG/llms.txt
Use this file to discover all available pages before exploring further.
pixelrag index build orchestrates the four-stage visual indexing pipeline: it renders your
documents to screenshot tiles, splits the tiles into 1024-pixel strips, embeds each strip with
Qwen3-VL-Embedding-2B, and writes a FAISS index that the pixelrag serve API can query. The
whole pipeline is driven by a single pixelrag.yaml file so you never have to run the stages
manually.
Prerequisites
Install theindex extra, which pulls in the render, embed, and index stages together:
device: auto in your config file lets PixelRAG pick the fastest available backend
automatically — CUDA on Linux, MPS on macOS, and CPU as the universal fallback.
Quick start with pixelrag.yaml
Create apixelrag.yaml in your working directory:
pixelrag.yaml automatically from the current directory (or pixelrag.yml).
When the build finishes, the index is ready to serve from ./my_index.
Source types
- local
- web
- pdf
- kiwix
Scans a directory tree and ingests every supported file it finds. Supported extensions:
| Extension | Handled as |
|---|---|
.pdf | PDF — rendered page by page |
.html, .htm | Web page — rendered via CDP |
.png, .jpg, .jpeg | Image — copied directly into the tile structure |
.md, .txt | Text — converted to styled HTML, then rendered |
Full config reference
All top-level keys with their defaults:embed.device is "cuda". Set device: auto to let PixelRAG detect
the best available device automatically — CUDA on Linux, MPS on Apple Silicon, CPU as the
universal fallback. You can also pin mps or cpu explicitly for reproducible builds in CI.
Department-based filtering
When you organise documents into subdirectories under your sourcepath, PixelRAG reads the
first subdirectory name as a department label and stores it in articles.json:
engineering/ get department: "engineering" and files in legal/ get
department: "legal". Files placed directly under my_docs/ (not inside any subdirectory)
have no department.
At query time you can pass "department": "engineering" to the search API to pre-filter results
to that subdirectory — the filter runs inside FAISS as an IDSelector, not as post-filtering,
so you always get the full n_docs results when the department has enough tiles.
Incremental builds
Re-runningpixelrag index build is safe — already-rendered documents are skipped. The pipeline
compares each document’s current source identity (URL or file path recorded in tiles.json)
against what was last rendered; only new or changed documents are re-rendered.
--append— add documents to an existing Qdrant collection--recreate— delete and recreate the collection before indexing