返回模型
说明文档
[!WARNING] 这是一个用于测试新功能的实验性仓库。请参考 nomic-ai/nomic-embed-vision-v1.5 获取原始模型。
nomic-embed-vision-v1.5: 扩展潜在空间
nomic-embed-vision-v1.5 是一个高性能的视觉嵌入模型,与 nomic-embed-text-v1.5 共享相同的嵌入空间。
所有 Nomic Embed Text 模型现在都是多模态的!
| 名称 | Imagenet 0-shot | Datacomp (Avg. 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 Embedding 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 样本的数据集,比较视觉和文本嵌入空间!
训练细节
我们采用类似于 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: https://nomic.ai
- Discord: https://discord.gg/myY5YDR8z8
- Twitter: https://twitter.com/nomic_ai
tomaarsen/nomic-embed-vision-v1.5-st
作者 tomaarsen
image-feature-extraction
transformers
↓ 0
♥ 1
创建时间: 2024-06-24 10:56:58+00:00
更新时间: 2024-06-24 11:01:23+00:00
在 Hugging Face 上查看文件 (16)
.gitattributes
1_Pooling/config.json
README.md
config.json
config_sentence_transformers.json
model.safetensors
modules.json
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
vision_transformer.py
