alt.freeweights.embed / snowflake-arctic-embed-m-v1.5
From: Snowflake <huggingface.co/Snowflake>Newsgroups: alt.freeweights.embedSubject:

snowflake-arctic-embed-m-v1.5

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

Sentence similarity model with 109M parameters. Gguf and onnx and safetensors weights, 2.85 GB in all. Published by Snowflake under Apache-2.0.

109M params2.85GBsnowflake-arctic-embed-m-v1.5gguf onnx safetensorspermissive
FactsParams109MSize2.85 GBFormatsgguf, onnx, safetensorsTasksentence similarityLicenseApache-2.0From sourcepermissive
$ fw get Snowflake/snowflake-arctic-embed-m-v1.5
# manifest sha256 e203fe0e6b60… · 2.85 GB · 25 files
$ fw verify ./snowflake-arctic-embed-m-v1.5 Snowflake/snowflake-arctic-embed-m-v1.5
From sourceHosted (signed)Snowflake/snowflake-arctic-embed-m-v1.5Last check: 2026-11-14 21:08 UTC

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

Works with

Evaluate with

Overview

Size
2.85 GB
Weights
1.13 GB (GGUF)
Parameters
109M
Formats
gguf, onnx, safetensors
Task
sentence similarity
License
Apache-2.0 (permissive)
Files
25, each with a sha256
Publisher
Snowflake
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:08 UTCpassed

Model card

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

Snowflake's Arctic-embed-m-v1.5#

News | This Model | Usage | FAQ | Contact | License | Acknowledgement

Image: image

News#

12/11/2024: Release of Technical Report for 2.0 model

12/04/2024: Release of L-2.0 and M-2.0

07/26/2024: Release preprint [[2407.18887] Embedding And Clustering Your Data Can Improve Contrastive Pretraining](https://arxiv.org/abs/2407.18887) on arXiv.

07/18/2024: Release of snowflake-arctic-embed-m-v1.5, capable of producing highly compressible embedding vectors that preserve quality even when squished as small as 128 bytes per vector. Details about the development of this model are available in the launch post on the Snowflake engineering blog.

05/10/2024: Release of the technical report on Arctic Embed

04/16/2024: Original release the snowflake-arctic-embed family of text embedding models.

This Model#

This model is an updated version of snowflake-arctic-embed-m designed to improve embedding vector compressibility. This model achieves a slightly higher performance overall without compression, and it is additionally capable of retaining most of its retrieval quality even down to 128 byte embedding vectors through a combination of Matryoshka Representation Learning (MRL) and uniform scalar quanitization.

Model NameMTEB Retrieval Score (NDCG @ 10)
snowflake-arctic-embed-m-v1.555.14
snowflake-arctic-embed-m54.91

Compared to several other models trained with MRL to produce 256-dimensional embedding vectors, snowflake-arctic-embed-m-v1.5 retains a higher degree of original model quality and delivers better retrieval quality on the MTEB Retrieval benchmark.

ModelModel ParametersMTEB Retrieval Score at 256 Dimensions (fraction of arctic-embed-m-v1.5)
Snowflake arctic-embed-m-v1.5109M54.2 (100%)
Google gecko1200M52.4 (97%)
OpenAI text-embedding-3-largeNot Published51.7 (95%)
Nomic nomic-embed-text-v1.5138M50.8 (94%)

Additionally, this model was designed to pair well with a corpus-independent scalar quantization scheme to achieve great performance even in as little as 128 bytes per vector (24x compression compared to 768 dimensional vectors stored in float32).

Model VersionDimensionalityScalar QuantizationBytes Per Vector (fraction of baseline)MTEB Retrieval Score (fraction of baseline)Vectors Per GB (improvement over baseline)
v1768None (float32)3072 (100%)54.9 (100%)0.33M (1.0x)
v1768int8768 (25%)54.9 (100%)1.3M (4x)
v1.5768int8768 (25%)55.1 (100%)1.3M (4x)
v1.5256int8256 (8.3%)54.2 (99%)3.9M (12x)
v1.5256int4128 (4.2%)53.7 (98%)7.8M (24x)

NOTE: Good uniform scalar quantization ranges to use with this model (and which were used in the eval above), are -0.18 to +0.18 for 4bit and -0.3 to +0.3 for 8bit. For a detailed walkthrough of using integer quantization with snowflake-arctic-embed-m-v1.5, check out our example notebook on GitHub.

Usage#

Using Sentence Transformers#

You can use the sentence-transformers package to use any of the snowflake-arctic-embed models. Here's an example for snowflake-arctic-embed-m-v1.5.

import torch
from sentence_transformers import SentenceTransformer
from torch.nn.functional import normalize

# Model constant.
MODEL_ID = "Snowflake/snowflake-arctic-embed-m-v1.5"

# Your queries and docs.
queries = ['what is snowflake?', 'Where can I get the best tacos?']
documents = ['The Data Cloud!', 'Mexico City of Course!']

# Load the model.
model = SentenceTransformer(MODEL_ID)

# Generate text embeddings.
query_embeddings = model.encode(queries, prompt_name="query")
document_embeddings = model.encode(documents)

# Scores via dotproduct.
scores = query_embeddings @ document_embeddings.T

# Pretty-print the results.
for query, query_scores in zip(queries, scores):
    doc_score_pairs = list(zip(documents, query_scores))
    doc_score_pairs = sorted(doc_score_pairs, key=lambda x: x[1], reverse=True)
    print(f'Query: "{query}"')
    for document, score in doc_score_pairs:
        print(f'Score: {score:.4f} | Document: "{document}"')
    print()

#### OUTPUT ####
# Query: "what is snowflake?"
# Score: 0.3521 | Document: "The Data Cloud!"
# Score: 0.2358 | Document: "Mexico City of Course!"

# Query: "Where can I get the best tacos?"
# Score: 0.3884 | Document: "Mexico City of Course!"
# Score: 0.2389 | Document: "The Data Cloud!"
#

#### Variation: Truncated Embeddings ####
query_embeddings_256 = normalize(torch.from_numpy(query_embeddings)[:, :256])
document_embeddings_256 = normalize(torch.from_numpy(document_embeddings)[:, :256])
scores_256 = query_embeddings_256 @ document_embeddings_256.T

# Pretty-print the results.
for query, query_scores in zip(queries, scores_256):
    doc_score_pairs = sorted(zip(documents, query_scores), key=lambda x: x[1], reverse=True)
    print(f'Query: "{query}"')
    for document, score in doc_score_pairs:
        print(f'Score: {score:.4f} | Document: "{document}"')
    print()

#### OUTPUT ####
# Query: "what is snowflake?"
# Score: 0.3852 | Document: "The Data Cloud!"
# Score: 0.2721 | Document: "Mexico City of Course!"

# Query: "Where can I get the best tacos?"
# Score: 0.4337 | Document: "Mexico City of Course!"
# Score: 0.2886 | Document: "The Data Cloud!"
#
Using Huggingface transformers#

You can use the transformers package to use an snowflake-arctic-embed model, too. For optimal retrieval quality, remember to use the CLS token for embeddings and to use the query prefix below (just on the query).

import torch
from torch.nn.functional import normalize
from transformers import AutoModel, AutoTokenizer

# Model constants.
MODEL_ID = "Snowflake/snowflake-arctic-embed-m-v1.5"
QUERY_PREFIX = 'Represent this sentence for searching relevant passages: '

# Your queries and docs.
queries  = ['what is snowflake?', 'Where can I get the best tacos?']
documents = ['The Data Cloud!', 'Mexico City of Course!']

# Load the model and tokenizer.
tokenizer = AutoTokenizer.from_pretrained(MODEL_ID)
model = AutoModel.from_pretrained(MODEL_ID, add_pooling_layer=False)
model.eval()

# Add query prefix and tokenize queries and docs.
queries_with_prefix = [f"{QUERY_PREFIX}{q}" for q in queries]
query_tokens = tokenizer(queries_with_prefix, padding=True, truncation=True, return_tensors='pt', max_length=512)
document_tokens =  tokenizer(documents, padding=True, truncation=True, return_tensors='pt', max_length=512)

# Use the model to generate text embeddings.
with torch.inference_mode():
    query_embeddings = model(**query_tokens)[0][:, 0]
    document_embeddings = model(**document_tokens)[0][:, 0]

# Remember to normalize embeddings.
query_embeddings = normalize(query_embeddings)
document_embeddings = normalize(document_embeddings)

# Scores via dotproduct.
scores = query_embeddings @ document_embeddings.T

# Pretty-print the results.
for query, query_scores in zip(queries, scores):
    doc_score_pairs = list(zip(documents, query_scores))
    doc_score_pairs = sorted(doc_score_pairs, key=lambda x: x[1], reverse=True)
    print(f'Query: "{query}"')
    for document, score in doc_score_pairs:
        print(f'Score: {score:.4f} | Document: "{document}"')
    print()

#### OUTPUT ####
# Query: "what is snowflake?"
# Score: 0.3521 | Document: "The Data Cloud!"
# Score: 0.2358 | Document: "Mexico City of Course!"

# Query: "Where can I get the best tacos?"
# Score: 0.3884 | Document: "Mexico City of Course!"
# Score: 0.2389 | Document: "The Data Cloud!"
#

#### Variation: Truncated Embeddings ####
query_embeddings_256 = normalize(query_embeddings[:, :256])
document_embeddings_256 = normalize(document_embeddings[:, :256])
scores_256 = query_embeddings_256 @ document_embeddings_256.T

# Pretty-print the results.
for query, query_scores in zip(queries, scores_256):
    doc_score_pairs = sorted(zip(documents, query_scores), key=lambda x: x[1], reverse=True)
    print(f'Query: "{query}"')
    for document, score in doc_score_pairs:
        print(f'Score: {score:.4f} | Document: "{document}"')
    print()

#### OUTPUT ####
# Query: "what is snowflake?"
# Score: 0.3852 | Document: "The Data Cloud!"
# Score: 0.2721 | Document: "Mexico City of Course!"

# Query: "Where can I get the best tacos?"
# Score: 0.4337 | Document: "Mexico City of Course!"
# Score: 0.2886 | Document: "The Data Cloud!"
#
Using Transformers.js#

If you haven't already, you can install the Transformers.js JavaScript library from NPM by running:

npm i @xenova/transformers

You can then use the model to compute embeddings as follows:

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

// Create feature extraction pipeline
const extractor = await pipeline('feature-extraction', 'Snowflake/snowflake-arctic-embed-m-v1.5', {
    quantized: false, // Comment out this line to use the quantized version
});

// Generate sentence embeddings
const sentences = [
    'Represent this sentence for searching relevant passages: Where can I get the best tacos?',
    'The Data Cloud!',
    'Mexico City of Course!',
]
const output = await extractor(sentences, { normalize: true, pooling: 'cls' });

// Compute similarity scores
const [source_embeddings, ...document_embeddings ] = output.tolist();
const similarities = document_embeddings.map(x => dot(source_embeddings, x));
console.log(similarities); // [0.15664823859882132, 0.24481869975470627]
Compressing to 128 bytes#

This model is designed to generate embeddings which compress well down to 128 bytes via a two-part compression scheme:

  1. Truncation and renormalization to 256 dimensions (a la Matryoskha Representation Learning, see the original paper for reference).
  2. 4-bit uniform scalar quantization of all 256 values to the same range (-0.18 to +0.18).
    • For 8-bit uniform scalar quantization, the slightly wider range -0.3 to +0.3 tends to work slightly better given how much more granular 8-bit quantization is.

For an in-depth examples, check out our arctic-embed GitHub repositiory.

FAQ#

TBD

Contact#

Feel free to open an issue or pull request if you have any questions or suggestions about this project. You also can email Daniel Campos(daniel.campos@snowflake.com).

License#

Arctic is licensed under the Apache-2. The released models can be used for commercial purposes free of charge.

Acknowledgement#

We want to thank the open-source community, which has provided the great building blocks upon which we could make our models. We thank our modeling engineers, Danmei Xu, Luke Merrick, Gaurav Nuti, and Daniel Campos, for making these great models possible. We thank our leadership, Himabindu Pucha, Kelvin So, Vivek Raghunathan, and Sridhar Ramaswamy, for supporting this work. We also thank the open-source community for producing the great models we could build on top of and making these releases possible. Finally, we thank the researchers who created BEIR and MTEB benchmarks. It is largely thanks to their tireless work to define what better looks like that we could improve model performance.

Files

25 files · 2.85 GBWeights 1.13 GB (GGUF). Sizes and sha256 from the signed manifest.
Show all 25 files with their sha256
FileSizesha256
.gitattributes2.00 KB7396086aef8ed459e8c1a5821022e29176a9470ef145fcf91f2831d9a75dc1b2
1_Pooling/config.json297 B4bf279dd9204db673304cab6e7db8448f427412a0d87f04c3e19f1de55dd98cd
README.md273 KBc4db76f0902e1d102d455d5ca5f75272134e8a06392a089e7f7d03c484fa7a7d
config.json772 Bd2dddc06af0aeeb7fd3289a3dee1ac76dce0c3df2467cadd26f5f731f8d7919b
config_sentence_transformers.json253 B705887b2d56911fa93be916a2457bcc38d289740c630e06b3684ba3abf61a071
gguf/snowflake-arctic-embed-m-v1.5-bf16.gguf219 MB4bb111bcd8872733e46211deecd7066a34b23251e6262a86d568cf40dc61dc60
gguf/snowflake-arctic-embed-m-v1.5-f16.gguf219 MBe718db059f247935c3292fced48b0ca9af541a955b4a2715b222a3247489c82f
gguf/snowflake-arctic-embed-m-v1.5-f32.gguf436 MB3990712817c987c2fa4d4d0899cd6e6804711c2896aedc36640eb2334b14121d
gguf/snowflake-arctic-embed-m-v1.5-q8_0.gguf118 MBfcde2aca1b24d80ffe79b875f266782ec6bda35131fda44801801e8b5b671967
gguf/snowflake-arctic-embed-m-v1.5-tq1_0.gguf67.5 MB045994fbf424fbbdcc1291da18077aa139ec2129c00fdb11a9a144f5162bff9b
gguf/snowflake-arctic-embed-m-v1.5-tq2_0.gguf71.5 MBe7e84e7ede3c8928d54f72989681409b020302eb28d838517a44fb52cea87e03
model.safetensors436 MB463d27a3e88a748997316367c419bbdab4d809300a5f24b9b19ba9b2dc08ffdd
modules.json350 B21ddb3037a55ebf4549eb5c1dc44c3f28f10b56ec7f1335c92fd90e5b30d88ac
onnx/model.onnx436 MBbc6f7662487a0796e6f86229c8e5c3ab2f7059e08e0bb2f524125273f72171c4
onnx/model_bnb4.onnx144 MB79b1f64552e94478e3e65065a74a8f23218aac91ac99bacf3149064614724ea7
onnx/model_fp16.onnx218 MB8384cc8a480d60ade695631ced7b015b3f21d959a8ad3cdffd189a4005408c98
onnx/model_int8.onnx110 MBa18f437b2466863901a0bdc14904cf93246f5ecce0b656fc773bc2b7b2f84f6e
onnx/model_q4.onnx149 MBac0c7abfe181b9808ed80d3d04c918e38e146523b4b79fee54a32e7a7635754f
onnx/model_quantized.onnx110 MBa18f437b2466863901a0bdc14904cf93246f5ecce0b656fc773bc2b7b2f84f6e
onnx/model_uint8.onnx110 MB4e196a38f9f98da5b5990f16b835eb0c79b388592cf324f5b21c62059111ebdb
sentence_bert_config.json108 Bb59d00070ef6dfc0bb74bc5d52717cb9d5c0a0f94b8edca6c04f241351cd8ccb
special_tokens_map.json695 B5d5b662e421ea9fac075174bb0688ee0d9431699900b90662acd44b2a350503a
tokenizer.json712 KB91f1def9b9391fdabe028cd3f3fcc4efd34e5d1f08c3bf2de513ebb5911a1854
tokenizer_config.json1.38 KB0e83e9d7206b3ade43f8f2aeef523cf5d5b4a25b67af21b273de21972c0f58b7
vocab.txt232 KB07eced375cec144d27c900241f3e339478dec958f92fddbc551f295c992038a3
VersionsEach time the pinned upstream commit or file list changed in this repo. Newest first.
Upstream commitDateContents
e58a8f7561 pinned now manifest updated, same commit2026-11-14 21:08 UTC25 files · 2.85 GB
e58a8f75612026-11-14 21:08 UTC25 files · 2.85 GB

Use it

$ fw get Snowflake/snowflake-arctic-embed-m-v1.5
# manifest sha256 e203fe0e6b60… · 2.85 GB · 25 files
$ fw verify ./snowflake-arctic-embed-m-v1.5 Snowflake/snowflake-arctic-embed-m-v1.5
fw.pyChecks the signature and every sha256, tries each source in order, resumes.
$ python3 fw.py get https://freeweights.allternit.com/manifests/Snowflake/snowflake-arctic-embed-m-v1.5.json --dir ./snowflake-arctic-embed-m-v1.5 $ python3 fw.py verify ./snowflake-arctic-embed-m-v1.5 ./Snowflake__snowflake-arctic-embed-m-v1.5.json
hfThe Hugging Face CLI with one setting. Same repo id.
$ HF_ENDPOINT=https://freeweights.allternit.com hf download Snowflake/snowflake-arctic-embed-m-v1.5 --revision e58a8f756156a1293d763f17e3aae643474e9b8a --local-dir ./snowflake-arctic-embed-m-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("Snowflake/snowflake-arctic-embed-m-v1.5", revision="e58a8f756156a1293d763f17e3aae643474e9b8a") model = AutoModel.from_pretrained("Snowflake/snowflake-arctic-embed-m-v1.5", revision="e58a8f756156a1293d763f17e3aae643474e9b8a", 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("Snowflake/snowflake-arctic-embed-m-v1.5", revision="e58a8f756156a1293d763f17e3aae643474e9b8a") vectors = model.encode(["Hello"])
llama.cppDownload one GGUF variant (gguf, 1.13 GB), then serve it.
$ HF_ENDPOINT=https://freeweights.allternit.com hf download Snowflake/snowflake-arctic-embed-m-v1.5 --include "gguf/*" --local-dir ./snowflake-arctic-embed-m-v1.5 $ llama-server -m ./snowflake-arctic-embed-m-v1.5/gguf/snowflake-arctic-embed-m-v1.5-bf16.gguf
OllamaMake an Ollama model from the downloaded file.
$ printf 'FROM ./snowflake-arctic-embed-m-v1.5/gguf/snowflake-arctic-embed-m-v1.5-bf16.gguf\n' > Modelfile $ ollama create snowflake-arctic-embed-m-v1.5 -f Modelfile

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
c4db76f0902e1d102d455d5ca5f75272134e8a06392a089e7f7d03c484fa7a7d
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: Snowflake <huggingface.co/Snowflake>Newsgroups: alt.freeweights.embedSubject: snowflake-arctic-embed-m-v1.5Date: 2026-11-14Commit: e58a8f7Signed: 2DC28CC7B26A283B ✓
Upstream
Snowflake/snowflake-arctic-embed-m-v1.5
Pinned commit
e58a8f756156a1293d763f17e3aae643474e9b8a
Manifest
snowflake-arctic-embed-m-v1.5.json · .minisig
Manifest sha256
e203fe0e6b60859ebb46c7be42aa0dc454550577db99bc55e57efd1380432e2e
Signature
minisign, Ed25519, key 2DC28CC7B26A283B
Created
2026-11-14 21:08 UTC
Generator
freeweights-manifest/0.1.0
Takedowns
None.

How to verify

$ curl -O https://freeweights.allternit.com/manifests/Snowflake/snowflake-arctic-embed-m-v1.5.json $ curl -O https://freeweights.allternit.com/manifests/Snowflake/snowflake-arctic-embed-m-v1.5.json.minisig $ minisign -Vm snowflake-arctic-embed-m-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

No related models in this catalog.Nothing here lists this model as its parent, and it names no parent.
Get it
Download
$ HF_ENDPOINT=https://freeweights.allternit.com hf download Snowflake/snowflake-arctic-embed-m-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. snowflake-arctic-embed-m-v1.5.json. Provenance. Takedown history: none.
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