PixelRAG — поиск по скриншотам вместо парсинга HTML
📂 Исходный код на GitHubRAG-система, которая индексирует документы как скриншоты, а не как текст. Использует Qwen3-VL-Embedding с LoRA-файнтюнингом для поиска по визуальному содержимому. Включает предзагруженный индекс из 8,28 млн страниц Wikipedia и плагин для Claude Code.
PixelRAG — это RAG-система, которая отказывается от парсинга HTML в пользу рендеринга страниц в скриншоты. Вместо того чтобы извлекать текст и терять таблицы, графики и вёрстку, она делает скриншот страницы, нарезает его на тайлы и ищет по ним с помощью vision-эмбеддингов. Проект создан в Berkeley SkyLab при участии BAIR и Berkeley NLP.
Как это работает
Традиционный текстовый RAG парсит страницу в текстовые чанки — и теряет таблицу. Модель-читатель не может найти ответ, потому что данные были в таблице, а не в тексте. PixelRAG рендерит ту же страницу в скриншот-тайлы, находит нужный тайл, и читатель считывает число прямо с изображения.
Два ключевых компонента: (1) рендеринг документов в изображения вместо парсинга в текст, и (2) модель Qwen3-VL-Embedding-2B, дообученная через LoRA на данных скриншотов, которая эмбеддит изображения страниц в пространство, где визуальный контент доступен для поиска.
Основные компоненты
pixelshot — рендеринг страниц
Утилита командной строки и Python API для рендеринга любых страниц и документов в скриншоты:
pip install pixelrag
pixelshot https://en.wikipedia.org/wiki/Python --output ./tiles
Поддерживаются URL, PDF и локальные файлы. На Linux автоустанавливается быстрый headless_shell, на macOS и Windows используется системный Chrome. Каждый рендер запускается в изолированном профиле.
Индексация и поиск
Полный пайплайн состоит из независимых стадий:
| Команда | Назначение | Установка |
|---|---|---|
pixelshot |
Документ → тайлы изображений | pip install pixelrag |
pixelrag chunk · embed · build-index |
Тайлы → векторы → FAISS-индекс | pip install pixelrag[embed] |
pixelrag index |
Полный пайплайн: источник → загрузка → эмбеддинг → индекс | pip install pixelrag[index] |
pixelrag serve |
FAISS search API (FastAPI) | pip install pixelrag[serve] |
Готовый индекс Wikipedia
PixelRAG предоставляет публичный API с предзагруженным индексом из 8,28 млн страниц Wikipedia. Без настройки, без API-ключа:
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}'
Поддерживается и визуальный поиск — можно отправить изображение в качестве запроса.
Плагин для Claude Code — pixelbrowse
PixelRAG поставляется как навык для Claude Code. Вместо парсинга HTML Клод делает скриншот страницы через pixelshot и читает изображение — видит графики, диаграммы, таблицы и вёрстку как человек:
uv tool install pixelrag
claude plugin marketplace add StarTrail-org/PixelRAG
claude plugin install pixelbrowse@pixelrag-plugins
claude -p "screenshot https://arxiv.org/abs/2404.12387 and explain the key findings"
Никакого MCP-сервера или бэкенда — навык просто вызывает pixelshot (Playwright/CDP) локально.
Сборка своего индекса
Работает на Linux (CUDA) и macOS (Apple Silicon / MPS). Опция device: auto выбирает лучший бэкенд автоматически:
pip install 'pixelrag[index]'
cat > pixelrag.yaml << 'EOF'
source:
type: local
path: ./my_docs
embed:
model: Qwen/Qwen3-VL-Embedding-2B
device: auto
output: ./my_index
EOF
pixelrag index build
pixelrag serve --index-dir ./my_index --port 30001
Обучение
Файнтюнинг живёт в отдельном uv-проекте train/ с фиксированным окружением (torch==2.9.1+cu129, transformers==4.57.1). LoRA-адаптеры для Qwen3-VL-Embedding-2B опубликованы на Hugging Face. Полный датасет для обучения также выложен в открытом доступе — можно адаптировать любую другую эмбеддинг-модель.
Почему это важно
Главная идея PixelRAG — визуальная структура документа несёт информацию, которую HTML-парсинг безвозвратно теряет. Таблицы, диаграммы, инфографика, пространственное расположение элементов — всё это остаётся в скриншоте и становится доступным для поиска. Для задач, где ответ лежит не в тексте, а в визуальном представлении данных, это принципиально другой уровень качества retrieval.
Проект открыт под лицензией Apache 2.0, 6,6k звёзд на GitHub, написан преимущественно на Python.