/ Модель

Характеристики

Лицензия
Apache 2.0
Архитектура
nomic_bert · dense
Библиотека
transformers
Опубликована
13 мая 2024

nomic-embed-vision-v1

Эмбеддинги изображенийИзображение → embedding8 профессий

Модель Nomic AI кодирует изображения в векторы для поиска и сопоставления с текстом в общем пространстве эмбеддингов.

102скачиваний за 30 дней25лайковвеса обновлены16 янв 2025

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

nomic-embed-vision-v1 — модель эмбеддингов изображений от Nomic AI. Она преобразует изображения в векторы в общем пространстве с nomic-embed-text-v1, что позволяет сопоставлять изображения и текст по смыслу.

Модель предназначена для поиска изображений по текстовому запросу и других сценариев мультимодального поиска и извлечения признаков. В README приведены результаты на ImageNet zero-shot и Datacomp; указана совместимость с библиотекой Transformers. Репозиторий содержит веса в форматах Safetensors и ONNX.

Для текстовых запросов в мультимодальном поиске README рекомендует добавлять префикс «search_query: ». Модель принимает изображения и выдаёт векторы признаков. Репозиторий лицензирован по Apache-2.0.

Сценарии применения

  • поиск изображений по текстовому запросу
  • сопоставление изображений и текстовых описаний
  • извлечение векторных признаков изображений
  • построение мультимодального поиска по изображениям

Ограничения

Для текстовых запросов в мультимодальном поиске рекомендуется использовать префикс «search_query: ». README не описывает ограничения применимости или гарантии качества за пределами приведённых бенчмарков.

Для каких профессий подходит8

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Также подходит для

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

nomic-embed-vision-v1: Expanding the Latent Space

nomic-embed-vision-v1 is a high performing vision embedding model that shares the same embedding space as nomic-embed-text-v1.

All Nomic Embed Text models are now multimodal!

NameImagenet 0-shotDatacomp (Avg. 38)MTEB
nomic-embed-vision-v1.571.056.862.28
nomic-embed-vision-v170.756.762.39
OpenAI CLIP ViT B/1668.356.343.82
Jina CLIP v159.152.260.1

Hosted Inference API

The easiest way to get started with Nomic Embed is through the Nomic Embedding API.

Generating embeddings with the nomic Python client is as easy as

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',
)

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

For more information, see the API reference

Data Visualization

Click the Nomic Atlas map below to visualize a 100,000 sample CC3M comparing the Vision and Text Embedding Space!

image/webp

Training Details

We align our vision embedder to the text embedding by employing a technique similar to LiT but instead lock the text embedder!

For more details, see the Nomic Embed Vision Technical Report (soon to be released!) and corresponding blog post

Training code is released in the contrastors repository

Usage

Remember nomic-embed-text requires prefixes and so, when using Nomic Embed in multimodal RAG scenarios (e.g. text to image retrieval), you should use the search_query: prefix.

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")
vision_model = AutoModel.from_pretrained("nomic-ai/nomic-embed-vision-v1", 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)

Additionally, you can perform multimodal retrieval!


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')
text_model = AutoModel.from_pretrained('nomic-ai/nomic-embed-text-v1', 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.normalize(text_embeddings, p=2, dim=1)

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

Join the Nomic Community

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм · transformers · image-feature-extraction

Можно запустить

Подбираем GPU…

Класс архитектуры
NomicVisionModel
Ревизия весов
d4a4ada

0 моделей