老 pipeline 的七宗罪
┌──────────┐ ┌──────┐ ┌──────┐ ┌─────────┐ ┌────────┐
│ PDF / 图 │→│ OCR │→│切块 │→│文本 Embed│→│向量索引 │
└──────────┘ └──────┘ └──────┘ └─────────┘ └────────┘
↓ 每一步都在丢信息
表格结构丢了、图表描述丢了、多栏顺序错了、字体重音丢了、图里文字识别错了、段落边界猜错了、跨页引用断了
扫描文档 OCR 错误率
印刷品 OCR 到 98%+ 听着不错,但财报/合同里一个数字、一个币种符号识别错,下游答错的概率就是 100%。
图表/表格难 serialize
把表格变成 CSV 要再跑一个布局分析模型,折线图要 chart-to-table,每一层都是误差源。
多栏 / 杂志版式
PDF 的文本流 ≠ 阅读顺序。两栏论文被错按行拼接,一段话分到两个 chunk。
长公式 / 代码 / 非拉丁文
OCR 对 LaTeX、代码缩进、中日韩混排错误率飙升。
工程复杂度
生产 RAG pipeline 常堆了 OCR 引擎、布局分析、表格抽取、图像描述、切块 heuristics——每个组件都要维护、升级、监控。
ColPali 的冷思考
2024 年 Illuin Technology 团队发表论文《ColPali: Efficient Document Retrieval with Vision Language Models》,提出一个简单到刺眼的想法:
核心洞察
VLM(视觉语言模型)已经能"读"图像中的文字、图表、公式,而且内部已经把视觉和语言对齐到同一 embedding 空间。既然如此,何必把文档先过一遍 OCR 再索引?直接把页面图像扔进 VLM,拿 patch-level embedding 做检索不就行了?
VLM(视觉语言模型)已经能"读"图像中的文字、图表、公式,而且内部已经把视觉和语言对齐到同一 embedding 空间。既然如此,何必把文档先过一遍 OCR 再索引?直接把页面图像扔进 VLM,拿 patch-level embedding 做检索不就行了?
实验结果震撼——在 ViDoRe benchmark 上,ColPali 比当时最强的"OCR + BM25 + 语义重排"流水线 nDCG@5 高出 20+ 个点,且索引代码从几百行降到几十行。
ViDoRe 基准
ColPali 团队同时开源了 ViDoRe(Visual Document Retrieval) benchmark,涵盖十大类视觉文档:
| 数据集 | 文档特点 | 典型 query |
|---|---|---|
| ArxivQA | 论文图 / 公式 | "图 3 的 y 轴是什么?" |
| DocVQA | 表单 / 发票 | "总金额多少" |
| InfoVQA | 信息图 / 海报 | "图标代表什么" |
| TabFQuAD | 法语表格 | 法语业务问答 |
| Shift Project | 环保报告表格图 | "2050 年预测 CO2 排放" |
| Energy | 能源报告 | "核电比例" |
| Government Reports | 政府文件扫描版 | 政策条款查询 |
| Healthcare | 医疗图表 | "图中哪种药疗效最好" |
| Artificial Intelligence | AI 论文幻灯片 | "Transformer 结构图" |
| ViDoRe v2(2025) | 更难、更长、中英混合 | 多页跨文档引用 |
ColPali 吊打 OCR pipeline 的三张硬牌
① 无解析环节
输入只有 image.png。没 OCR 引擎、没布局分析、没表格抽取——输入越少,误差源越少。代码简化到 ≤ 50 行。
② 视觉信息保留完整
图表的形状、颜色、字体大小、表格结构在像素里还在。模型"看到"了,文本 pipeline "看不到"。
③ Late Interaction 灵活
每页输出 1024 个 patch 向量,query 也是多 token 向量。查询时算 MaxSim——每个 query token 找最相近的 patch。相当于"眼睛扫描全页,只盯相关部分"。
④ 跨语言白送
PaliGemma 本来就多语言训练。中文 PDF、日语技术文档、阿拉伯法律文件,同一个模型通吃。
谁不该用 ColPali
不是银弹——以下场景先别上:
- 纯 markdown / 结构化文本(Wikipedia、代码库)——文字 embedding 更便宜更准
- 存储 / 显存 / 带宽极度受限——一页 1024 向量,索引膨胀明显
- 文档极少(<1000 页)——OCR + BM25 一行 grep 就够
- 超高 QPS(> 1000 qps)场景——成本远高于文本 RAG
本章小结
- 老 RAG 管道在 OCR → 切块 → Embed 的每一步都在丢信息
- 表格、图表、多栏、扫描件是文本管道的死穴
- ColPali:把页面当图像,让 VLM 直接读,patch 级向量 + late interaction 打分
- 在 ViDoRe benchmark 上显著超越所有文本流水线,索引代码减少一个数量级
- 不适合纯文本文档、存储敏感、文档数量极少的场景