Model reference · open weights

nomic-embed-text

Embeddings nomic-ai Embeddings 2 builds Open weights 16.6M dl/mo

nomic-embed-text is an open-weight embedding model from nomic-ai. nomic-embed-text-v1.5-GGUF (GGUF) weighs 84 MB; the smallest configuration that runs it is RTX 3060 12 GB.

  • nomic-embed-text-v1.5 is a sentence-similarity model developed by nomic-ai that generates text embeddings for tasks such as search, clustering, and classification.
  • The model contains 137M parameters, supports a context length of 2048 tokens, and is designed for English text.
  • It is released under the apache-2.0 license and utilizes Matryoshka Representation Learning to allow developers to adjust embedding dimensions.

Summary of the nomic-ai/nomic-embed-text-v1.5 model card, 2026-10-01. The estimate below is for another build of the family.

What it is

Released bynomic-ai
Released2024-02-10
Parameters137M
VRAM84 MB for the weights

What it runs on

Memory and cards for nomic-embed-text-v1.5-GGUF (GGUF)

84 MBweights, file size
1.1 GBruntime overhead
CardRunsMemory
RTX 3060 12 GBfits11.6 GB
RTX 4060 Ti 16 GBfits15.4 GB
RTX 3090 24 GBfits23.4 GB
RTX 4090 24 GBfits23.4 GB
RTX 5090 32 GBfits31.0 GB
L40S 48 GBfits44.0 GB
A100 80 GBfits78.2 GB
H100 80 GBfits78.1 GB
RTX PRO 6000 Blackwell 96 GBfits93.8 GB
DGX Spark (GB10) 128 GB unifiedfits107 GB
H200 141 GBfits138 GB
B200 180 GBfits176 GB

Builds

Sizes, precisions & builds

BuildParamsPrecisionWeightsSmallest setup
nomic-embed-text-v1.5 ↗ 137MFP32 273 MBRTX 3060 12 GB
nomic-embed-text-v1.5-GGUF (above) ↗
14 builds: Q2_K 49 MB … F32 548 MB
—GGUF 84 MBRTX 3060 12 GB

From the model card

What nomic-ai says about nomic-embed-text

Read the model card

Blog | Technical Report | AWS SageMaker | Nomic Platform

Exciting Update!: nomic-embed-text-v1.5 is now multimodal! nomic-embed-vision-v1.5 is aligned to the embedding space of nomic-embed-text-v1.5, meaning any text embedding is multimodal!

Usage

Important: the text prompt must include a task instruction prefix, instructing the model which task is being performed.

For example, if you are implementing a RAG application, you embed your documents as search_document: and embed your user queries as search_query: .

Notice: From transformers v5.5.0 and sentence transformers v5.3.0, trust_remote_code=True will no longer be necessary. This will only be possible with the text-only series as of now.

Task instruction prefixes

search_document

Purpose: embed texts as documents from a dataset

This prefix is used for embedding texts as documents, for example as documents for a RAG index.

from sentence_transformers import SentenceTransformer

model = SentenceTransformer("nomic-ai/nomic-embed-text-v1.5")
sentences = ['search_document: TSNE is a dimensionality reduction algorithm created by Laurens van Der Maaten']
embeddings = model.encode(sentences)
print(embeddings)

search_query

Purpose: embed texts as questions to answer

This prefix is used for embedding texts as questions that documents from a dataset could resolve, for example as queries to be answered by a RAG application.

from sentence_transformers import SentenceTransformer

model = SentenceTransformer("nomic-ai/nomic-embed-text-v1.5")
sentences = ['search_query: Who is Laurens van Der Maaten?']
embeddings = model.encode(sentences)
print(embeddings)

clustering

Purpose: embed texts to group them into clusters

This prefix is used for embedding texts in order to group them into clusters, discover common topics, or remove semantic duplicates.

from sentence_transformers import SentenceTransformer

model = SentenceTransformer("nomic-ai/nomic-embed-text-v1.5")
sentences = ['clustering: the quick brown fox']
embeddings = model.encode(sentences)
print(embeddings)

classification

Purpose: embed texts to classify them

This prefix is used for embedding texts into vectors that will be used as features for a classification model

from sentence_transformers import SentenceTransformer

model = SentenceTransformer("nomic-ai/nomic-embed-text-v1.5")
sentences = ['classification: the quick brown fox']
embeddings = model.encode(sentences)
print(embeddings)

Sentence Transformers

import torch.nn.functional as F
from sentence_transformers import SentenceTransformer

matryoshka_dim = 512

model = SentenceTransformer("nomic-ai/nomic-embed-text-v1.5")
sentences = ['search_query: What is TSNE?', 'search_query: Who is Laurens van der Maaten?']
embeddings = model.encode(sentences, convert_to_tensor=True)
embeddings = F.layer_norm(embeddings, normalized_shape=(embeddings.shape[1],))
embeddings = embeddings[:, :matryoshka_dim]
embeddings = F.normalize(embeddings, p=2, dim=1)
print(embeddings)

Transformers

import torch
import torch.nn.functional as F
from transformers import AutoTokenizer, AutoModel

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 is TSNE?', 'search_query: Who is Laurens van der Maaten?']

tokenizer = AutoTokenizer.from_pretrained('bert-base-uncased')
model = AutoModel.from_pretrained('nomic-ai/nomic-embed-text-v1.5')
model.eval()

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

+ matryoshka_dim = 512

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

embeddings = mean_pooling(model_output, encoded_input['attention_mask'])
+ embeddings = F.layer_norm(embeddings, normalized_shape=(embeddings.shape[1],))
+ embeddings = embeddings[:, :matryoshka_dim]
embeddings = F.normalize(embeddings, p=2, dim=1)
print(embeddings)

The model natively supports scaling of the sequence length past 2048 tokens. To do so,

- tokenizer = AutoTokenizer.from_pretrained('bert-base-uncased')
+ tokenizer = AutoTokenizer.from_pretrained('bert-base-uncased', model_max_length=8192)

- model = AutoModel.from_pretrained('nomic-ai/nomic-embed-text-v1.5')
+ rope_parameters = {"rope_theta": 1000.0, "rope_type": "dynamic", "factor": 2.0}
+ model = AutoModel.from_pretrained('nomic-ai/nomic-embed-text-v1.5', rope_parameters=rope_parameters)

Transformers.js

import { pipeline, layer_norm } from '@huggingface/transformers';

// Create a feature extraction pipeline
const extractor = await pipeline('feature-extraction', 'nomic-ai/nomic-embed-text-v1.5');

// Define sentences
const texts = ['search_query: What is TSNE?', 'search_query: Who is Laurens van der Maaten?'];

// Compute sentence embeddings
let embeddings = await extractor(texts, { pooling: 'mean' });
console.log(embeddings); // Tensor of shape [2, 768]

const matryoshka_dim = 512;
embeddings = layer_norm(embeddings, [embeddings.dims[1]])
    .slice(null, [0, matryoshka_dim])
    .normalize(2, -1);
console.log(embeddings.tolist());

Nomic API

The easiest way to use Nomic Embed is through the Nomic Embedding API.

Generating embeddings with the nomic Python client is as easy as

from nomic import embed

output = embed.text(
    texts=['Nomic Embedding API', '#keepAIOpen'],
    model='nomic-embed-text-v1.5',
    task_type='search_documen

Quoted from the model card on Hugging Face. The full card is behind the Hugging Face link above.

Benchmarks

Reported results

As published on the model card: the maker's own numbers, not measured by AxForge.

TaskDatasetMetricScore
ClassificationMTEB AmazonCounterfactualClassification (en)accuracy75.209
ClassificationMTEB AmazonCounterfactualClassification (en)ap38.576
ClassificationMTEB AmazonCounterfactualClassification (en)f169.356
ClassificationMTEB AmazonPolarityClassificationaccuracy91.814
ClassificationMTEB AmazonPolarityClassificationap88.652
ClassificationMTEB AmazonPolarityClassificationf191.804
ClassificationMTEB AmazonReviewsClassification (en)accuracy47.162
ClassificationMTEB AmazonReviewsClassification (en)f146.593
RetrievalMTEB ArguAnamap_at_124.253
RetrievalMTEB ArguAnamap_at_1038.962
RetrievalMTEB ArguAnamap_at_10040.081
RetrievalMTEB ArguAnamap_at_100040.089
RetrievalMTEB ArguAnamap_at_333.499
RetrievalMTEB ArguAnamap_at_536.351
RetrievalMTEB ArguAnamrr_at_124.609
RetrievalMTEB ArguAnamrr_at_1039.099
RetrievalMTEB ArguAnamrr_at_10040.211
RetrievalMTEB ArguAnamrr_at_100040.219
RetrievalMTEB ArguAnamrr_at_333.677
RetrievalMTEB ArguAnamrr_at_536.469
RetrievalMTEB ArguAnandcg_at_124.253
RetrievalMTEB ArguAnandcg_at_1048.011
RetrievalMTEB ArguAnandcg_at_10052.756
RetrievalMTEB ArguAnandcg_at_100052.965
© 2026 AxForge · EU-hosted AI infrastructure Pricing Docs Trust Privacy Terms