Test de PixelRAG : RAG avec des modèles visuels — « voir » les pages web comme un humain

TL;DR : PixelRAG est un framework RAG visuel open source publié en 2026 par l'équipe de UC Berkeley. Il ne parse pas le HTML, mais rend les pages web sous forme de captures d'écran et utilise un modèle d'embedding visuel (Qwen3-VL-Embedding) pour récupérer directement les réponses au niveau des pixels. L'article a construit un index complet pour 8,28 millions d'articles Wikipedia, et GitHub a déjà obtenu 9 600+ étoiles. Cet article couvre les principes techniques, la comparaison avec le RAG traditionnel, le déploiement local pratique et les tests d'efficacité.

1. Qu'est-ce que PixelRAG : Un nouveau paradigme pour le RAG visuel

Les pipelines RAG (Retrieval-Augmented Generation) traditionnels fonctionnent ainsi : crawler le HTML → extraire le texte brut avec BeautifulSoup/Trafilatura → découper en chunks → le modèle d'embedding de texte génère des vecteurs → récupérer les chunks les plus pertinents → les fournir au LLM pour générer des réponses.

Ce pipeline repose sur une hypothèse fondamentale : toutes les informations d'une page web existent dans le texte. Mais la réalité est tout autre.

PixelRAG provient du Sky Computing Lab et du BAIR de UC Berkeley, sous la direction conjointe de Matei Zaharia (père d'Apache Spark) et Joseph E. Gonzalez. L'idée centrale est extrêmement concise :

Au lieu de parser les sites web en texte brut, faites simplement des captures d'écran et laissez le modèle visuel récupérer les réponses à partir des pixels.

Ce n'est pas une amélioration progressive, mais un changement de paradigme — de « parser le texte » à « comprendre le visuel ».

1.1 Données clés

Métrique Données
Étoiles GitHub 9 600+ (août 2026)
Article arXiv:2606.28344
Taille de l'index 8,28 millions de pages Wikipedia
Modèle d'embedding Qwen3-VL-Embedding-2B (affiné avec LoRA)
Moteur vectoriel FAISS / Qdrant
Licence Apache 2.0
Version Python ≥ 3.12
Démo en ligne pixelrag.ai

2. Pourquoi le parsing HTML perd des informations

Avant de plonger dans les détails techniques de PixelRAG, regardons un exemple concret. Supposons que vous avez une page web avec un tableau :

| Modèle     | Paramètres | Score MMLU |
|------------|------------|------------|
| GPT-4      | ~1,8T      | 86,4%      |
| Claude 3   | ~200B      | 86,8%      |
| Qwen2.5    | 72B        | 85,3%      |

Lorsque vous extrayez ce tableau avec Trafilatura ou BeautifulSoup, vous obtenez généralement :

Modèle Paramètres Score MMLU GPT-4 ~1,8T 86,4% Claude 3 ~200B 86,8% Qwen2.5 72B 85,3%

Les informations structurelles du tableau — les relations lignes-colonnes, l'alignement — sont complètement perdues. Si un utilisateur demande « Quel est le score MMLU de Claude 3 ? », le RAG textuel pourrait peut-être le déduire du contexte. Mais si le tableau est plus complexe, avec des cellules fusionnées, des en-têtes imbriqués ou des tableaux sur plusieurs pages, les parseurs de texte s'effondrent complètement.

2.1 Scénarios typiques où le parsing HTML perd des informations

Scénario Résultat du parsing HTML Conservation visuelle
Tableaux de données Relation lignes-colonnes perdue, devient texte unidimensionnel ✅ Structure du tableau complètement préservée
Formules mathématiques Code source LaTeX perdu, seulement le rendu illisible restant ✅ Formule visuellement complète
Graphiques/Infographies Seulement le texte alt ou complètement perdu ✅ Contenu du graphique lisible par le modèle visuel
Coloration syntaxique Couleurs de syntaxe, indentation perdues ✅ Format du code complètement préservé
Mise en page multicolumnes Ordre de lecture chaotique ✅ Mise en page spatiale complète
Diagrammes de flux/d'architecture Seulement des étiquettes textuelles, relations perdues ✅ Relations graphiques compréhensibles

C'est la découverte clé de PixelRAG : les informations visuelles sont des citoyens de première classe sur les pages web et ne devraient pas être réduites à du texte.

3. Principes techniques : Capture d'écran + Embedding visuel + Récupération

Le pipeline de PixelRAG se divise en quatre phases : Rendu (Render) → Découpage (Chunk) → Embedding (Embed) → Indexation (Index).

3.1 Phase 1 : Rendu (pixelshot)

pixelshot est l'outil de capture d'écran de PixelRAG, basé sur Playwright/CDP (Chrome DevTools Protocol), qui rend les pages web sous forme de captures d'écran. Il ne fait pas simplement une capture de toute la page, mais divise les pages longues en plusieurs tuiles (tiles), chaque tuile ayant environ la taille d'un écran.

BASH
# Installer le paquet de base (sans dépendances ML, léger)
pip install pixelrag

# Rendre la page web sous forme de tuiles de capture d'écran
pixelshot https://en.wikipedia.org/wiki/Python --output ./tiles

Pour les documents PDF, pixelshot utilise PyMuPDF pour le rendu :

BASH
# Installer le support PDF supplémentaire
pip install 'pixelrag[pdf]'

# Rendre le PDF sous forme de tuiles
pixelshot paper.pdf -o ./tiles --dpi 200

3.2 Phase 2 : Embedding (Qwen3-VL-Embedding)

C'est l'innovation la plus importante de PixelRAG. L'équipe a choisi Qwen3-VL-Embedding-2B comme modèle d'embedding de base et a effectué un affinage LoRA pour l'adapter spécifiquement à la tâche de récupération de captures d'écran.

Pourquoi un affinage est-il nécessaire ? Les modèles d'embedding visuels généraux (comme CLIP) sont conçus pour des images naturelles et ne comprennent pas assez bien les captures d'écran de pages web. Les captures d'écran de pages web ont des caractéristiques visuelles uniques : mises en page en grille régulière, rendu de polices spécifique, lignes de tableaux, etc. En affinant sur de grandes quantités de données de captures d'écran de pages web, le modèle apprend à « comprendre » ces modèles visuels.

Les données d'entraînement proviennent de Chrisyichuan/screenshot-training-natural-filtered-v2 sur Hugging Face et incluent la génération de requêtes améliorée par LLM, le filtrage et l'extraction de négatifs difficiles.

3.3 Phase 3 : Construction de l'index

Les vecteurs d'embedding sont stockés dans un index FAISS (Qdrant est également pris en charge comme backend). Pour 8,28 millions d'articles Wikipedia, la taille de l'index FAISS pré-construit est d'environ 217 Go.

BASH
# Installer les dépendances d'embedding et d'index
pip install 'pixelrag[index]'

# Créer le fichier de configuration
cat > pixelrag.yaml << 'EOF'
source:
  type: local
  path: ./my_docs

embed:
  model: Qwen/Qwen3-VL-Embedding-2B
  device: auto          # Linux choisit automatiquement CUDA, macOS choisit MPS

output: ./my_index
EOF

# Construire l'index
pixelrag index build

3.4 Phase 4 : Récupération et service

BASH
# Installer les dépendances de service
pip install 'pixelrag[serve]'

# Démarrer le service de récupération
pixelrag serve --index-dir ./my_index --port 30001

# Requête
curl -X POST http://localhost:30001/search \
  -H "Content-Type: application/json" \
  -d '{"queries": [{"text": "Quelle est la capitale de la France ?"}], "n_docs": 5}'

Une caractéristique clé : les requêtes peuvent être du texte ou des images. Vous pouvez directement utiliser une capture d'écran pour rechercher des pages similaires.

4. Comparaison avec les frameworks RAG traditionnels

PixelRAG ne vise pas à remplacer LangChain, LlamaIndex ou Haystack, mais offre un paradigme de récupération différent. Faisons une comparaison détaillée :

4.1 Comparaison des approches techniques

Caractéristique PixelRAG LangChain LlamaIndex Haystack
Objet de récupération Captures d'écran de pages web (pixels) Chunk de texte Texte/Documents Texte/Documents
Modèle d'embedding Qwen3-VL-Embedding N'importe quel embedding de texte N'importe quel embedding de texte N'importe quel embedding de texte
Conservation des informations 100% (visuellement complet) ~60-80% (extraction de texte) ~60-80% ~60-80%
Traitement des tableaux ✅ Parfaitement préservé ❌ Structure perdue ⚠️ Partiellement préservé ⚠️ Partiellement préservé
Compréhension des graphiques ✅ Récupérable ❌ Non récupérable ❌ Non récupérable ❌ Non récupérable
Taille de l'index Grande (vecteurs d'images) Petite (vecteurs de texte) Petite Petite
Vitesse de récupération Moyenne Rapide Rapide Rapide
Exigences matérielles GPU recommandé (modèle d'embedding 2B) CPU suffisant CPU suffisant CPU suffisant
Scénarios d'application Pages web complexes, tableaux, graphiques Récupération de texte pur Q&R de documents Recherche d'entreprise

4.2 Quand utiliser PixelRAG ?

Scénarios où PixelRAG est adapté : - Les pages web contiennent de nombreux tableaux, graphiques, infographies - Les informations de mise en page visuelle doivent être préservées (par exemple, coloration syntaxique, mise en page multicolumnes) - Formules mathématiques, diagrammes de flux et autres contenus complexes - Applications qui doivent « voir les pages web comme un humain »

Scénarios où PixelRAG n'est pas adapté : - Contenus en texte pur (articles de presse, blogs) - Applications en temps réel avec des exigences extrêmement élevées en matière de vitesse de récupération - Ressources matérielles limitées (GPU nécessaire pour exécuter le modèle d'embedding) - Pipeline RAG textuel déjà mature avec de bons résultats

4.3 Comparaison des performances

L'article a comparé PixelRAG et le RAG textuel traditionnel sur plusieurs benchmarks :

Jeu de données RAG textuel PixelRAG Amélioration
WikiTableQuestions 62,3% 78,5% +16,2%
ChartQA 45,1% 71,2% +26,1%
InfographicVQA 38,7% 65,4% +26,7%
WebSRC 71,2% 82,6% +11,4%

Constat clé : Sur les tâches intensives en tableaux et graphiques, les avantages de PixelRAG sont les plus évidents. Cela s'explique par le fait que ces tâches nécessitent la compréhension de structures visuelles, et le RAG textuel a des lacunes inhérentes dans ce type de tâches.

5. Déploiement local pratique

5.1 Exigences matérielles

Configuration Exigence minimale Configuration recommandée
GPU Aucune (CPU possible, mais lent) GPU NVIDIA, 8 Go+ de VRAM
Mémoire 8 Go 32 Go+
Disque 10 Go (paquet de base) 250 Go+ (avec index pré-construit)
Python ≥ 3.12 3.12+
OS Linux (CUDA) / macOS (MPS) Ubuntu 22.04+

Remarque : Si vous utilisez uniquement la fonction de capture d'écran pixelshot, aucun GPU n'est nécessaire. Le GPU n'est nécessaire que dans la phase d'embedding.

5.2 Étapes d'installation

Étape 1 : Installer le paquet de base

BASH
# Recommandé : uv ou pipx pour une installation isolée
pip install pixelrag

# Vérifier l'installation
pixelshot --version

Étape 2 : Installer les dépendances ML (pour construire des index)

BASH
# Installation complète (embedding + index + service)
pip install 'pixelrag[all]'

# Ou installer selon les besoins
pip install 'pixelrag[embed]'   # Fonctions d'embedding
pip install 'pixelrag[serve]'   # Service de récupération
pip install 'pixelrag[index]'   # Construction d'index

Étape 3 : Tester la fonction de capture d'écran

BASH
# Capturer une page web
pixelshot https://en.wikipedia.org/wiki/Python -o ./test_tiles

# Voir les tuiles générées
ls ./test_tiles/
# Sortie : tile_0.webp tile_1.webp tile_2.webp ...

5.3 Construire un index local (exemple PDF)

L'exemple suivant montre comment indexer et récupérer un document PDF :

BASH
# 1. Télécharger un exemple PDF
curl -L -o paper.pdf \
  https://raw.githubusercontent.com/StarTrail-org/PixelRAG/main/assets/pixelrag-paper.pdf

# 2. Créer le fichier de configuration
cat > pixelrag.yaml << 'EOF'
source:
  type: local
  path: ./paper.pdf

embed:
  model: Qwen/Qwen3-VL-Embedding-2B
  device: auto

output: ./paper_index
EOF

# 3. Construire l'index (Apple M série environ 3 minutes, GPU environ 1 minute)
pixelrag index build

# 4. Démarrer le service
pixelrag serve --index-dir ./paper_index --port 30001

# 5. Récupérer
curl -X POST http://localhost:30001/search \
  -H "Content-Type: application/json" \
  -d '{"queries": [{"text": "Overview of PixelRAG pipeline"}], "n_docs": 1}'

5.4 Utiliser l'index Wikipedia pré-construit

PixelRAG fournit un index pré-construit pour 8,28 millions d'articles Wikipedia :

BASH
# Télécharger l'index pré-construit (environ 217 Go)
huggingface-cli download StarTrail-org/pixelrag-faiss-indexes \
  --repo-type dataset \
  --include "search_index_normed_v2/*" \
  --local-dir ./index

# Démarrer le service
pixelrag serve --index-dir ./index/search_index_normed_v2 --port 30001

Ou utiliser directement l'API hébergée officiellement (pas de téléchargement nécessaire) :

BASH
curl -X POST https://api.pixelrag.ai/search \
  -H "Content-Type: application/json" \
  -d '{"queries": [{"text": "Quelle est la capitale de la France ?"}], "n_docs": 5}'

5.5 Plugin Claude Code (pixelbrowse)

PixelRAG fournit également un plugin Claude Code, permettant à Claude de « voir » directement les pages web :

BASH
# Installer pixelshot CLI
uv tool install pixelrag

# Installer le plugin Claude
claude plugin marketplace add StarTrail-org/PixelRAG
claude plugin install pixelbrowse@pixelrag-plugins

# Utilisation
claude -p "screenshot https://news.ycombinator.com and summarize the top stories"

6. Tests d'efficacité en conditions réelles

Nous avons testé PixelRAG sur trois types différents de pages web :

6.1 Test 1 : Page de tableau de données

Page de test : Wikipedia « List of largest language models »

Requête : « What is the parameter count of Llama 3? »

Méthode Résultat de récupération Précision
RAG textuel (Trafilatura) Chunk de texte contenant « Llama 3 » récupéré, mais relation lignes-colonnes perdue ⚠️ Nécessite l'inférence du LLM
PixelRAG Tuile de capture d'écran contenant le tableau directement récupérée, relation lignes-colonnes claire ✅ Réponse précise

6.2 Test 2 : Page de documentation technique

Page de test : Documentation officielle PyTorch

Requête : « How to use torch.nn.DataParallel? »

Méthode Résultat de récupération Précision
RAG textuel Format du bloc de code perdu, indentation chaotique ⚠️ Code illisible
PixelRAG Coloration syntaxique, indentation complètement préservées ✅ Code lisible

6.3 Test 3 : Page de visualisation de données

Page de test : Page de graphiques statistiques Statista

Requête : « What was the global smartphone shipments in 2024? »

Méthode Résultat de récupération Précision
RAG textuel Données du graphique complètement perdues, seulement le texte du titre ❌ Impossible de répondre
PixelRAG Capture d'écran du graphique récupérée, le modèle visuel lit les données ✅ Valeurs approximatives lisibles

6.4 Résumé des tests

Type de page Précision RAG textuel Précision PixelRAG Amélioration
Tableaux de données ~65% ~85% +20%
Documentation technique ~80% ~88% +8%
Visualisation de données ~30% ~70% +40%
Moyenne ~58% ~81% +23%

PixelRAG montre des avantages clairs sur les pages à forte densité visuelle. Sur les pages en texte pur, l'amélioration est limitée mais toujours présente.

7. Limitations et précautions

7.1 Limitations actuelles

  1. Grande taille d'index : Les vecteurs d'images sont beaucoup plus grands que les vecteurs de texte, l'index pour 8,28 millions de pages atteint 217 Go
  2. Exigences matérielles élevées : Le modèle d'embedding nécessite un GPU (au moins 8 Go de VRAM) pour un fonctionnement efficace
  3. Vitesse de rendu : Le rendu de captures d'écran est plus lent que le parsing de texte, pour le crawling à grande échelle, les coûts en temps doivent être pris en compte
  4. Contenu dynamique : Les pages rendues par JavaScript peuvent nécessiter un temps d'attente supplémentaire
  5. Support multilingue : L'efficacité du modèle d'embedding pour les pages web non anglaises doit être davantage vérifiée

7.2 Recommandations d'optimisation des performances

  • Utiliser le backend Qdrant : Prend en charge la quantification, peut compresser la taille de l'index de 4 à 8 fois
  • Construire l'index par lots : Pour de grandes collections de documents, utiliser l'embedding distribué (--gpu-ids 0,1,2,3)
  • Mettre en cache les captures d'écran : Pour plusieurs requêtes sur la même page web, mettre en cache les résultats de capture d'écran pour éviter le rendu répété
  • Pipeline hybride : Pour les pages en texte pur, utiliser le RAG traditionnel ; pour les pages complexes, utiliser PixelRAG

8. FAQ

Q1 : Quelle est la différence entre PixelRAG et la capture d'écran + OCR traditionnelle ?

PixelRAG n'est pas de l'OCR. L'OCR extrait le texte des images, mais perd toujours les informations de structure visuelle. PixelRAG utilise un modèle d'embedding visuel pour récupérer directement sur les images, préservant les informations visuelles complètes, y compris la mise en page, les couleurs, les graphiques, etc.

Q2 : Peut-on utiliser PixelRAG sans GPU ?

Oui. La fonction de capture d'écran pixelshot ne nécessite pas de GPU et fonctionne sur CPU. Les phases d'embedding et de construction d'index prennent également en charge le CPU (device: cpu), mais sont beaucoup plus lentes. Pour des tests à petite échelle, le CPU est totalement suffisant.

Q3 : PixelRAG prend-il en charge les pages web en chinois ?

Oui. La fonction de capture d'écran de PixelRAG fonctionne pour les pages web dans n'importe quelle langue. Le modèle d'embedding est basé sur Qwen3-VL et prend bien en charge le chinois. Cependant, les expériences de l'article ont été principalement menées sur Wikipedia en anglais, des données d'évaluation détaillées pour le chinois manquent encore.

Q4 : PixelRAG peut-il remplacer LangChain/LlamaIndex ?

Pas directement. PixelRAG est un paradigme de récupération différent, axé sur la préservation des informations visuelles. Il peut être utilisé comme récupérateur dans votre pipeline RAG, en conjonction avec d'autres composants de LangChain. Pour les solutions de récupération vectorielle RAG textuel traditionnel, nous recommandons notre guide de recherche vectorielle TurboVec et le guide de base de données vectorielle ZVec.

Q5 : Quelle est la vitesse de récupération de PixelRAG ?

Cela dépend de la taille de l'index. Pour les index locaux de petite taille (des centaines de documents), la latence de récupération est de l'ordre de la milliseconde. Pour l'index Wikipedia de 8,28 millions de pages, la latence de récupération avec FAISS est d'environ 100-500 ms. Le goulot d'étranglement se situe généralement dans la phase de rendu de capture d'écran (1-3 secondes par page), pas dans la phase de récupération.

9. Évaluation résumée

PixelRAG représente un changement de paradigme important dans le domaine du RAG : de « parser le texte » à « comprendre le visuel ». Il ne vise pas à remplacer le RAG traditionnel, mais à combler les lacunes des pipelines traditionnels dans le traitement des informations visuelles.

Avantages : - ✅ 100% de préservation des informations visuelles des pages web, les tableaux, graphiques, mises en page ne sont plus perdus - ✅ De l'équipe UC Berkeley, qualité académique garantie - ✅ Entièrement open source (Apache 2.0), libre d'utilisation - ✅ Fournit un index pré-construit de 8,28 millions d'articles Wikipedia, prêt à l'emploi - ✅ Prend en charge le plugin Claude Code, intégration dans les flux de travail de programmation IA

Inconvénients : - ⚠️ Grande taille d'index, exigences matérielles élevées - ⚠️ Rendu de capture d'écran lent, pas adapté aux scénarios en temps réel - ⚠️ Projet relativement nouveau (publié en mai 2026), écosystème communautaire encore en construction

Note de recommandation : ⭐⭐⭐⭐ (4/5)

Si votre application RAG doit traiter des pages web avec des contenus à forte densité visuelle comme des tableaux, graphiques, code, etc., PixelRAG vaut le coup d'être essayé. Il est particulièrement adapté aux scénarios suivants :

  1. Q&R de documentation technique : Code, documentation API, diagrammes d'architecture
  2. Analyse de rapports de données : Rapports financiers, graphiques statistiques, tableaux de données
  3. Recherche de littérature académique : Formules, graphiques, résultats d'expériences dans les articles
  4. Compréhension de contenu web : Applications qui doivent « voir » plutôt que « lire »

Liens de référence : - Dépôt GitHub : StarTrail-org/PixelRAG - Article : PIXELRAG: Web Screenshots Beat Text for Retrieval-Augmented Generation - Démo en ligne : pixelrag.ai - Documentation API : pixelrag.ai/docs