ONNX 模型库
返回模型

说明文档

nomic-embed-vision-v1.5:扩展潜在空间

快速开始

博客 | 技术报告 | AWS SageMaker | Atlas 嵌入与非结构化数据分析平台

nomic-embed-vision-v1.5 是一个高性能的视觉嵌入模型,与 nomic-embed-text-v1.5 共享相同的嵌入空间。

所有 Nomic Embed Text 模型现在都是多模态的!

名称 Imagenet 零样本 Datacomp (平均 38) MTEB
nomic-embed-vision-v1.5 71.0 56.8 62.28
nomic-embed-vision-v1 70.7 56.7 62.39
OpenAI CLIP ViT B/16 68.3 56.3 43.82
Jina CLIP v1 59.1 52.2 60.1

托管推理 API

使用 Nomic Embed 最简单的方式是通过 Nomic 嵌入 API。

使用 nomic Python 客户端生成嵌入非常简单:

from nomic import embed
import numpy as np

output = embed.image(
    images=[
        "image_path_1.jpeg",
        "image_path_2.png",
    ],
    model='nomic-embed-vision-v1.5',
)

print(output['usage'])
embeddings = np.array(output['embeddings'])
print(embeddings.shape)

欲了解更多详细信息,请参阅 API 参考文档

数据可视化

点击下方的 Nomic Atlas 地图,可视化一个包含 100,000 个样本的 CC3M 数据集,比较视觉和文本嵌入空间!

image/webp

训练细节

我们采用类似于 LiT 的技术将视觉嵌入器与文本嵌入器对齐,但实际上是锁定了文本嵌入器!

更多详细信息,请参阅 Nomic Embed Vision 技术报告(即将发布!)和相应的博客文章

训练代码已在 contrastors 仓库中发布。

使用说明

请记住 nomic-embed-text 需要前缀,因此,在多模态 RAG 场景中使用 Nomic Embed(例如文本到图像检索)时, 您应该使用 search_query: 前缀。

Transformers

import torch
import torch.nn.functional as F
from transformers import AutoTokenizer, AutoModel, AutoImageProcessor
from PIL import Image
import requests

processor = AutoImageProcessor.from_pretrained("nomic-ai/nomic-embed-vision-v1.5")
vision_model = AutoModel.from_pretrained("nomic-ai/nomic-embed-vision-v1.5", trust_remote_code=True)

url = 'http://images.cocodataset.org/val2017/000000039769.jpg'
image = Image.open(requests.get(url, stream=True).raw)

inputs = processor(image, return_tensors="pt")

img_emb = vision_model(**inputs).last_hidden_state
img_embeddings = F.normalize(img_emb[:, 0], p=2, dim=1)

此外,您还可以执行多模态检索!


def mean_pooling(model_output, attention_mask):
    token_embeddings = model_output[0]
    input_mask_expanded = attention_mask.unsqueeze(-1).expand(token_embeddings.size()).float()
    return torch.sum(token_embeddings * input_mask_expanded, 1) / torch.clamp(input_mask_expanded.sum(1), min=1e-9)

sentences = ['search_query: What are cute animals to cuddle with?', 'search_query: What do cats look like?']

tokenizer = AutoTokenizer.from_pretrained('nomic-ai/nomic-embed-text-v1.5')
text_model = AutoModel.from_pretrained('nomic-ai/nomic-embed-text-v1.5', trust_remote_code=True)
text_model.eval()

encoded_input = tokenizer(sentences, padding=True, truncation=True, return_tensors='pt')

with torch.no_grad():
    model_output = text_model(**encoded_input)

text_embeddings = mean_pooling(model_output, encoded_input['attention_mask'])
text_embeddings = F.layer_norm(text_embeddings, normalized_shape=(text_embeddings.shape[1],))
text_embeddings = F.normalize(text_embeddings, p=2, dim=1)

print(torch.matmul(img_embeddings, text_embeddings.T))

加入 Nomic 社区

nomic-ai/nomic-embed-vision-v1.5

作者 nomic-ai

image-feature-extraction transformers
↓ 665.3K ♥ 215

创建时间: 2024-06-01 23:42:03+00:00

更新时间: 2025-03-31 17:40:39+00:00

在 Hugging Face 上查看

文件 (12)

.gitattributes
README.md
config.json
model.safetensors
onnx/model.onnx ONNX
onnx/model_bnb4.onnx ONNX
onnx/model_fp16.onnx ONNX
onnx/model_int8.onnx ONNX
onnx/model_q4.onnx ONNX
onnx/model_quantized.onnx ONNX
onnx/model_uint8.onnx ONNX
preprocessor_config.json