许可证: mit
库名称: colpali
基础模型: vidore/colpaligemma-3b-pt-448-base
语言:
- 英语
标签:
- vidore
- vidore实验性
数据集:
- vidore/colpali_train_set
新版本: vidore/colpali-v1.3
管道标签: 视觉文档检索
ColPali: 基于PaliGemma-3B与ColBERT策略的视觉检索模型
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%来自公开学术数据集的训练集,37%是由网络爬取的PDF文档页面组成并通过VLM(Claude-3 Sonnet)生成伪问题的合成数据集。训练集完全采用英语设计,使我们能够研究对非英语语言的零样本泛化能力。我们明确验证了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.2"
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},
}