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

nomic-embed-text-v1.5

Date: 2026-11-14Commit: e9b6763Signed: 2DC28CC7B26A283B ✓

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

137M params2.22GBnomic-embed-text-v1.5onnx safetensorspermissive
FactsParams137MSize2.22 GBFormatsonnx, safetensorsTasksentence similarityLicenseApache-2.0From sourcepermissive
$ fw get nomic-ai/nomic-embed-text-v1.5
# manifest sha256 1d904cfca5c3… · 2.22 GB · 20 files
$ fw verify ./nomic-embed-text-v1.5 nomic-ai/nomic-embed-text-v1.5
From sourceHosted (signed)nomic-ai/nomic-embed-text-v1.5Last 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
2.22 GB
Weights
547 MB (safetensors)
Parameters
137M
Formats
onnx, safetensors
Task
sentence similarity
License
Apache-2.0 (permissive)
Files
20, 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 e9b6763. Shown as plain text with links; images open at the publisher.

nomic-embed-text-v1.5: Resizable Production Embeddings with Matryoshka Representation Learning#

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: <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.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_document',
    dimensionality=256,
)

print(output)

For more information, see the API reference

Infinity#

Usage with Infinity.

docker run --gpus all -v $PWD/data:/app/.cache -e HF_TOKEN=$HF_TOKEN -p "7997":"7997" \
michaelf34/infinity:0.0.70 \
v2 --model-id nomic-ai/nomic-embed-text-v1.5 --revision "main" --dtype float16 --batch-size 8 --engine torch --port 7997 --no-bettertransformer

Adjusting Dimensionality#

nomic-embed-text-v1.5 is an improvement upon Nomic Embed that utilizes Matryoshka Representation Learning which gives developers the flexibility to trade off the embedding size for a negligible reduction in performance.

NameSeqLenDimensionMTEB
nomic-embed-text-v1819276862.39
nomic-embed-text-v1.5819276862.28
nomic-embed-text-v1.5819251261.96
nomic-embed-text-v1.5819225661.04
nomic-embed-text-v1.5819212859.34
nomic-embed-text-v1.581926456.10

Image: image/png

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

20 files · 2.22 GBWeights 547 MB (safetensors). Sizes and sha256 from the signed manifest.
Hide all 20 files with their sha256
FileSizesha256
.gitattributes1.52 KB11ad7efa24975ee4b0c3c3a38ed18737f0658a5f75a0a96787b576a78a023361
1_Pooling/config.json286 B3d6180f7233df2f529d65ea60c8db4af614fb78cbe99fd81103dcfeb9f8166a5
README.md71.8 KB4430178908fbd574fdb6457e302d23e643d733ed036b5777180b0806946767b2
config.json2.54 KB9ab00bd92cee80a569f708140b7b6c1661a65891ff3765b1519e181ba2f2c92b
config_sentence_transformers.json140 B482f42ca954f5a8d55bccbb437b8d6eb721ce19059c78330c815045ddd1a87eb
model.safetensors547 MB9e7d262b1fe5ea350782829496efa831901b77486bbde1cea54a4c822d010d5c
modules.json255 Bf93c503b32fa7bc2e186843f0add961caa14eb68f7be516e327df3cadbcd541a
onnx/model.onnx547 MB147d5aa88c2101237358e17796cf3a227cead1ec304ec34b465bb08e9d952965
onnx/model_bnb4.onnx158 MBeb81cef4642ae7a81cd135c08d9622d85cff3fa25d5adabb3561fba908a48b75
onnx/model_fp16.onnx274 MBcf5b5a86edb00f895561803cfc04729090a958340b8ca2ad76c143f565f6bb04
onnx/model_int8.onnx137 MBb4342336debaea79de872370664b0aaeb67dea4605513d00ee236ea871a81f27
onnx/model_q4.onnx165 MB314976b7b9fba83283f9c8a29ee680a159fa485f52104e3fa39d3d5858337003
onnx/model_q4f16.onnx111 MB3dbab6709d866709a8f9df237fe9a008bd9ccfc30e32e4b8f7f5e085cdb68bf1
onnx/model_quantized.onnx137 MBb4342336debaea79de872370664b0aaeb67dea4605513d00ee236ea871a81f27
onnx/model_uint8.onnx137 MBf7ee635388c995ea16eeeb50bc82269533b740be291ab13dc86df8977b5c31df
sentence_bert_config.json58 B9ee3935137f87c9ce6662ae17fe7afb7c9c64744a41247359fd228dc37e627b3
special_tokens_map.json695 B5d5b662e421ea9fac075174bb0688ee0d9431699900b90662acd44b2a350503a
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
e9b6763023 pinned now manifest updated, same commit2026-11-14 21:10 UTC20 files · 2.22 GB
e9b67630232026-11-14 21:10 UTC20 files · 2.22 GB

Use it

$ fw get nomic-ai/nomic-embed-text-v1.5
# manifest sha256 1d904cfca5c3… · 2.22 GB · 20 files
$ fw verify ./nomic-embed-text-v1.5 nomic-ai/nomic-embed-text-v1.5
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.5.json --dir ./nomic-embed-text-v1.5 $ python3 fw.py verify ./nomic-embed-text-v1.5 ./nomic-ai__nomic-embed-text-v1.5.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.5 --revision e9b6763023c676ca8431644204f50c2b100d9aab --local-dir ./nomic-embed-text-v1.5
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.5", revision="e9b6763023c676ca8431644204f50c2b100d9aab") model = AutoModel.from_pretrained("nomic-ai/nomic-embed-text-v1.5", revision="e9b6763023c676ca8431644204f50c2b100d9aab", 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.5", revision="e9b6763023c676ca8431644204f50c2b100d9aab") 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
4430178908fbd574fdb6457e302d23e643d733ed036b5777180b0806946767b2
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-v1.5Date: 2026-11-14Commit: e9b6763Signed: 2DC28CC7B26A283B ✓
Upstream
nomic-ai/nomic-embed-text-v1.5
Pinned commit
e9b6763023c676ca8431644204f50c2b100d9aab
Manifest
nomic-embed-text-v1.5.json · .minisig
Manifest sha256
1d904cfca5c3663aa74a6601218503da67dd57e2877ea57b83816509951845a6
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.5.json $ curl -O https://freeweights.allternit.com/manifests/nomic-ai/nomic-embed-text-v1.5.json.minisig $ minisign -Vm nomic-embed-text-v1.5.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
Get it
Download
$ HF_ENDPOINT=https://freeweights.allternit.com hf download nomic-ai/nomic-embed-text-v1.5
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.5.json. Provenance. Takedown history: none.

Variants

1 quantized or adapter build of nomic-embed-text-v1.5. 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