Skip to main content
Chroma uses Sentence Transformers as its default embedding function, providing high-quality embeddings out of the box with no additional configuration.

Default model

Chroma uses the all-MiniLM-L6-v2 model by default:
  • Dimensions: 384
  • Speed: Very fast
  • Quality: Excellent for most use cases
  • Size: ~80MB
  • Language: English (trained on English data)

How it works

When you create a collection without specifying an embedding function:
1

Model download

On first use, Chroma downloads the all-MiniLM-L6-v2 model (~80MB) from Hugging Face
2

Local inference

The model runs locally on your machine using ONNX Runtime for optimal performance
3

Automatic embedding

When you add documents, Chroma automatically generates embeddings using the model
4

Caching

The model is cached locally, so subsequent uses are instant

Explicit usage

ONNX Runtime

Chroma uses ONNX Runtime for fast, efficient inference:

Benefits of ONNX

Fast inference

Optimized for CPU inference without requiring heavy ML frameworks

Small footprint

Minimal dependencies compared to full PyTorch or TensorFlow

Cross-platform

Works consistently across Windows, macOS, and Linux

No GPU required

Efficient CPU inference, no need for GPU

Model characteristics

Performance

Quality metrics

The all-MiniLM-L6-v2 model achieves:
  • Semantic Textual Similarity: 82.41% correlation
  • Semantic Search: 58.04 mean average precision
  • Paraphrase Mining: 70.93 F1 score

Customization

While Sentence Transformers is the default, you can easily switch to other embedding functions:

Model caching

Cache location

Pre-downloading

When to use

  • Prototyping: Get started quickly with no API keys
  • English content: Trained on English data
  • Privacy: All processing happens locally
  • Cost-sensitive: No API costs
  • Offline use: Works without internet (after initial download)
  • You need multilingual support → Use Cohere or multilingual Sentence Transformers
  • You need highest quality → Use OpenAI text-embedding-3-large
  • You’re processing very large volumes → Consider hosted embedding APIs
  • You need domain-specific embeddings → Fine-tune or use specialized models

Troubleshooting

The first embedding operation downloads the model (~80MB). Subsequent operations are fast. Consider pre-downloading in your deployment process.
Process documents in smaller batches:

Resources

The default Sentence Transformer model provides excellent performance for most use cases. You only need to switch to a different embedding function if you have specific requirements like multilingual support or domain-specific embeddings.