PixelRAG 深度解析:不读 HTML 的视觉 RAG,截图检索准确率提升 18%

PixelRAG 深度解析:不读 HTML 的视觉 RAG,截图检索准确率提升 18%

引言:传统 RAG 的致命缺陷

如果你正在构建企业知识库、AI 搜索系统或文档问答应用,你一定遇到过 RAG(Retrieval-Augmented Generation,检索增强生成)。传统 RAG 的工作流程大家都熟悉:抓取网页 → 解析 HTML → 切分文本块 → 向量化 → 检索 → 喂给大模型。

问题出在第二步。

想象一个 Wikipedia 页面,里面有一张股票价格表格:

年份股价
199012.4
199118.7
199542.3

人类一眼就能看出”1995 年之前最高价是 18.7”。但 HTML 解析器把表格变成纯文本后,列对齐关系消失了,表格变成了:

年份 股价 1990 12.4 1991 18.7 1995 42.3

大模型面对这串文字,很难准确回答”1995 年之前的最高价”。更糟的是,图表、信息图、多栏布局、PDF 中的图文混排——这些在 HTML 解析中直接丢失的信息,恰恰是用户最常提问的内容类型。

这就是 UC Berkeley 团队创建 PixelRAG 的动机:既然网页本质上是视觉的,为什么不用截图来检索?


PixelRAG 核心原理:从像素到答案

PixelRAG 的论文标题直截了当——“Web Screenshots Beat Text for Retrieval-Augmented Generation”(网页截图在 RAG 中胜过文本)。它来自 Berkeley Sky Computing Lab、BAIR 和 Berkeley NLP 三个顶级实验室,由 Yichuan Wang、Zhifei Li 等人主导,Matei Zaharia(Spark 之父)、Joseph Gonzalez 和 Sewon Min 联合指导。

两大核心组件

1. 渲染器(pixelshot)

pixelshot 是 PixelRAG 的”眼睛”。它使用 Playwright + Chrome DevTools Protocol(CDP)将任意网页或 PDF 渲染为截图瓦片(tiles)。每个瓦片是页面在屏幕分辨率下的一个视口大小的图片。

# 将 Wikipedia Python 页面渲染为截图瓦片
pixelshot https://en.wikipedia.org/wiki/Python --output ./tiles

关键优势:

  • JavaScript 渲染的内容——SPA、动态加载的数据,全部可见
  • 表格、图表、信息图——保留完整的视觉结构
  • 多栏布局——空间关系原封不动
  • PDF 文档——通过 poppler 支持,按页渲染

2. 视觉嵌入模型

截图瓦片通过 Qwen3-VL-Embedding-2B 模型进行向量化。这个模型在截图数据上进行了 LoRA 微调(训练数据集和适配器均已开源),使得截图在向量空间中可以按视觉内容被检索。

查询”法国的首都是什么?“时,系统不是匹配文本关键词,而是找到包含答案的截图瓦片——那个瓦片上有人类能直接阅读的 infobox、表格和上下文。

工作流程

文档 → pixelshot 渲染截图 → Qwen3-VL 嵌入 → FAISS 索引

查询 → Qwen3-VL 嵌入查询 → FAISS 检索 → 返回截图瓦片 → VLM 阅读图片回答

注意:整个流程没有任何文本中间表示。截图进去,截图出来,VLM(如 Claude、GPT-4o、Qwen-VL)直接从图片中读取答案。


与主流 RAG 框架对比

PixelRAG 不是要替代 Firecrawl 或 Jina Reader,而是解决一个不同层面的问题。让我们理清它们的关系:

维度FirecrawlJina ReaderRAGFlowPixelRAG
核心功能网页爬取 + 结构化提取单 URL 内容提取端到端 RAG 引擎视觉检索 + 截图阅读
数据处理HTML → Markdown/JSONHTML → 文本多格式解析HTML → 截图瓦片
表格处理部分保留丢失列对齐依赖解析器完整保留(图片)
图表处理丢失丢失部分 OCR完整保留
视觉布局丢失丢失部分完整保留
适用场景大规模爬取快速内容提取企业文档问答结构化内容检索
开源是(Apache 2.0)

关键洞察:Firecrawl 和 Jina Reader 是数据获取层工具,PixelRAG 是检索方式层的创新。它们可以互补——用 Firecrawl 爬取大规模网页,用 PixelRAG 对结构化内容做视觉检索。

性能基准测试

论文中的实验数据令人印象深刻:

基准测试文本 RAG(最佳基线)PixelRAG提升幅度
SimpleQA71.6%78.8%+7.2%
NQ-Tables42.5%48.8%+6.3%
EVQA29.6%45.1%+15.5%
MMSearch显著提升
LiveVQA显著提升
MoNaCo(Agent 基准)基线Token 减少 3x效率提升

最大提升在表格和结构化内容上——EVQA(视觉问答)提升 15.5 个百分点,这正是因为传统文本 RAG 完全无法处理图表信息。


安装与快速上手指南

最简安装

pip install pixelrag

这给你 pixelshot(渲染器)和核心库。按需添加功能模块:

pip install 'pixelrag[embed]'   # chunk、embed、build-index 命令
pip install 'pixelrag[index]'   # 完整流水线编排
pip install 'pixelrag[serve]'   # FastAPI 搜索服务器
pip install 'pixelrag[pdf]'     # PDF 渲染支持(需要 poppler)

零配置体验:托管 Wikipedia API

最快的体验方式——Berkeley 团队托管了一个 828 万页 Wikipedia 的预建索引:

# 无需安装,直接查询
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}'

返回结果包含匹配的截图瓦片(base64 编码的图片)和文档元数据。你可以直接在浏览器中体验:pixelrag.ai

本地构建索引

对自己的文档构建索引:

1. 创建配置文件 pixelrag.yaml

source:
  type: local
  path: ./my_docs

embed:
  model: Qwen/Qwen3-VL-Embedding-2B
  device: auto          # Linux 自动选 CUDA,macOS 选 MPS

output: ./my_index

2. 构建并启动服务:

# 构建索引(Apple M 系列约 3 分钟,GPU 约 1 分钟)
pixelrag index build

# 启动搜索服务
pixelrag serve --index-dir ./my_index --port 30001

3. 查询:

curl -X POST http://localhost:30001/search \
  -H "Content-Type: application/json" \
  -d '{"queries": [{"text": "PixelRAG 的核心原理是什么?"}], "n_docs": 5}'

实战:索引一个 PDF

pip install 'pixelrag[index,pdf]'

# 下载示例 PDF(PixelRAG 论文本身)
curl -L -o paper.pdf https://raw.githubusercontent.com/StarTrail-org/PixelRAG/main/assets/pixelrag-paper.pdf

# 创建配置
cat > pixelrag.yaml << 'EOF'
source:
  type: local
  path: ./paper.pdf
embed:
  model: Qwen/Qwen3-VL-Embedding-2B
  device: auto
output: ./paper_index
EOF

# 构建 → 服务 → 查询
pixelrag index build
pixelrag serve --index-dir ./paper_index --port 30001

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

给 Claude Code 装上”眼睛”

PixelRAG 还提供了一个 Claude Code 插件 pixelbrowse,让 Claude 直接”看”网页:

# 安装 pixelshot CLI
uv tool install pixelrag    # 或 pipx install pixelrag

# 安装 Claude 插件
claude plugin marketplace add StarTrail-org/PixelRAG
claude plugin install pixelbrowse@pixelrag-plugins

然后:

claude -p "screenshot https://news.ycombinator.com and summarize the top stories"
claude -p "screenshot https://arxiv.org/abs/2404.12387 and explain the key findings"

Claude 会截图页面,然后像人类一样阅读图片中的内容——表格、图表、布局一览无余。


实际案例:复杂表格与图表检索

案例 1:企业财报数据表

假设你有一个包含多年财务数据的 HTML 表格。传统 RAG 解析后,列对齐关系丢失,大模型很难回答”2023 年 Q3 的营收同比增长率”这类需要跨列计算的问题。

PixelRAG 的截图保留了完整的表格视觉结构,VLM 可以像人类一样定位”2023 Q3”单元格,然后横向读取对应数值,再与”2022 Q3”对比计算。

案例 2:学术论文中的实验对比图

论文中的柱状图、折线图在文本解析中完全丢失。PixelRAG 将图表渲染为截图,VLM 可以直接从图中读取趋势、对比数值。

案例 3:电商产品对比页面

多列产品规格对比表,传统解析器经常把不同产品的参数混在一起。PixelRAG 的截图保留了空间布局,VLM 能准确区分不同产品的规格。


适用场景分析

强烈推荐使用的场景

场景原因
企业知识库内部文档充满表格、流程图、审批表单
学术文献检索论文中的实验数据、图表是核心信息
电商数据产品规格表、价格对比、用户评价截图
政府/法规文档法规条文中的表格、附件、签章
财报分析财务报表、数据可视化图表

不太适合的场景

场景原因
纯文本博客文章文本 RAG 已经足够好,视觉 RAG 增加不必要开销
代码文档代码块用文本表示更精确
大规模实时爬取截图渲染比文本提取慢得多

局限性与未来方向

当前局限

1. 存储成本

维基百科 828 万页的预建索引约 217 GB。对于企业级应用,如果文档量大,存储截图索引的成本远高于文本索引。不过项目报告了通过图像压缩可实现 97% 的存储节省,同时保持检索精度。

2. 渲染延迟

pixelshot 需要启动无头浏览器渲染每个页面,比直接解析 HTML 慢。对于需要实时处理数千 URL 的场景,这是瓶颈。

3. GPU 依赖

嵌入模型 Qwen3-VL-Embedding-2B 在 GPU 上运行效果最佳。虽然支持 CPU 和 Apple Silicon(MPS),但大规模索引构建仍需 GPU 资源。

4. 查询成本

图像 Token 比文本 Token 更贵。虽然 PixelRAG 通过精准检索实现了 3 倍的 Token 节省(因为返回的截图比多个文本块更聚焦),但每次查询的 VLM 推理成本仍高于纯文本方案。

未来方向

  • 更高效的视觉压缩:进一步降低存储和传输成本
  • 流式渲染:支持大规模网页的增量式截图索引
  • 多模态融合:结合文本和视觉信号进行混合检索
  • 端侧部署:优化模型以支持边缘设备运行

总结

PixelRAG 提出了一个大胆但直觉上正确的观点:网页本来就是给人看的,为什么要先把它”翻译”成机器文本再让机器读? 通过保留网页的原始视觉形态,PixelRAG 在表格、图表、复杂布局等场景下实现了传统文本 RAG 无法企及的检索精度。

它不是要取代 Firecrawl 或 Jina Reader,而是填补了 RAG 生态中”视觉检索”这一空白。如果你的知识库包含大量结构化内容(表格、图表、表单),PixelRAG 值得认真评估。

项目链接:


常见问题(FAQ)

Q1:PixelRAG 和 Firecrawl/Jina Reader 是什么关系?能一起用吗?

PixelRAG 是检索方式的创新(用截图代替文本),Firecrawl/Jina Reader 是数据获取工具。它们可以互补——用 Firecrawl 大规模爬取网页,用 PixelRAG 对结构化内容做视觉检索。

Q2:PixelRAG 需要 GPU 吗?

构建索引时推荐 GPU(速度快 3 倍以上),但支持 Apple Silicon(MPS)和 CPU 模式。查询服务在 CPU 上也能运行。

Q3:828 万页 Wikipedia 索引 217GB,存储成本太高怎么办?

PixelRAG 报告通过图像压缩可实现 97% 的存储节省。同时支持 Qdrant 后端的量化配置(如 int8 量化),进一步降低内存占用。

Q4:PixelRAG 支持哪些文档格式?

目前支持网页(HTML/JS 渲染)、PDF(需安装 poppler)和本地图片。可以混合处理 URL 和本地文件。

Q5:PixelRAG 的准确率提升 18% 是在什么基准上?

在 SimpleQA 基准上,PixelRAG 达到 78.8% 准确率,比最强文本 RAG 基线(71.6%)高 7.2 个百分点。在表格密集的 NQ-Tables 上提升 6.3 个百分点,在视觉问答 EVQA 上提升 15.5 个百分点。

Q6:如何给 Claude Code 添加视觉网页访问能力?

安装 pixelshotuv tool install pixelrag),然后安装 Claude 插件(claude plugin install pixelbrowse@pixelrag-plugins)。之后 Claude 可以直接截图并阅读任意网页。


希望这篇深度解析对您有所帮助!如果您正在构建涉及表格、图表等结构化内容的 RAG 系统,PixelRAG 提供了一个全新的思路——让机器像人类一样”看”网页,而不是强迫网页适应机器的文本偏好。