jina-embeddings-v4
1. 模型概述
jina-embeddings-v4 是一个多模态嵌入模型,基于 Qwen2.5-VL 架构扩展而来。核心创新在于:
- 多模态支持:统一处理文本和图像输入,生成语义嵌入向量。
- 输出灵活性:提供单向量(全局语义)和多向量(细粒度语义)两种输出选项。
- 任务特化:通过 LoRA 微调适配不同任务(如文档检索、代码搜索),显著提升性能。
模型开源在 Hugging Face,论文见 arXiv。
2. 模型架构详解
架构基于 Qwen2.5-VL,扩展支持多向量输出。关键组件如下:
2.1 输入处理
-
文本输入:
- 分词器将文本转换为标记序列。
- Transformer 编码器处理序列,生成向量表示。
# 伪代码示例:文本编码过程 from transformers import AutoTokenizer, AutoModel tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen2.5-VL") model = AutoModel.from_pretrained("Qwen/Qwen2.5-VL")text = "Example text input" inputs = tokenizer(text, return_tensors="pt") # 分词 outputs = model(**inputs) # Transformer 编码 text_vectors = outputs.last_hidden_state # 输出向量序列
-
图像输入:
- 离散图像模型将图像转换为“图像标记”(类似文本标记)。
- 图像标记输入 Transformer,与文本标记统一处理。
# 伪代码示例:图像编码过程 from PIL import Image image = Image.open("example.jpg") image_tokens = discrete_image_model(image) # 转换为图像标记 combined_inputs = torch.cat([text_vectors, image_tokens], dim=1) # 文本+图像融合
2.2 输出机制
- 单向量输出:
- 生成 2048 维全局向量,通过池化(如平均池化)实现。
- 支持 Matryoshka 表示学习:可截断至 128 维,精度损失极小(标量值按语义重要性排序)。
- 多向量输出:
- 为每个输入标记(包括图像标记)生成 128 维向量。
- 优势:保留细粒度语义,适合处理视觉丰富文档(如 PDF 中的图文混合内容)。
2.3 LoRA 微调任务
模型训练时添加了三个独立的 LoRA 适配器(各 60M 参数),针对不同任务优化:
- 非对称查询-文档检索:
- 优化目标:处理结构差异(如短查询 vs 长文档)。
- 示例应用:用户输入问题,检索相关文档。
- 语义相似性和对称检索:
- 优化目标:寻找相似内容(如语义文本相似性任务)。
- 示例应用:推荐相似文章或产品。
- 代码检索:
- 优化目标:自然语言到代码、代码到代码的相似性搜索。
- 示例应用:技术问答或代码库搜索。
架构示意图
以下图片展示了模型处理流程(文本和图像输入的统一编码):
3. 训练过程详解
训练分为两阶段:对比学习训练(基础语义学习)和任务特化训练(任务优化)。
3.1 对比学习训练
- 目标:学习跨模态语义关系(文本-文本、文本-图像对)。
- 方法:
- 输入正样本对(相关文本/图像)和负样本对(不相关内容)。
- 使用 InfoNCE 损失函数优化嵌入相似性:
L InfoNCE = − log e sim ( q , k + ) / τ ∑ i = 1 N e sim ( q , k i ) / τ \mathcal{L}_{\text{InfoNCE}} = -\log \frac{e^{\text{sim}(q, k^+)/\tau}}{\sum_{i=1}^{N} e^{\text{sim}(q, k_i)/\tau}} LInfoNCE=−log∑i=1Nesim(q,ki)/τesim(q,k+)/τ
其中 sim ( ⋅ ) \text{sim}(·) sim(⋅) 是余弦相似度, τ \tau τ 是温度参数。
# 伪代码示例:InfoNCE 损失计算
import torch.nn.functional as Fdef info_nce_loss(query, positive_key, negative_keys, temperature=0.1):# query: 查询嵌入, positive_key: 正样本嵌入, negative_keys: 负样本嵌入列表pos_sim = F.cosine_similarity(query, positive_key, dim=-1) / temperatureneg_sims = [F.cosine_similarity(query, k, dim=-1) / temperature for k in negative_keys]logits = torch.cat([pos_sim.unsqueeze(-1)] + neg_sims, dim=-1)labels = torch.zeros(logits.shape[0], dtype=torch.long).to(query.device)loss = F.cross_entropy(logits, labels)return loss
3.2 任务特化训练
- 方法:复制对比学习阶段的 LoRA 适配器,针对三个任务独立优化:
- 非对称检索任务:
- 数据:三元组(查询、正文档、负文档)。
- 损失:扩展的 InfoNCE+ 损失,强化查询-文档差异处理。
- 语义相似性任务:
- 数据:带相似度分数的文本对(如 MTEB/arguana)。
- 损失:CoSENT 损失,优化对称相似性:
L CoSENT = ∑ ( i , j ) max ( 0 , margin − sim ( v i , v j ) ) \mathcal{L}_{\text{CoSENT}} = \sum_{(i,j)} \max(0, \text{margin} - \text{sim}(v_i, v_j)) LCoSENT=(i,j)∑max(0,margin−sim(vi,vj))
- 代码检索任务:
- 数据:代码相关数据集(如 StackExchangeQA)。
- 损失:标准 InfoNCE 损失,专注代码语义。
- 非对称检索任务:
4. 推理过程详解
推理时用户根据任务需求选择 LoRA 适配器,生成嵌入后计算相似性。
4.1 推理步骤
- 输入处理:
- 文本或图像输入,转换为标记序列。
- 嵌入生成:
- 选择 LoRA 适配器(非对称检索/语义相似性/代码检索)。
- 生成单向量或多向量嵌入。
- 相似性计算:
- 单向量:余弦相似度(全局匹配)。
- 多向量:MaxSim 或 ColBERT 式相似度(细粒度匹配)。
# 伪代码示例:推理流程
from sklearn.metrics.pairwise import cosine_similarity# 选择适配器(示例:非对称检索)
lora_adapter = load_lora("asymmetric_retrieval")
model.set_adapter(lora_adapter)# 生成嵌入
query = "搜索查询"
document = "候选文档"
query_embedding = model.encode(query) # 单向量
doc_embedding = model.encode(document) # 单向量# 计算相似度
similarity = cosine_similarity(query_embedding, doc_embedding)
print(f"相似度: {similarity[0][0]:.4f}")
4.2 多向量输出优势
- 适合复杂文档:例如图像中的 OCR 文本(数据集如 HungarianDocQA-OCR),多向量能捕捉局部语义。
- 示例:图像中的文字“标题”,其向量与文本“标题”向量高相似。
5. 关键资源汇总
- 模型与数据集:
- 模型:jina-embeddings-v4 on Hugging Face
- 论文:arXiv:2506.18902
- 数据集:
- Donut VQA(视觉问答)
- JDocQA(文档问答)
- ArguaNA(语义相似性)
https://huggingface.co/collections/jinaai/jinavdr-visual-document-retrieval-684831c022c53b21c313b449
https://huggingface.co/datasets/warshakhan/donut_vqa_ISynHMP https://huggingface.co/datasets/jlli/JDocQA-nonbinary https://huggingface.co/datasets/jlli/HungarianDocQA-OCR
https://github.com/laituan245/StackExchangeQA
https://huggingface.co/datasets/mteb/arguana
https://huggingface.co/jinaai/jina-embeddings-v4
https://arxiv.org/pdf/2506.18902
- 核心创新:统一文本/图像处理、任务特化 LoRA 适配器、Matryoshka 单向量压缩。
- 优势场景:视觉文档检索(如 PDF 图文混合)、代码搜索、高精度语义相似性任务。
- 性能关键:多向量输出保留细节,LoRA 微调提升任务特定性能 20%+(据论文指标)。