引言:传统 RAG 的致命缺陷
如果你正在构建企业知识库、AI 搜索系统或文档问答应用,你一定遇到过 RAG(Retrieval-Augmented Generation,检索增强生成)。传统 RAG 的工作流程大家都熟悉:抓取网页 → 解析 HTML → 切分文本块 → 向量化 → 检索 → 喂给大模型。
问题出在第二步。
想象一个 Wikipedia 页面,里面有一张股票价格表格:
| 年份 | 股价 |
|---|---|
| 1990 | 12.4 |
| 1991 | 18.7 |
| 1995 | 42.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,而是解决一个不同层面的问题。让我们理清它们的关系:
| 维度 | Firecrawl | Jina Reader | RAGFlow | PixelRAG |
|---|---|---|---|---|
| 核心功能 | 网页爬取 + 结构化提取 | 单 URL 内容提取 | 端到端 RAG 引擎 | 视觉检索 + 截图阅读 |
| 数据处理 | HTML → Markdown/JSON | HTML → 文本 | 多格式解析 | HTML → 截图瓦片 |
| 表格处理 | 部分保留 | 丢失列对齐 | 依赖解析器 | 完整保留(图片) |
| 图表处理 | 丢失 | 丢失 | 部分 OCR | 完整保留 |
| 视觉布局 | 丢失 | 丢失 | 部分 | 完整保留 |
| 适用场景 | 大规模爬取 | 快速内容提取 | 企业文档问答 | 结构化内容检索 |
| 开源 | 是 | 是 | 是 | 是(Apache 2.0) |
关键洞察:Firecrawl 和 Jina Reader 是数据获取层工具,PixelRAG 是检索方式层的创新。它们可以互补——用 Firecrawl 爬取大规模网页,用 PixelRAG 对结构化内容做视觉检索。
性能基准测试
论文中的实验数据令人印象深刻:
| 基准测试 | 文本 RAG(最佳基线) | PixelRAG | 提升幅度 |
|---|---|---|---|
| SimpleQA | 71.6% | 78.8% | +7.2% |
| NQ-Tables | 42.5% | 48.8% | +6.3% |
| EVQA | 29.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 值得认真评估。
项目链接:
- GitHub:StarTrail-org/PixelRAG
- 在线体验:pixelrag.ai
- 论文:arXiv:2606.28344
- 许可证:Apache 2.0
常见问题(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 添加视觉网页访问能力?
安装 pixelshot(uv tool install pixelrag),然后安装 Claude 插件(claude plugin install pixelbrowse@pixelrag-plugins)。之后 Claude 可以直接截图并阅读任意网页。
希望这篇深度解析对您有所帮助!如果您正在构建涉及表格、图表等结构化内容的 RAG 系统,PixelRAG 提供了一个全新的思路——让机器像人类一样”看”网页,而不是强迫网页适应机器的文本偏好。