BAAI - Open weights - verified
BGE-M3 embeddings
BGE-M3 is a current embedding model from BAAI, with open weights on Hugging Face at BAAI/bge-m3. It returns 1,024-dimension vectors by default and accepts up to 8,192 input tokens, for text input. There is no API price: the weights download from Hugging Face under MIT, and you pay for the compute you run them on.
CurrentModel id: BAAI/bge-m3- weights: BAAI/bge-m3
- Default dims
- 1,024
- Max input
- 8,192 tok
- Price / 1M
- Self-hosted
- Inputs
- Text
Dimensions
- 1,024default
Default output: 1,024 dimensions.
Pricing
No API price: the weights are on Hugging Face and you run them on your own hardware or host.
Open weights
- Hugging Face repo
- BAAI/bge-m3
- License
- MIT
mit - Commercial use
- Commercial use allowedCommercial use is allowed, per the license.
- Parameters
- Not stated
Worth knowing
One model produces dense, sparse (lexical weight) and multi-vector ColBERT outputs for hybrid retrieval, and queries need no instruction prefix.
Released . Multilingual: yes.
Usage
Copied verbatim from the page linked below. Placeholders such as project ids and API keys are the source's own.
from FlagEmbedding import BGEM3FlagModel
model = BGEM3FlagModel('BAAI/bge-m3',
use_fp16=True) # Setting use_fp16 to True speeds up computation with a slight performance degradation
sentences_1 = ["What is BGE M3?", "Defination of BM25"]
sentences_2 = ["BGE M3 is an embedding model supporting dense retrieval, lexical matching and multi-vector interaction.",
"BM25 is a bag-of-words retrieval function that ranks a set of documents based on the query terms appearing in each document"]
embeddings_1 = model.encode(sentences_1,
batch_size=12,
max_length=8192, # If you don't need such a long length, you can set a smaller value to speed up the encoding process.
)['dense_vecs']
embeddings_2 = model.encode(sentences_2)['dense_vecs']
similarity = embeddings_1 @ embeddings_2.TSource: huggingface.co/BAAI/bge-m3
FAQ
How many dimensions does BGE-M3 output?
Default output: 1,024 dimensions.
What is the max input length of BGE-M3?
8,192 tokens per input, per the model card. Longer text has to be chunked before you embed it.
Can I use BGE-M3 commercially?
BGE-M3 is released under MIT, and commercial use is allowed. The license text is at https://huggingface.co/BAAI/bge-m3.
What can BGE-M3 embed?
Text input, per the provider. It is documented as multilingual.
Sources
Last verified from the pages below.
- Hugging Face model card - huggingface.co
- Hugging Face API (cardData; no safetensors parameter count returned) - huggingface.co
Other open-weight embedding models
Default dimensions and max input tokens for the other models you can run yourself.
- Nemotron 3.5 Embed 8B4,096 dims - 32,768 tokens - Self-hosted
- Qwen3-Embedding-8B4,096 dims - 32,768 tokens - Self-hosted
- Qwen3-Embedding-4B2,560 dims - 32,768 tokens - Self-hosted
- EmbeddingGemma 2768 dims - 8,192 tokens - Self-hosted
- Qwen3-Embedding-0.6B1,024 dims - 32,768 tokens - Self-hosted
- Nomic Embed Text v2 MoE768 dims - 512 tokens - Self-hosted
- Voyage 4 Nano1,024 dims - 32,000 tokens - Self-hosted
- Granite Embedding 311M Multilingual R2768 dims - 32,768 tokens - Self-hosted
- GTE ModernBERT Base768 dims - 8,192 tokens - Self-hosted
All embedding models - Open-weight embedding models
Newsletter
New models, every week
One email per week. New model releases, embedding and retrieval updates and what they mean for what you build.
Keep exploring
Model API pricing and specs
First-party prices per 1M tokens for chat and reasoning models.
Local models
Open-weight LLMs you can download and run, with sizes and licenses.
What is RAG?
Where embeddings fit in a retrieval pipeline, end to end.
Vector databases compared
Where the vectors go once you have picked a model.