Feature Extraction
Transformers
Safetensors
English
byrne_embed
sentence-embeddings
sentence-similarity
spikewhale
custom_code
Eval Results (legacy)
Instructions to use Quazim0t0/Byrne-Embed with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use Quazim0t0/Byrne-Embed with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("feature-extraction", model="Quazim0t0/Byrne-Embed", trust_remote_code=True)# Load model directly from transformers import AutoModel model = AutoModel.from_pretrained("Quazim0t0/Byrne-Embed", trust_remote_code=True, device_map="auto") - Notebooks
- Google Colab
- Kaggle
| license: apache-2.0 | |
| language: | |
| - en | |
| library_name: transformers | |
| tags: | |
| - sentence-embeddings | |
| - feature-extraction | |
| - sentence-similarity | |
| - spikewhale | |
| pipeline_tag: feature-extraction | |
| model-index: | |
| - name: Byrne-Embed | |
| results: | |
| - task: | |
| type: Classification | |
| name: MTEB AmazonCounterfactualClassification | |
| dataset: | |
| type: mteb/AmazonCounterfactualClassification | |
| name: MTEB AmazonCounterfactualClassification | |
| config: default | |
| split: test | |
| metrics: | |
| - type: accuracy | |
| value: 80.12 | |
| - task: | |
| type: Clustering | |
| name: MTEB ArXivHierarchicalClusteringP2P | |
| dataset: | |
| type: mteb/ArXivHierarchicalClusteringP2P | |
| name: MTEB ArXivHierarchicalClusteringP2P | |
| config: default | |
| split: test | |
| metrics: | |
| - type: v_measure | |
| value: 53.15 | |
| - task: | |
| type: Clustering | |
| name: MTEB ArXivHierarchicalClusteringS2S | |
| dataset: | |
| type: mteb/ArXivHierarchicalClusteringS2S | |
| name: MTEB ArXivHierarchicalClusteringS2S | |
| config: default | |
| split: test | |
| metrics: | |
| - type: v_measure | |
| value: 50.39 | |
| - task: | |
| type: Retrieval | |
| name: MTEB ArguAna | |
| dataset: | |
| type: mteb/ArguAna | |
| name: MTEB ArguAna | |
| config: default | |
| split: test | |
| metrics: | |
| - type: ndcg_at_10 | |
| value: 37.67 | |
| - task: | |
| type: Reranking | |
| name: MTEB AskUbuntuDupQuestions | |
| dataset: | |
| type: mteb/AskUbuntuDupQuestions | |
| name: MTEB AskUbuntuDupQuestions | |
| config: default | |
| split: test | |
| metrics: | |
| - type: map_at_1000 | |
| value: 52.88 | |
| - task: | |
| type: STS | |
| name: MTEB BIOSSES | |
| dataset: | |
| type: mteb/BIOSSES | |
| name: MTEB BIOSSES | |
| config: default | |
| split: test | |
| metrics: | |
| - type: cosine_spearman | |
| value: 75.56 | |
| - task: | |
| type: Classification | |
| name: MTEB Banking77Classification | |
| dataset: | |
| type: mteb/Banking77Classification | |
| name: MTEB Banking77Classification | |
| config: default | |
| split: test | |
| metrics: | |
| - type: accuracy | |
| value: 74.64 | |
| - task: | |
| type: Clustering | |
| name: MTEB BiorxivClusteringP2P.v2 | |
| dataset: | |
| type: mteb/BiorxivClusteringP2P.v2 | |
| name: MTEB BiorxivClusteringP2P.v2 | |
| config: default | |
| split: test | |
| metrics: | |
| - type: v_measure | |
| value: 33.73 | |
| - task: | |
| type: Retrieval | |
| name: MTEB CQADupstackGamingRetrieval | |
| dataset: | |
| type: mteb/CQADupstackGamingRetrieval | |
| name: MTEB CQADupstackGamingRetrieval | |
| config: default | |
| split: test | |
| metrics: | |
| - type: ndcg_at_10 | |
| value: 37.14 | |
| - task: | |
| type: Retrieval | |
| name: MTEB CQADupstackUnixRetrieval | |
| dataset: | |
| type: mteb/CQADupstackUnixRetrieval | |
| name: MTEB CQADupstackUnixRetrieval | |
| config: default | |
| split: test | |
| metrics: | |
| - type: ndcg_at_10 | |
| value: 23.48 | |
| - task: | |
| type: Retrieval | |
| name: MTEB ClimateFEVERHardNegatives | |
| dataset: | |
| type: mteb/ClimateFEVERHardNegatives | |
| name: MTEB ClimateFEVERHardNegatives | |
| config: default | |
| split: test | |
| metrics: | |
| - type: ndcg_at_10 | |
| value: 13.6 | |
| - task: | |
| type: Retrieval | |
| name: MTEB FEVERHardNegatives | |
| dataset: | |
| type: mteb/FEVERHardNegatives | |
| name: MTEB FEVERHardNegatives | |
| config: default | |
| split: test | |
| metrics: | |
| - type: ndcg_at_10 | |
| value: 28.7 | |
| - task: | |
| type: Retrieval | |
| name: MTEB FiQA2018 | |
| dataset: | |
| type: mteb/FiQA2018 | |
| name: MTEB FiQA2018 | |
| config: default | |
| split: test | |
| metrics: | |
| - type: ndcg_at_10 | |
| value: 11.38 | |
| - task: | |
| type: Retrieval | |
| name: MTEB HotpotQAHardNegatives | |
| dataset: | |
| type: mteb/HotpotQAHardNegatives | |
| name: MTEB HotpotQAHardNegatives | |
| config: default | |
| split: test | |
| metrics: | |
| - type: ndcg_at_10 | |
| value: 30.47 | |
| - task: | |
| type: Classification | |
| name: MTEB ImdbClassification | |
| dataset: | |
| type: mteb/ImdbClassification | |
| name: MTEB ImdbClassification | |
| config: default | |
| split: test | |
| metrics: | |
| - type: accuracy | |
| value: 60.97 | |
| - task: | |
| type: Classification | |
| name: MTEB MTOPDomainClassification | |
| dataset: | |
| type: mteb/MTOPDomainClassification | |
| name: MTEB MTOPDomainClassification | |
| config: default | |
| split: test | |
| metrics: | |
| - type: accuracy | |
| value: 92.29 | |
| - task: | |
| type: Classification | |
| name: MTEB MassiveIntentClassification | |
| dataset: | |
| type: mteb/MassiveIntentClassification | |
| name: MTEB MassiveIntentClassification | |
| config: default | |
| split: test | |
| metrics: | |
| - type: accuracy | |
| value: 63.23 | |
| - task: | |
| type: Classification | |
| name: MTEB MassiveScenarioClassification | |
| dataset: | |
| type: mteb/MassiveScenarioClassification | |
| name: MTEB MassiveScenarioClassification | |
| config: default | |
| split: test | |
| metrics: | |
| - type: accuracy | |
| value: 73.05 | |
| - task: | |
| type: Clustering | |
| name: MTEB MedrxivClusteringP2P.v2 | |
| dataset: | |
| type: mteb/MedrxivClusteringP2P.v2 | |
| name: MTEB MedrxivClusteringP2P.v2 | |
| config: default | |
| split: test | |
| metrics: | |
| - type: v_measure | |
| value: 32.7 | |
| - task: | |
| type: Clustering | |
| name: MTEB MedrxivClusteringS2S.v2 | |
| dataset: | |
| type: mteb/MedrxivClusteringS2S.v2 | |
| name: MTEB MedrxivClusteringS2S.v2 | |
| config: default | |
| split: test | |
| metrics: | |
| - type: v_measure | |
| value: 29.04 | |
| - task: | |
| type: Reranking | |
| name: MTEB MindSmallReranking | |
| dataset: | |
| type: mteb/MindSmallReranking | |
| name: MTEB MindSmallReranking | |
| config: default | |
| split: test | |
| metrics: | |
| - type: max_over_subqueries_map_at_1000 | |
| value: 28.07 | |
| - task: | |
| type: Retrieval | |
| name: MTEB SCIDOCS | |
| dataset: | |
| type: mteb/SCIDOCS | |
| name: MTEB SCIDOCS | |
| config: default | |
| split: test | |
| metrics: | |
| - type: ndcg_at_10 | |
| value: 10.15 | |
| - task: | |
| type: STS | |
| name: MTEB SICK-R | |
| dataset: | |
| type: mteb/SICK-R | |
| name: MTEB SICK-R | |
| config: default | |
| split: test | |
| metrics: | |
| - type: cosine_spearman | |
| value: 69.08 | |
| - task: | |
| type: STS | |
| name: MTEB STS12 | |
| dataset: | |
| type: mteb/STS12 | |
| name: MTEB STS12 | |
| config: default | |
| split: test | |
| metrics: | |
| - type: cosine_spearman | |
| value: 64.88 | |
| - task: | |
| type: STS | |
| name: MTEB STS13 | |
| dataset: | |
| type: mteb/STS13 | |
| name: MTEB STS13 | |
| config: default | |
| split: test | |
| metrics: | |
| - type: cosine_spearman | |
| value: 72.08 | |
| - task: | |
| type: STS | |
| name: MTEB STS14 | |
| dataset: | |
| type: mteb/STS14 | |
| name: MTEB STS14 | |
| config: default | |
| split: test | |
| metrics: | |
| - type: cosine_spearman | |
| value: 67.76 | |
| - task: | |
| type: STS | |
| name: MTEB STS15 | |
| dataset: | |
| type: mteb/STS15 | |
| name: MTEB STS15 | |
| config: default | |
| split: test | |
| metrics: | |
| - type: cosine_spearman | |
| value: 77.13 | |
| - task: | |
| type: STS | |
| name: MTEB STS17 | |
| dataset: | |
| type: mteb/STS17 | |
| name: MTEB STS17 | |
| config: default | |
| split: test | |
| metrics: | |
| - type: cosine_spearman | |
| value: 83.23 | |
| - task: | |
| type: STS | |
| name: MTEB STS22.v2 | |
| dataset: | |
| type: mteb/STS22.v2 | |
| name: MTEB STS22.v2 | |
| config: default | |
| split: test | |
| metrics: | |
| - type: cosine_spearman | |
| value: 60.53 | |
| - task: | |
| type: STS | |
| name: MTEB STSBenchmark | |
| dataset: | |
| type: mteb/STSBenchmark | |
| name: MTEB STSBenchmark | |
| config: default | |
| split: test | |
| metrics: | |
| - type: cosine_spearman | |
| value: 77.08 | |
| - task: | |
| type: PairClassification | |
| name: MTEB SprintDuplicateQuestions | |
| dataset: | |
| type: mteb/SprintDuplicateQuestions | |
| name: MTEB SprintDuplicateQuestions | |
| config: default | |
| split: test | |
| metrics: | |
| - type: max_ap | |
| value: 86.47 | |
| - task: | |
| type: Clustering | |
| name: MTEB StackExchangeClustering.v2 | |
| dataset: | |
| type: mteb/StackExchangeClustering.v2 | |
| name: MTEB StackExchangeClustering.v2 | |
| config: default | |
| split: test | |
| metrics: | |
| - type: v_measure | |
| value: 41.93 | |
| - task: | |
| type: Clustering | |
| name: MTEB StackExchangeClusteringP2P.v2 | |
| dataset: | |
| type: mteb/StackExchangeClusteringP2P.v2 | |
| name: MTEB StackExchangeClusteringP2P.v2 | |
| config: default | |
| split: test | |
| metrics: | |
| - type: v_measure | |
| value: 35.22 | |
| - task: | |
| type: Summarization | |
| name: MTEB SummEvalSummarization.v2 | |
| dataset: | |
| type: mteb/SummEvalSummarization.v2 | |
| name: MTEB SummEvalSummarization.v2 | |
| config: default | |
| split: test | |
| metrics: | |
| - type: cosine_spearman | |
| value: 22.39 | |
| - task: | |
| type: Retrieval | |
| name: MTEB TRECCOVID | |
| dataset: | |
| type: mteb/TRECCOVID | |
| name: MTEB TRECCOVID | |
| config: default | |
| split: test | |
| metrics: | |
| - type: ndcg_at_10 | |
| value: 29.3 | |
| - task: | |
| type: Retrieval | |
| name: MTEB Touche2020Retrieval.v3 | |
| dataset: | |
| type: mteb/Touche2020Retrieval.v3 | |
| name: MTEB Touche2020Retrieval.v3 | |
| config: default | |
| split: test | |
| metrics: | |
| - type: ndcg_at_10 | |
| value: 24.5 | |
| - task: | |
| type: Classification | |
| name: MTEB ToxicConversationsClassification | |
| dataset: | |
| type: mteb/ToxicConversationsClassification | |
| name: MTEB ToxicConversationsClassification | |
| config: default | |
| split: test | |
| metrics: | |
| - type: accuracy | |
| value: 62.94 | |
| - task: | |
| type: Classification | |
| name: MTEB TweetSentimentExtractionClassification | |
| dataset: | |
| type: mteb/TweetSentimentExtractionClassification | |
| name: MTEB TweetSentimentExtractionClassification | |
| config: default | |
| split: test | |
| metrics: | |
| - type: accuracy | |
| value: 57.29 | |
| - task: | |
| type: Clustering | |
| name: MTEB TwentyNewsgroupsClustering.v2 | |
| dataset: | |
| type: mteb/TwentyNewsgroupsClustering.v2 | |
| name: MTEB TwentyNewsgroupsClustering.v2 | |
| config: default | |
| split: test | |
| metrics: | |
| - type: v_measure | |
| value: 22.39 | |
| - task: | |
| type: PairClassification | |
| name: MTEB TwitterSemEval2015 | |
| dataset: | |
| type: mteb/TwitterSemEval2015 | |
| name: MTEB TwitterSemEval2015 | |
| config: default | |
| split: test | |
| metrics: | |
| - type: max_ap | |
| value: 53.19 | |
| - task: | |
| type: PairClassification | |
| name: MTEB TwitterURLCorpus | |
| dataset: | |
| type: mteb/TwitterURLCorpus | |
| name: MTEB TwitterURLCorpus | |
| config: default | |
| split: test | |
| metrics: | |
| - type: max_ap | |
| value: 82.55 | |
| <img src="Byrne-LLMs.png" width="50%"> | |
| # Byrne-Embed | |
| **Byrne-Embed** is a compact **85M-parameter** sentence-embedding model. It maps text to | |
| **768-dimensional unit-norm vectors** suitable for semantic similarity, retrieval, | |
| clustering, and reranking. | |
| The backbone is a custom **SpikeWhale** decoder (the "Byrne" line). A mean-pooled | |
| representation of its last hidden state is projected to 768 dimensions by a learned head | |
| and unit-normalized, so cosine similarity between two embeddings is just a dot product. | |
| ## Benchmark vs. EmbeddingGemma-300M | |
| We benchmarked Byrne-Embed against Google's | |
| **[EmbeddingGemma-300M](https://huggingface.co/google/embeddinggemma-300m)** on **4,000 | |
| held-out sentences** spanning educational web text, encyclopedic text, and | |
| instruction/chat text. Byrne-Embed's embedding geometry tracks closely with | |
| EmbeddingGemma's at roughly **1/3.5 the parameter count**: | |
| | Metric (Byrne-Embed vs EmbeddingGemma) | Result | | |
| |---|---| | |
| | **Mean per-sentence cosine** | **0.9415** (median 0.945, p10 0.912) | | |
| | Sentences within 0.90 cosine | **94.7%** | | |
| | **Similarity-structure agreement (Pearson)** | **0.9702** | | |
| | Similarity-structure agreement (Spearman) | 0.9599 | | |
| | Per-anchor neighbour-ranking correlation | 0.9494 | | |
| | Retrieval top-1 nearest-neighbour agreement | 72.8% | | |
| | Retrieval Recall@10 overlap | 78.2% | | |
| **Reading the numbers.** The two most important measures — *how closely the two models | |
| agree on which sentences are similar* — land at **Pearson 0.97 / Spearman 0.96**: when | |
| EmbeddingGemma judges two sentences similar, Byrne-Embed agrees almost identically. | |
| **94.7%** of all sentences sit within 0.90 cosine. The lower top-1 retrieval number is | |
| expected and not a quality gap: in a dense pool of real sentences many neighbours are | |
| near-ties (0.88 vs 0.87), so the single #1 slot flips easily between near-duplicates — | |
| which is why **Recall@10 stays at ~78%** and the **neighbour-ranking correlation is | |
| 0.95**. Both models find the same neighbourhood; they just occasionally swap rank 1 and | |
| rank 2 among near-identical candidates. | |
| Reproduce these numbers with the bundled [`run_tests.py`](./run_tests.py) (it loads both | |
| models and prints the full table). | |
| ## MTEB English Benchmark — MTEB(eng, v2) | |
| Evaluated with the official [`mteb`](https://github.com/embeddings-benchmark/mteb) library on the full **MTEB(eng, v2)** suite (**41/41 tasks**). Raw results are in `mteb_results/`; machine-readable scores are in the `model-index` metadata above. | |
| **Overall MTEB(eng, v2) mean: 50.79** | |
| | Category | Mean | Tasks | | |
| |---|---|---| | |
| | STS | 71.93 | 9 | | |
| | Classification | 70.57 | 8 | | |
| | PairClassification | 74.07 | 3 | | |
| | Clustering | 37.32 | 8 | | |
| | Reranking | 40.48 | 2 | | |
| | Retrieval | 24.64 | 10 | | |
| | Summarization | 22.39 | 1 | | |
| ### STS | |
| | Task | Score | | |
| |---|---| | |
| | BIOSSES | 75.56 | | |
| | SICK-R | 69.08 | | |
| | STS12 | 64.88 | | |
| | STS13 | 72.08 | | |
| | STS14 | 67.76 | | |
| | STS15 | 77.13 | | |
| | STS17 | 83.23 | | |
| | STS22.v2 | 60.53 | | |
| | STSBenchmark | 77.08 | | |
| ### Classification | |
| | Task | Score | | |
| |---|---| | |
| | AmazonCounterfactualClassification | 80.12 | | |
| | Banking77Classification | 74.64 | | |
| | ImdbClassification | 60.97 | | |
| | MTOPDomainClassification | 92.29 | | |
| | MassiveIntentClassification | 63.23 | | |
| | MassiveScenarioClassification | 73.05 | | |
| | ToxicConversationsClassification | 62.94 | | |
| | TweetSentimentExtractionClassification | 57.29 | | |
| ### PairClassification | |
| | Task | Score | | |
| |---|---| | |
| | SprintDuplicateQuestions | 86.47 | | |
| | TwitterSemEval2015 | 53.19 | | |
| | TwitterURLCorpus | 82.55 | | |
| ### Clustering | |
| | Task | Score | | |
| |---|---| | |
| | ArXivHierarchicalClusteringP2P | 53.15 | | |
| | ArXivHierarchicalClusteringS2S | 50.39 | | |
| | BiorxivClusteringP2P.v2 | 33.73 | | |
| | MedrxivClusteringP2P.v2 | 32.70 | | |
| | MedrxivClusteringS2S.v2 | 29.04 | | |
| | StackExchangeClustering.v2 | 41.93 | | |
| | StackExchangeClusteringP2P.v2 | 35.22 | | |
| | TwentyNewsgroupsClustering.v2 | 22.39 | | |
| ### Reranking | |
| | Task | Score | | |
| |---|---| | |
| | AskUbuntuDupQuestions | 52.88 | | |
| | MindSmallReranking | 28.07 | | |
| ### Retrieval | |
| | Task | Score | | |
| |---|---| | |
| | ArguAna | 37.67 | | |
| | CQADupstackGamingRetrieval | 37.14 | | |
| | CQADupstackUnixRetrieval | 23.48 | | |
| | ClimateFEVERHardNegatives | 13.60 | | |
| | FEVERHardNegatives | 28.70 | | |
| | FiQA2018 | 11.38 | | |
| | HotpotQAHardNegatives | 30.47 | | |
| | SCIDOCS | 10.15 | | |
| | TRECCOVID | 29.30 | | |
| | Touche2020Retrieval.v3 | 24.50 | | |
| ### Summarization | |
| | Task | Score | | |
| |---|---| | |
| | SummEvalSummarization.v2 | 22.39 | | |
| ## Usage | |
| The model loads with standard `transformers` via `trust_remote_code` (the projection head | |
| is fused into the weights, so a single `from_pretrained` loads everything): | |
| ```python | |
| import torch | |
| from transformers import AutoModel, AutoTokenizer | |
| tok = AutoTokenizer.from_pretrained("Quazim0t0/Byrne-Embed", trust_remote_code=True) | |
| model = AutoModel.from_pretrained("Quazim0t0/Byrne-Embed", trust_remote_code=True).eval() | |
| texts = ["The cat sat on the windowsill.", "A feline rested by the window."] | |
| enc = tok(texts, return_tensors="pt", padding=True, truncation=True, max_length=128) | |
| with torch.no_grad(): | |
| emb = model(**enc).last_hidden_state # (2, 768), L2-normalized | |
| print(float(emb[0] @ emb[1])) # cosine similarity ~ 0.83 | |
| ``` | |
| `forward()` returns L2-normalized 768-dim sentence embeddings, so cosine similarity is | |
| just a dot product. | |
| ## Files | |
| | File | Purpose | | |
| |---|---| | |
| | `model.safetensors`, `config.json` | fused SpikeWhale backbone + projection head + config | | |
| | `modeling_byrne_embed.py` | self-contained custom `AutoModel` class (SpikeWhale arch inlined; loaded via `trust_remote_code`) | | |
| | `tokenizer.json`, `tokenizer_config.json`, `spike_tokenizer.py` | byte-level SpikeTokenizer + its code | | |
| ## Limitations | |
| - English-centric evaluation; non-English performance is untested. | |
| - The single residual weak spot observed during evaluation is finance/economics | |
| paraphrase retrieval; general semantic similarity is strong. | |
| - Custom architecture: load via the bundled `byrne_embedder.py` (local modeling code — | |
| no remote code execution). | |
| ## Citation | |
| If you use Byrne-Embed, please cite: | |
| ```bibtex | |
| @misc{byrne2026byrneembed, | |
| title = {Byrne-Embed: A Compact 85M Sentence-Embedding Model}, | |
| author = {Byrne, Dean}, | |
| year = {2026}, | |
| howpublished = {\url{https://huggingface.co/Quazim0t0/Byrne-Embed}}, | |
| } | |
| ``` | |
| ## License | |
| Apache-2.0. | |