智源开源多模态向量模型BGE-VL:多模态检索新突破
昨天智源研究院开源了多模态向量模型BGE-VL,助力主要多模态检索任务达到SOTA。
论文地址:https://arxiv.org/abs/2412.14475
项目地址: https://github.com/VectorSpaceLab/MegaPairs
模型地址: https://huggingface.co/BAAI/BGE-VL-MLLM-S1
先简单看下研究动机:
现有的多模态检索模型大多基于预训练的视觉-语言模型,这些模型主要通过文本-图像匹配任务进行预训练,对于其他常见的多模态任务(如组合图像检索和多模态文档检索)表现不足。
为了增强模型的多任务能力,研究者们开始采用指令微调的方法,但高质量的指令微调数据稀缺且难以大规模获取。
如何高效地生成高质量、多样化的多模态训练数据,成为推动多模态检索发展的关键问题。
因此,来自智源的研究团队提出提出 MegaPairs 数据合成方法,合成了一个包含超过 2600 万训练实例的合成数据集,这些数据在质量和多样性上显著优于现有的多模态检索数据集。并基于该数据训练了一系列多模态向量模型BGE-VL,现在论文中模型名字为MMRet。
MegaPairs构建
构建MegaPairs是本文的核心部分,旨在通过大规模数据合成方法生成高质量的多模态指令调优数据集。MegaPairs完全基于开源数据集和开源模型进行自动化构建和标注。通过引入多个相似度模型和两阶段标注方法,MegaPairs能够在无需人工参与的情况下,扩展性地生成大规模、高质量且多样化的多模态检索指令数据集。
具体来说,MegaPairs 的目标是解决以下两个技术挑战:
-
大规模采样相关且多样化的图像对:从开放域图像库中挖掘具有不同语义和视觉关系的图像对。
-
精确标注图像对的指令:为采样的图像对生成高质量的文本指令,描述图像之间的关系。
MegaPairs 的构造流程分为两个主要步骤:
图像对相关性挖掘
这一过程的目标是从大规模开放域图像库中采样相关且多样化的图像对。每个图像对由查询图像(Query Image
)和目标图像(Target Image
)组成,并通过多种相似性模型挖掘它们之间的关系。
具体方法实现如下:
-
图像库选择:使用 RecapDataComp-1B 数据集的子集作为图像库,包含 2000 万张带标注的图像。
-
相似性模型:利用三种不同的相似性模型来挖掘图像对,每种模型捕捉不同类型的图像关系:
-
视觉语义相关性(Visual-Semantic Correlation):使用 EVA-CLIP 的图像编码器,衡量图像的语义相关性,忽略视觉相似性。例如,不同视角的同一类物体(如不同角度的汽车)。
-
视觉模式相关性(Visual-Pattern Correlation):使用 DINOv2 的视觉编码器,捕捉图像的视觉相似性,忽略语义相关性。例如,不同物体在相似背景下的图像(如不同汽车在相似背景中)。
-
描述相关性(Caption Correlation):使用 EVA-CLIP 的文本编码器,衡量图像描述的文本相似性,从而间接反映图像内容的相似性。
-
-
图像对采样:对于每个查询图像
,通过上述三种相似性模型分别检索与之相关的图像集
。这些图像对涵盖了从语义到视觉的多样化关系。
-
困难负样本(Hard Negatives):为了增强检索模型的训练效果,将检索结果
中非目标图像的其他图像
作为困难负样本。这些困难负样本增加了训练数据的多样性和难度,有助于提升模型的鲁棒性。
通过上述方法,MegaPairs 成功从开放域图像库中挖掘出大量具有多样化关系的图像对,并为每对图像生成了高质量的硬负样本。
生成开放性指令
这一过程主要是为挖掘的图像对生成描述其关系的开放性文本指令。这些指令将作为多模态检索任务中的查询文本,用于检索目标图像。
具体方法:
-
多模态大语言模型(MLLM):使用 InternVL2-26B 作为 MLLM,为每对图像
生成包括图像之间的共同点和差异的详细描述
。
-
大语言模型(LLM):使用 LLaMA3-8B 作为 LLM,将 MLLM 生成的描述进一步精炼为具体的文本指令
。为了确保指令的多样性,对于每对图像创建至少三个不同的文本指令,并引入五个困难负样本。
-
指令模板:LLM 的输入包括图像对的描述以及示例指令,以引导 LLM 生成高质量的指令。例如,描述可能为“两张图像都与丰田汽车有关,但源图像展示了汽车的未来感外观,而目标图像聚焦于实用的内饰座位”,LLM 则生成如“这辆车的内部是什么样子?”等指令。
结果:通过 MLLM 和 LLM 的结合,MegaPairs 为每对图像生成了高质量、多样化的开放性指令,最终,构建了一个多模态三元组
,用于多模态检索任务。
下面是MegaPairs的一些可视化示例:
BGE-VL(MMRet)
基于预训练的视觉-语言模型和MegaPairs数据集,该工作训练了一个多模态检索模型BGE-VL,也叫MMRet,目标是构建一个能够处理多种多模态任务的通用模型,支持从图像到文本、从文本到图像,以及组合图像-文本查询的检索。为了实现这一目标,BGE-VL基于两种不同的架构:基于 CLIP 的模型和基于多模态大语言模型(MLLM)的模型。
基于 CLIP 的 BGE-VL模型
BGE-VL在 CLIP 的基础上进行了扩展,以支持多模态检索任务。具体设计如下:
-
图像编码器(Image Encoder):使用 CLIP 的图像编码器
,将输入图像I转换为图像嵌入向量
。
-
文本编码器(Text Encoder):使用 CLIP 的文本编码器
,将输入文本T转换为文本嵌入向量
。
-
多模态嵌入(Multimodal Embedding):对于组合的图像-文本查询(I,T),采用UniIR中的分数融合(score-fusion)策略,将图像嵌入和文本嵌入直接相加,得到多模态嵌入向量:
这种融合方式简单且有效,能够保留图像和文本的语义信息。
在基于CLIP的BGE-VL中,训练了MMRet-Base(基于CLIP-B,参数量149M)和MMRet-Large(基于CLIP-L,参数量428M)两个模型。
基于多模态大语言模型的 BGE-VL 模型
多模态大语言模型(MLLM)将视觉编码器(通常是基于 Vision Transformer 的编码器)集成到大语言模型(LLM)中,能够直接处理图像和文本的混合输入。BGE-VL的 MLLM 版本基于 LLaVA-1.6 架构,将图像和文本转换为交错的标记序列(interleaved token sequence),并输入到语言模型中。格式如下:
最终训练得到MMRet-MLLM,参数量为 7.57B。
多模态对比学习
为了将 CLIP 和 MLLM 转化为适用于多模态检索的 MMRet 模型,采用了多模态对比学习。具体训练目标如下:
使用 InfoNCE 损失函数,优化模型以学习图像和文本的联合嵌入空间。损失函数定义为:
实验结果
零样本组合图像检索
通过在MegaPairs数据集上训练的MMRet模型,在多个流行的 CIR 基准测试集上取得了最先进的性能,尤其是在CIRCO和CIRR数据集上,表现尤为突出。这些结果证明了MegaPairs数据集在提升多模态检索模型性能方面的有效性,同时也展示了MMRet模型的强大泛化能力和适应性。
在MMEB的性能
MMEB 是一个综合性的多模态嵌入基准测试,包含 36 个不同的数据集,覆盖四种元任务(Meta-Tasks):分类(Classification)、视觉问答(Visual Question Answering, VQA)、检索(Retrieval)和视觉定位(Visual Grounding)。该基准测试旨在评估多模态嵌入模型在多样化任务和模态组合中的性能,是衡量模型泛化能力和通用性的重要工具。
评估指标:使用Precision@1(P@1)作为主要评估指标,衡量模型在每个任务中将正样本排在第一位的比例。
MMRet-MLLM在零样本设置中取得了SOTA(State-of-the-Art)性能,尤其是在视觉问答、检索和视觉定位任务中表现突出。这表明MegaPairs数据集能够有效提升模型在多样化多模态任务中的泛化能力。
值得注意的是:第二好的模型UniIR在M-BEIR上进行了训练,该数据集包含了MMEB检索元任务中12个数据集中的10个,因此在该元任务中不被视为零样本,而MegaPairs并未包含MMEB中的绝大部分任务类型数据。因此,MLLM-Ret在检索元任务中显著优于其他方法,并在所有任务中表现出强大的泛化能力。
MMRet-MLLM进一步在MMEB的分布内(IND)集合(包含36个评测任务中的20个任务)上对BGE-VL进行了有监督微调。结果显示,BGE-VL的平均性能指标相比直接在MMEB上微调的VLM2Vec (LLaVA-1.6) 模型高出9.1个百分点。同时,在分布外(OOD)数据集上的平均表现也比两版VLM2Vec分别高出11.6%和7.1%。这些结果证明了MegaPairs数据的高质量和泛化能力。
数据可扩展性与质量
为了验证MegaPairs数据集的可扩展性,本工作使用不同规模的子集(从 128K 到 26M 数据对)训练MMRet-Base模型,并在多个组合图像检索(CIR)基准测试集上评估其性能。
随着训练数据规模的增加,MMRet-Base在所有基准测试集上的性能均显著提升(如图 2 所示)。当使用仅500K数据对(不到MagicLens数据集的 2%)时,MMRet-Base的性能已经超越了在36.7M数据对上训练的MagicLens-B模型。表明MegaPairs数据集具有极高的质量,能够在较少的数据量下实现更好的性能。
困难负样本的作用
使用困难负样本的模型(Qry + HN)在所有基准测试集上的性能显著优于不使用负样本或仅使用查询图像作为负样本的模型。结果表明,困难负样本显著提升了模型的性能,尤其是在区分相似但不相关的图像时,硬负样本能够增强模型的判别能力。
图像对挖掘策略
-
单独使用描述相关性(T)的策略在零样本 CIR 任务中表现最佳,表明文本相似性能够捕捉到更丰富的语义关系。
-
结合两种策略(如D + I或D + T)的性能优于单一策略,表明多样化的图像对能够提升数据集的质量。
-
同时使用三种策略(D + I + T)的模型在所有基准测试集上表现最为稳健,最终被选为MegaPairs的标准构建方法。
结果表明,多样化的图像对挖掘策略能够显著提升数据集的质量和模型的性能。结合视觉语义、视觉模式和描述相关性的策略能够捕捉到更丰富的图像关系,从而提升模型的泛化能力。
可视化检索示例
代码实验
import torch
from transformers import AutoModel
from PIL import Image
MODEL_NAME= "BAAI/BGE-VL-MLLM-S1"
model = AutoModel.from_pretrained(MODEL_NAME, trust_remote_code=True)
model.eval()
model.cuda()
with torch.no_grad():
model.set_processor(MODEL_NAME)
query_inputs = model.data_process(
text="Make the background dark, as if the camera has taken the photo at night",
images="./assets/cir_query.png",
q_or_c="q",
task_instruction="Retrieve the target image that best meets the combined criteria by using both the provided image and the image retrieval instructions: "
)
candidate_inputs = model.data_process(
images=["./assets/cir_candi_1.png", "./assets/cir_candi_2.png"],
q_or_c="c",
)
query_embs = model(**query_inputs, output_hidden_states=True)[:, -1, :]
candi_embs = model(**candidate_inputs, output_hidden_states=True)[:, -1, :]
query_embs = torch.nn.functional.normalize(query_embs, dim=-1)
candi_embs = torch.nn.functional.normalize(candi_embs, dim=-1)
scores = torch.matmul(query_embs, candi_embs.T)
print(scores)
对于查询embedding和候选embedding,使用矩阵乘法作为得分的解释:
-
特征编码:首先,无论是
query
还是candidates
,都是通过模型的encode
方法将输入(图像和文本)转化为特征向量(embeddings)。这些特征向量是高维空间中的表示形式,其中每个维度代表某种特征或属性。理想情况下,如果两个输入(例如,一个查询图像和一个候选图像)在语义上相似,那么它们的特征向量在高维空间中也会比较接近。 -
内积作为相似度:在计算
query @ candidates.T
时,实际上是在计算query
向量与每个candidate
向量之间的内积(也称为点积)。内积的结果反映了这两个向量方向上的相似程度——值越大,意味着两个向量越相似。这是因为内积本质上衡量的是两个向量投影到对方方向上的长度乘积,当两个向量的方向几乎相同时,它们的内积最大。
总结
最后再聊聊BGE-VL和CLIP、BLIP等基于文本-图像对训练的模型的区别:
CLIP、BLIP等模型通过学习图像和文本的联合嵌入空间来实现跨模态。这些模型在预训练阶段通常是通过大量的图像-文本对数据进行训练,目标是使图像和文本的嵌入在语义上尽可能接近。然而,这种预训练方式主要关注的是模态内的一致性,而不是模态间的融合。
在检索任务中,当查询和候选来自同一模态时,模型往往会给出更高的相似度分数。例如:
-
如果查询是文本,而候选也是文本,模型会更容易找到语义上相似的文本候选。
-
如果查询是图像,而候选也是图像,模型会更容易找到视觉上相似的图像候选。
而如果查询是图像或者文本,候选是图像和文本,检索任务则几乎会失败。在UniIR的实验中也验证了这一点:
以WebQA数据集为例,当检索候选是图像-文本对而不是纯文本时,BLIP2 的召回率从35.2%下降到0%,表明零样本模型无法有效融合不同模态的信息。
这种偏好是由于模型在预训练阶段主要学习了模态内的相似性,而不是模态间的对齐。因此,当候选是图像-文本对时,模型可能无法有效地将图像和文本的信息结合起来,从而导致检索性能下降。
而对于BGE-VL来说,在预训练阶段不仅学习了视觉语义、视觉模式和文本语义之间的相关性,也进一步学习了模态间的对齐,因此效果远超于CLIP等模型直接作为检索器的检索任务。
很有意义的一篇论文,智源开源的多项向量模型工作均产生深远影响。BGE-VL的开源,也为多模态检索带来新突破,其高效的检索性能和创新的数据合成方法为行业发展提供了新的思路和方向,为多模态应用的落地和推广提供有力支持。