potion-mxbai-micro / README.md
blobbybob's picture
Upload README.md with huggingface_hub
4b7425b verified
metadata
language:
  - en
license: apache-2.0
library_name: model2vec
tags:
  - model2vec
  - sentence-transformers
  - embeddings
  - static-embeddings
  - tokenlearn
  - compact
  - tiny
  - micro
base_model: mixedbread-ai/mxbai-embed-large-v1
model-index:
  - name: potion-mxbai-micro
    results:
      - task:
          type: STS
        dataset:
          type: mteb/stsbenchmark-sts
          name: MTEB STS (English, 10 tasks)
        metrics:
          - type: spearman_cosine
            value: 71.04
      - task:
          type: Classification
        dataset:
          type: mteb/banking77
          name: MTEB Classification (English, 12 tasks)
        metrics:
          - type: accuracy
            value: 59.66
      - task:
          type: PairClassification
        dataset:
          type: mteb/twittersemeval2015
          name: MTEB PairClassification (English, 3 tasks)
        metrics:
          - type: ap
            value: 76.02

potion-mxbai-micro

A 700KB static embedding model. Yes, really. Seven hundred kilobytes for useful sentence embeddings.

Highlights

  • 68.91 avg on full MTEB English (STS + Classification + PairClassification, 25 tasks)
  • 700KB total model size — fits in an email attachment
  • 256 dimensions — same output dimensionality as the full model
  • 80-88x faster than all-MiniLM-L6-v2 on CPU
  • Pure numpy inference — no GPU needed
  • Drop-in compatible with model2vec and sentence-transformers

How It Was Made

  1. Start with our best 256D model (potion-mxbai-256d-v2, 70.98 avg)
  2. Apply model2vec's vocabulary quantization: cluster the 29,525 token embeddings into 2,000 centroids using k-means
  3. Each token maps to its nearest centroid via a token mapping table
  4. The full tokenizer is preserved — all text still tokenizes correctly

The result is a 2,000-row embedding table at 256D with int8 quantization. Tokens that are semantically similar share the same embedding vector, which acts as a natural regularizer.

Benchmark Results (Full MTEB English Suite)

Model STS Classification PairClassification Avg Size
potion-mxbai-2m-512d 74.15 65.44 76.80 72.13 ~125MB
potion-mxbai-256d-v2 73.79 63.23 77.33 71.45 7.5MB
potion-mxbai-128d-v2 72.56 61.48 75.45 69.83 3.9MB
potion-mxbai-micro (this) 71.04 59.66 76.02 68.91 0.7MB

Evaluated on 25 tasks (10 STS, 12 Classification, 3 PairClassification), English subsets only.

Usage

from model2vec import StaticModel

model = StaticModel.from_pretrained("blobbybob/potion-mxbai-micro")
embeddings = model.encode(["Hello world", "Static embeddings are fast"])

With Sentence Transformers:

from sentence_transformers import SentenceTransformer

model = SentenceTransformer("blobbybob/potion-mxbai-micro")
embeddings = model.encode(["Hello world", "Static embeddings are fast"])

When to use this model

  • You need embeddings in extremely constrained environments (embedded systems, IoT, WASM)
  • You're building a browser extension or mobile app where every KB counts
  • You want a fallback embedding model that loads instantly
  • You need to embed millions of documents and want to minimize index storage
  • Prototyping — get semantic search working in seconds, upgrade to larger models later

Model Family

Model Avg Size Best for
potion-mxbai-2m-512d 72.13 ~125MB Maximum quality
potion-mxbai-256d-v2 71.45 7.5MB Best quality/size balance
potion-mxbai-128d-v2 69.83 3.9MB Compact deployments
potion-mxbai-micro 68.91 0.7MB Ultra-tiny / embedded

Citation

@article{minishlab2024model2vec,
  author = {Tulkens, Stephan and {van Dongen}, Thomas},
  title = {Model2Vec: Fast State-of-the-Art Static Embeddings},
  year = {2024},
  url = {https://github.com/MinishLab/model2vec}
}