许可证: mit
库名称: colpali
基础模型: vidore/colpaligemma-3b-pt-448-base
语言:
- 英语
标签:
- vidore
- vidore-experimental
数据集:
- vidore/colpali_train_set
管道标签: visual-document-retrieval
ColPali: 基于PaliGemma-3B与ColBERT策略的视觉检索模型
本版本采用256批次大小在原始ColPali模型相同数据上训练了3个周期
ColPali是一种基于创新模型架构和训练策略的视觉语言模型(VLM),用于高效索引文档的视觉特征。
该模型是PaliGemma-3B的扩展版本,可生成ColBERT风格的多向量文本与图像表示。
该模型在论文ColPali: 基于视觉语言模型的高效文档检索中首次提出,并在此代码库中发布。

版本特性
本版本使用colpali-engine==0.2.0
训练,但可兼容任何>=0.2.0
的版本。
相较于vidore/colpali
,本版本采用查询右填充以修复查询编码中的异常标记。
同时基于修复后的vidore/colpaligemma-3b-pt-448-base
模型,确保投影层初始化的确定性。
模型训练了5个周期,采用批次内负样本和困难负样本挖掘策略,并延长预热步数至1000步(10倍)以缓解非英语语言崩溃问题。
训练数据与论文描述的ColPali数据集相同。
模型描述
该模型从现成的SigLIP模型迭代构建而来。
我们首先微调得到BiSigLIP,然后将SigLIP输出的图像块嵌入输入大型语言模型PaliGemma-3B创建BiPali。
通过语言模型处理图像块嵌入的优势在于,这些嵌入会被自然地映射到与文本输入(查询)相似的潜在空间。
这使得可以采用ColBERT策略计算文本标记与图像块之间的交互,相比BiPali实现了性能的阶跃式提升。
模型训练
数据集
我们的127,460个查询-页面对训练集包含:公开学术数据集的训练集(63%),以及由网络爬取PDF文档页面构成并通过VLM(Claude-3 Sonnet)生成伪问题增强的合成数据集(37%)。
训练集设计为全英文,以便研究对非英语语言的零样本泛化能力。我们明确验证了ViDoRe评估集与训练集之间不存在多页PDF文档重叠。
另取2%样本创建验证集用于超参数调优。
注:语言模型(Gemma-2B)的预训练语料包含多语言数据,PaliGemma-3B的多模态训练过程也可能涉及多语言数据。
参数配置
所有模型在训练集上训练1个周期。除非特别说明,我们以bfloat16
格式训练模型,在语言模型的Transformer层及随机初始化的最终投影层上应用低秩适配器(LoRA),参数设为alpha=32
和r=32
,使用paged_adamw_8bit
优化器。
训练采用8GPU数据并行,学习率5e-5配合2.5%预热步数的线性衰减,批次大小为32。
使用方式
安装colpali-engine
:
pip install colpali-engine>=0.3.0,<0.4.0
然后运行以下代码:
from typing import cast
import torch
from PIL import Image
from colpali_engine.models import ColPali, ColPaliProcessor
model_name = "vidore/colpali-v1.3"
model = ColPali.from_pretrained(
model_name,
torch_dtype=torch.bfloat16,
device_map="cuda:0",
).eval()
processor = ColPaliProcessor.from_pretrained(model_name)
images = [
Image.new("RGB", (32, 32), color="white"),
Image.new("RGB", (16, 16), color="black"),
]
queries = [
"注意力机制真的是万能的吗?",
"Benjamin、Antoine、Merve和Jo是最好的朋友吗?",
]
batch_images = processor.process_images(images).to(model.device)
batch_queries = processor.process_queries(queries).to(model.device)
with torch.no_grad():
image_embeddings = model(**batch_images)
query_embeddings = model(**batch_queries)
scores = processor.score_multi_vector(query_embeddings, image_embeddings)
局限性
- 专注领域:模型主要针对PDF类文档和高资源语言,对其他文档类型或低资源语言的泛化能力可能有限。
- 支持框架:模型依赖ColBERT延迟交互机制衍生的多向量检索,可能需要工程改造才能适配缺乏原生多向量支持的通用向量检索框架。
许可协议
ColPali的视觉语言骨干模型(PaliGemma)遵循其模型卡片中规定的gemma
许可。模型附加的适配器采用MIT许可。
联系方式
- Manuel Faysse: manuel.faysse@illuin.tech
- Hugues Sibille: hugues.sibille@illuin.tech
- Tony Wu: tony.wu@illuin.tech
引用
若在研究中使用本组织的任何数据集或模型,请按以下格式引用原始论文:
@misc{faysse2024colpaliefficientdocumentretrieval,
title={ColPali: 基于视觉语言模型的高效文档检索},
author={Manuel Faysse and Hugues Sibille and Tony Wu and Bilel Omrani and Gautier Viaud and Céline Hudelot and Pierre Colombo},
year={2024},
eprint={2407.01449},
archivePrefix={arXiv},
primaryClass={cs.IR},
url={https://arxiv.org/abs/2407.01449},
}