PixelRAG:让 AI 直接看网页截图的视觉 RAG 系统,准确率比传统 RAG 高 18%,7500 Star
这个开源的 RAG 项目挺有意思,让 AI 不再"读文字",直接看网页截图。传统的 RAG 都是在做文本解析,但网页中的表格、图表、布局,在解析的时候很容易丢失。国外的开发者换了一种方式:不解析网页,直接把网页截图给视觉模型,AI 像人一样看页面,然后从图片里找到需要的信息。尤其是查报告、网页数据、复杂表格的时候,这种方式还挺实用。
现在这个项目开源了,叫 PixelRAG,在 GitHub 上已经有 7500 多个 Star。
实际使用体验
假设要查一下 Claude Code 如何工作,PixelRAG 的处理方式很特别,给一个链接,它就直接把网页截成几幅图,然后经过了 Chunk、Embedding,在本地启动了一个 30001 的服务。本地服务跑起来后,就可以用 API 进行搜索了,你问什么,它就在图里找,找到之后把截图喂给大模型,让模型直接看图回答。
整个过程中,AI 看到的就是人眼看到的东西,表格是表格,图表是图表,布局没乱。传统的 RAG 中,表格被压缩成一行行的文字,图表直接消失,多栏布局被打成一维的文本,所以它准确率比传统 RAG 高 18%。
核心技术
用截图代替文本解析。 传统的 RAG 的第一步就是"HTML 转 text",这一过程会把表格、图表、布局等全部丢弃。PixelRAG 跳过这一步,直接把网页截成图片,使用 Playwright 来控制 Chrome,把网页全部渲染出来之后再切分成一张张图片,每一块图片都是 875×1024 像素。这样,表格的列对齐、图表的坐标轴、多栏的左右布局,都能原样保留,就相当于给 AI 配了一双可以看原图的眼睛。
用视觉模型做嵌入。 截取好之后,使用 Qwen3-VL-Embedding-2B 模型为每一幅图生成一个 2048 维的向量。该模型是在截图数据上进行 LoRA 微调的,并且训练数据也在 Hugging Face 上公开了,因此对表格、图表、布局等视觉元素比较敏感。不像文本嵌入只能看懂字,它能看懂"图的结构",可以识别出表中有多少列,图表属于什么类型。
使用 FAISS 进行向量检索。 向量生成完毕之后,使用 FAISS 建立索引,并进行近似最近邻搜索。可以自己创建索引,也可以使用官方预先构建好的 Wikipedia 索引,该索引中包含了 828 万篇维基百科文章和 2810 万张截图,索引大小为 217GB 左右,支持 fp16 存储。
提供托管 API,不用自己搭。 官方提供了一个可以直接调用的在线 API,不需要 API Key、不需要在本地安装模型、也不需要下载几百 GB 的索引。发出一个请求之后,返回出最相关的一张或者几张截图,可以以图搜图,比如说你有一张表格截图,要找类似的表格,直接把图发过来就可以了。对于做数据分析的人来说,这个功能非常实用,表格结构相似的内容可以一目了然地对应起来。
完整使用流程
先安装 pixelshot:
pip install pixelshot
整个过程一共分成六个步骤:
1. 把网页转换成图片
pixelshot https://code.claude.com/docs/zh-CN/how-claude-code-works --output ./tiles
将 Claude Code 文档页面保存下来,之后 PixelRAG 会根据这些页面图片来进行视觉检索。
2. 对页面进行切片
pixelrag chunk --tiles-dir ./tiles --output-dir ./chunks
将长页面分成若干个小段,便于之后快速找到需要的内容。
3. 生成向量数据
pip install "pixelrag[embed]"
pixelrag embed --shard-dir ./chunks --output-dir ./embeddings
安装向量生成模块,将页面切片转化为可以被 AI 检索的向量数据。
4. 创建搜索索引
pixelrag build-index build --embeddings-dir ./embeddings --output-dir ./index
把生成的向量整理成一个本地搜索库,后面的查询都用它来完成。
5. 启动本地搜索服务
pip install "pixelrag[serve]"
pixelrag serve --index-dir ./index --port 30001
启动本地接口,让其他应用可以调用 PixelRAG 搜索 Claude Code 文档。
6. 测试搜索
curl -X POST http://localhost:30001/search -H "Content-Type: application/json" -d "{\"queries\":[{\"text\":\"Claude Code 是怎么工作的?\"}],\"n_docs\":5}"
发送一个问题,让 PixelRAG 找出最相关的文档内容。
后面换成 GitHub 项目文档、API 文档、PDF 手册,流程也是一样。
注意事项
它不适用于纯文本文档,如果文档是博客、新闻或者代码注释的话,传统的文本 RAG 已经可以满足需求了,PixelRAG 的优点是表格、图表、布局等视觉元素。
本地建索引要使用 GPU,嵌入阶段要使用 GPU,如果只用 CPU 跑的话就会很慢。
PixelRAG 最有趣的地方就是把"AI 能看到什么"这个问题往前推进了一步。传统的 RAG 隐含的假设是先解析成文本然后让 AI 看,但是 HTML 解析会丢失掉 40% 以上的内容,这个问题一直存在。PixelRAG 的作者干脆把解析这一步省略了,直接让 AI 看图,这思路简单粗暴,但效果确实好。
项目基于 Apache-2.0 协议开放。
开源地址:https://github.com/StarTrail-org/PixelRAG