alt.freeweights.embed / nomic-embed-text-v1
From: nomic-ai <huggingface.co/nomic-ai>Newsgroups: alt.freeweights.embedSubject:

nomic-embed-text-v1

Date: 2026-11-14Commit: 3ac47f1Signed: 2DC28CC7B26A283B ✓

Sentence similarity model with 137M parameters. Onnx and safetensors weights, 1.78 GB in all. Published by nomic-ai under Apache-2.0.

137M params1.78GBnomic-embed-text-v1onnx safetensorspermissive
FactsParams137MSize1.78 GBFormatsonnx, safetensorsTasksentence similarityLicenseApache-2.0From sourcepermissive
$ fw get nomic-ai/nomic-embed-text-v1
# manifest sha256 b5dd64389d6f… · 1.78 GB · 15 files
$ fw verify ./nomic-embed-text-v1 nomic-ai/nomic-embed-text-v1
From sourceHosted (signed)nomic-ai/nomic-embed-text-v1Last check: 2026-11-14 21:10 UTC

Get help: custom fine-tune or private deploy. We review your setup before we quote.

Works with

Evaluate with

Overview

Size
1.78 GB
Weights
547 MB (safetensors)
Parameters
137M
Formats
onnx, safetensors
Task
sentence similarity
License
Apache-2.0 (permissive)
Files
15, each with a sha256
Publisher
nomic-ai
Added
2026-11-14
Section
alt.freeweights.embed
Lineage

Original release from the publisher.

Where these bytes come from
Publisher at the pinned commit→You

Sources are tried in order. A file counts only when its size and sha256 match the manifest. Sources are checked when you ask for them, not on a timer.

Sources
BadgeHostLast checkResult
From sourcehuggingface.co2026-11-14 21:10 UTCpassed

Model card

From the publisher at commit 3ac47f1. Shown as plain text with links; images open at the publisher.

nomic-embed-text-v1: A Reproducible Long Context (8192) Text Embedder#

Blog | Technical Report | AWS SageMaker | Atlas Embedding and Unstructured Data Analytics Platform

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.

Performance Benchmarks#

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❌❌❌

Exciting Update!: nomic-embed-text-v1 is now multimodal! nomic-embed-vision-v1 is aligned to the embedding space of nomic-embed-text-v1, 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: <text here> and embed your user queries as search_query: <text here>.

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")
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")
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")
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")
sentences = ['classification: the quick brown fox']
embeddings = model.encode(sentences)
print(embeddings)
Sentence Transformers#
from sentence_transformers import SentenceTransformer

model = SentenceTransformer("nomic-ai/nomic-embed-text-v1")
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')
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')
+ rope_parameters = {"rope_theta": 1000.0, "rope_type": "dynamic", "factor": 2.0}
+ model = AutoModel.from_pretrained('nomic-ai/nomic-embed-text-v1', rope_parameters=rope_parameters)
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);

Nomic 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

Training#

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

image/webp

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

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}
}

Files

15 files · 1.78 GBWeights 547 MB (safetensors). Sizes and sha256 from the signed manifest.
Hide all 15 files with their sha256
FileSizesha256
.gitattributes1.52 KB11ad7efa24975ee4b0c3c3a38ed18737f0658a5f75a0a96787b576a78a023361
1_Pooling/config.json270 Bf2fa6333d3899e2f9368e2e2741ece8e74160337b3698f475f6e0f7f28e396fe
README.md71.3 KB8214dc98f26b709660165099795a3e9aa075547b2d573c204fcaf4335eee6822
config.json2.03 KB913351bb022df8c2b332dc955145dea342380b162d532af756b3bdba3b3a1cfb
config_sentence_transformers.json128 Be33449d657c7cd356f3c44714e4de56a34151d52917167773191e982ba2277dd
model.safetensors547 MB47e396424a085a613034450cd4bf9e8acfb568b19089ae1c5c4e7051ae286877
modules.json349 B84e40c8e006c9b1d6c122e02cba9b02458120b5fb0c87b746c41e0207cf642cf
onnx/model.onnx548 MB347440e93b5ec979fdcf6041b72721aade7b9680c16022e2830db7115ff6fd9f
onnx/model_quantized.onnx138 MBb7941066a6529a287e2502ea6cb68ff82006d311eac53627dc88c259cbcbda64
pytorch_model.bin547 MB9fc78c00133aac4e12f358cfe9546e893cb82bb9bb7956506fbbcaa1700ce17c
sentence_bert_config.json54 Beb9b44b13c0f52a3b3685c3b1cbdea1ba8b04bea123b98f61610048940776eb1
special_tokens_map.json125 Bb6d346be366a7d1d48332dbc9fdf3bf8960b5d879522b7799ddba59e76237ee3
tokenizer.json711 KBd241a60d5e8f04cc1b2b3e9ef7a4921b27bf526d9f6050ab90f9267a1f9e5c66
tokenizer_config.json1.19 KBd7e0000bcc80134debd2222220427e6bf5fa20a669f40a0d0d1409cc18e0a9bc
vocab.txt232 KB07eced375cec144d27c900241f3e339478dec958f92fddbc551f295c992038a3
VersionsEach time the pinned upstream commit or file list changed in this repo. Newest first.
Upstream commitDateContents
3ac47f125a pinned now manifest updated, same commit2026-11-14 21:10 UTC15 files · 1.78 GB
3ac47f125a2026-11-14 21:10 UTC15 files · 1.78 GB

Use it

$ fw get nomic-ai/nomic-embed-text-v1
# manifest sha256 b5dd64389d6f… · 1.78 GB · 15 files
$ fw verify ./nomic-embed-text-v1 nomic-ai/nomic-embed-text-v1
fw.pyChecks the signature and every sha256, tries each source in order, resumes.
$ python3 fw.py get https://freeweights.allternit.com/manifests/nomic-ai/nomic-embed-text-v1.json --dir ./nomic-embed-text-v1 $ python3 fw.py verify ./nomic-embed-text-v1 ./nomic-ai__nomic-embed-text-v1.json
hfThe Hugging Face CLI with one setting. Same repo id.
$ HF_ENDPOINT=https://freeweights.allternit.com hf download nomic-ai/nomic-embed-text-v1 --revision 3ac47f125a41961d13b397d0332866be2f9152e1 --local-dir ./nomic-embed-text-v1
transformersLoad the weights in Python.
import os os.environ["HF_ENDPOINT"] = "https://freeweights.allternit.com" from transformers import AutoModel, AutoTokenizer tok = AutoTokenizer.from_pretrained("nomic-ai/nomic-embed-text-v1", revision="3ac47f125a41961d13b397d0332866be2f9152e1") model = AutoModel.from_pretrained("nomic-ai/nomic-embed-text-v1", revision="3ac47f125a41961d13b397d0332866be2f9152e1", device_map="auto")
sentence-transformersEmbed text with sentence-transformers.
import os os.environ["HF_ENDPOINT"] = "https://freeweights.allternit.com" from sentence_transformers import SentenceTransformer model = SentenceTransformer("nomic-ai/nomic-embed-text-v1", revision="3ac47f125a41961d13b397d0332866be2f9152e1") vectors = model.encode(["Hello"])

License

Name
Apache License 2.0
Id
Apache-2.0
Class
Permissive
Redistribution
yes
Listing
Hosted (signed)
Decided
License as declared by the publisher. No person read it. 2026-11-14
Text in
README.md
Text sha256
8214dc98f26b709660165099795a3e9aa075547b2d573c204fcaf4335eee6822
Terms gate
No extra terms beyond the license.

Read the license text

Licenses are checked against the license table. A custom license passes only after a person reads it.

Provenance

From: nomic-ai <huggingface.co/nomic-ai>Newsgroups: alt.freeweights.embedSubject: nomic-embed-text-v1Date: 2026-11-14Commit: 3ac47f1Signed: 2DC28CC7B26A283B ✓
Upstream
nomic-ai/nomic-embed-text-v1
Pinned commit
3ac47f125a41961d13b397d0332866be2f9152e1
Manifest
nomic-embed-text-v1.json · .minisig
Manifest sha256
b5dd64389d6f9922b573f901793957fd82df38277dac9385b16d053522b01846
Signature
minisign, Ed25519, key 2DC28CC7B26A283B
Created
2026-11-14 21:10 UTC
Generator
freeweights-manifest/0.1.0
Takedowns
None.

How to verify

$ curl -O https://freeweights.allternit.com/manifests/nomic-ai/nomic-embed-text-v1.json $ curl -O https://freeweights.allternit.com/manifests/nomic-ai/nomic-embed-text-v1.json.minisig $ minisign -Vm nomic-embed-text-v1.json -P RWQ7KGqyx4zCLXtUFOqvfv8L3g+8fpKJ1FsuxPyOYMF+4KufbUxKq1Oq $ shasum -a 256 <file> # compare with the Files tab

A manifest whose signature fails must be rejected. A file whose size or sha256 does not match must be discarded. Verify a download

Model tree

1 model in the catalog name this one as their parent.

Quantizations
1
Quantizations 1
Get it
Download
$ HF_ENDPOINT=https://freeweights.allternit.com hf download nomic-ai/nomic-embed-text-v1
Open in Freeweights Studio

Pull, verify and run it in the Allternit app on Desktop, web or phone.

Signed manifest
minisign, key 2DC28CC7B26A283B. nomic-embed-text-v1.json. Provenance. Takedown history: none.

Variants

1 quantized or adapter build of nomic-embed-text-v1. Each has its own license check and page.

From: sentence-transformers <huggingface.co/sentence-transformers>Subject: all-MiniLM-L6-v1
From: unsloth <huggingface.co/unsloth>Subject: all-MiniLM-L6-v2
From: mlx-community <huggingface.co/mlx-community>Subject: all-MiniLM-L6-v2-4bit
From: sentence-transformers <huggingface.co/sentence-transformers>Subject: all-mpnet-base-v1
From: sentence-transformers <huggingface.co/sentence-transformers>Subject: allenai-specter
From: sentence-transformers <huggingface.co/sentence-transformers>Subject: bert-base-nli-max-tokens