Model reference · open weights

nomic-embed-text

Embeddings corto-ai Embeddings 1 build Open weights 3k dl/mo

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

For self-hosting, compare this build's requirements below with the GPU you plan to rent.

  • nomic-embed-text is a 137M parameter text encoder developed by corto-ai for sentence-similarity tasks.
  • It supports a context length of 8192 tokens and is designed for English text.
  • The model is released under the apache-2.0 license.

Summary of the corto-ai/nomic-embed-text-v1 model card, 2026-10-01

What it is

Released bycorto-ai
Released2024-05-06
Parameters137M
VRAM273 MB for the weights

What it runs on

Memory and cards for nomic-embed-text-v1 (FP32)

273 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

From the model card

What corto-ai says about nomic-embed-text

Read the model card

nomic-embed-text-v1 is 8192 context length text encoder that surpasses OpenAI text-embedding-ada-002 and text-embedding-3-small performance on short and long context tasks.

NameSeqLenMTEBLoCoJina Long ContextOpen WeightsOpen Training CodeOpen Data
nomic-embed-text-v1819262.3985.5354.16✅✅✅
jina-embeddings-v2-base-en819260.3985.4551.90✅❌❌
text-embedding-3-small819162.2682.4058.20❌❌❌
text-embedding-ada-002819160.9952.755.25❌❌❌

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

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

print(output)

For more information, see the API reference

Data Visualization

Click the Nomic Atlas map below to visualize a 5M sample of our contrastive pretraining data!

Training Details

We train our embedder using a multi-stage training pipeline. Starting from a long-context BERT model, the first unsupervised contrastive stage trains on a dataset generated from weakly related text pairs, such as question-answer pairs from forums like StackExchange and Quora, title-body pairs from Amazon reviews, and summarizations from news articles.

In the second finetuning stage, higher quality labeled datasets such as search queries and answers from web searches are leveraged. Data curation and hard-example mining is crucial in this stage.

For more details, see the Nomic Embed Technical Report and corresponding blog post.

Training data to train the models is released in its entirety. For more details, see the contrastors repository

Usage

Note nomic-embed-text requires prefixes! We support the prefixes [search_query, search_document, classification, clustering]. For retrieval applications, you should prepend search_document for all your documents and search_query for your queries.

Sentence Transformers

from sentence_transformers import SentenceTransformer

model = SentenceTransformer("nomic-ai/nomic-embed-text-v1", trust_remote_code=True)
sentences = ['search_query: What is TSNE?', 'search_query: Who is Laurens van der Maaten?']
embeddings = model.encode(sentences)
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', trust_remote_code=True)
model.eval()

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

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

embeddings = mean_pooling(model_output, encoded_input['attention_mask'])
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', trust_remote_code=True)
+ model = AutoModel.from_pretrained('nomic-ai/nomic-embed-text-v1', trust_remote_code=True, rotary_scaling_factor=2)

Transformers.js

import { pipeline } from '@xenova/transformers';

// Create a feature extraction pipeline
const extractor = await pipeline('feature-extraction', 'nomic-ai/nomic-embed-text-v1', {
    quantized: false, // Comment out this line to use the quantized version
});

// Compute sentence embeddings
const texts = ['search_query: What is TSNE?', 'search_query: Who is Laurens van der Maaten?'];
const embeddings = await extractor(texts, { pooling: 'mean', normalize: true });
console.log(embeddings);

Join the Nomic Community

Citation

If you find the model, dataset, or training code useful, please cite our work

@misc{nussbaum2024nomic,
      title={Nomic Embed: Training a Reproducible Long Context Text Embedder},
      author={Zach Nussbaum and John X. Morris and Brandon Duderstadt and Andriy Mulyar},
      year={2024},
      eprint={2402.01613},
      archivePrefix={arXiv},
      primaryClass={cs.CL}
}

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)accuracy76.851
ClassificationMTEB AmazonCounterfactualClassification (en)ap40.592
ClassificationMTEB AmazonCounterfactualClassification (en)f171.016
ClassificationMTEB AmazonPolarityClassificationaccuracy91.519
ClassificationMTEB AmazonPolarityClassificationap88.503
ClassificationMTEB AmazonPolarityClassificationf191.503
ClassificationMTEB AmazonReviewsClassification (en)accuracy47.364
ClassificationMTEB AmazonReviewsClassification (en)f146.727
RetrievalMTEB ArguAnamap_at_125.178
RetrievalMTEB ArguAnamap_at_1040.244
RetrievalMTEB ArguAnamap_at_10041.322
RetrievalMTEB ArguAnamap_at_100041.331
RetrievalMTEB ArguAnamap_at_335.017
RetrievalMTEB ArguAnamap_at_537.990
RetrievalMTEB ArguAnamrr_at_125.605
RetrievalMTEB ArguAnamrr_at_1040.422
RetrievalMTEB ArguAnamrr_at_10041.507
RetrievalMTEB ArguAnamrr_at_100041.516
RetrievalMTEB ArguAnamrr_at_335.230
RetrievalMTEB ArguAnamrr_at_538.150
RetrievalMTEB ArguAnandcg_at_125.178
RetrievalMTEB ArguAnandcg_at_1049.258
RetrievalMTEB ArguAnandcg_at_10053.776
RetrievalMTEB ArguAnandcg_at_100053.995
© 2026 AxForge · EU-hosted AI infrastructure Pricing Docs Trust Privacy Terms