Embeddings · BAAI (Beijing Academy of Artificial Intelligence)
Run bge-m3 embeddings in the EU through an OpenAI-compatible API
bge-m3 is one of the most widely used open embedding models for multilingual search and retrieval-augmented generation. It is small, supports more than 100 languages and reads inputs of up to 8192 tokens. On inference.eu you call it through the OpenAI embeddings format, with your documents processed in EU data centres and never used for training.
- 01568M
- 02EU data centres
- 03MIT
What bge-m3 is
bge-m3 was released in January 2024 by the Beijing Academy of Artificial Intelligence (BAAI) under the MIT licence. The M3 stands for multi-functionality, multi-linguality and multi-granularity. It is based on XLM-RoBERTa, with 24 layers, about 568 million parameters and 1024-dimension dense vectors.
The model can produce three kinds of output from one pass: dense embeddings, sparse lexical weights similar to BM25, and multi-vector ColBERT-style representations. It supports more than 100 working languages and handles inputs from short sentences to long documents of up to 8192 tokens. It is the base model of the bge-reranker-v2-m3 reranker.
What it does well, and where it falls short
bge-m3 is a strong, cheap default for multilingual retrieval. Its small size makes embedding millions of documents affordable, its 1024-dimension vectors keep indexes compact, and it works well across European languages and in cross-lingual search, such as a German query finding an English document. It has broad support in vector databases and RAG frameworks.
Its limits come from its age and size. Newer and much larger models such as Qwen3 Embedding 8B usually retrieve better on hard queries and read longer inputs. bge-m3 has a fixed vector size and does not take task instructions. For the best ranking quality, combine it with a reranker such as bge-reranker-v2-m3.
Calling bge-m3 through the API
inference.eu uses the OpenAI request format, so any OpenAI SDK, LangChain, LlamaIndex or vector database integration that calls /v1/embeddings works unchanged. Set the base URL to the inference.eu API, use your inference.eu key and set the model to bge-m3.
Pass a string or a list of strings as input and you receive the dense 1024-dimension vector for each. Unlike some embedding models, bge-m3 needs no query prefix or instruction: queries and documents are embedded the same way. Batch documents in one request when indexing a corpus, and use the same model string for queries so that vectors stay comparable.
Data residency for bge-m3
Indexing a knowledge base means sending the full text of your documents to the embedding model. On inference.eu, bge-m3 runs on infrastructure in the European Union, so contracts, tickets, wiki pages and customer records are processed in EU data centres, are not sent to China and are never used to train any model.
Every customer receives a data processing agreement under Article 28 of the GDPR and our subprocessor list, which helps you document your search or RAG pipeline in your records of processing. Billing is in euros, on one invoice with the chat models that use the retrieved passages. The MIT licence allows commercial use with few conditions.
import os
from openai import OpenAI
client = OpenAI(base_url="https://api.inference.eu/v1", api_key=os.environ["INFERENCE_EU_API_KEY"])
result = client.embeddings.create(
model="bge-m3",
input=["Where is my data processed?"],
)
print(len(result.data[0].embedding))What teams use it for
- 1
Multilingual RAG
Index documents in several European languages and retrieve the right passages for a chat model, whatever language the user writes in.
- 2
Large-scale semantic search
Embed millions of documents at low compute cost and keep the index compact with 1024-dimension vectors.
- 3
Deduplication and clustering
Find near-duplicate records, group similar tickets or cluster feedback by topic across languages.
BGE-M3: common questions
The questions buyers, developers and legal teams ask us most. Something missing? Ask us directly.
Related
- BGE Reranker v2 M3Run bge-reranker-v2-m3 on inference.eu: a light multilingual reranker that sorts search and RAG results by relevance, processed in the EU.Reranking
- Qwen3 Embedding 8BRun Qwen3 Embedding 8B on inference.eu: multilingual text embeddings for search and RAG, up to 4096 dimensions and 32K tokens, processed in the EU.Embeddings
- multilingual-e5-large-instructRun multilingual-e5-large-instruct on inference.eu: compact embeddings in 100 languages for search, RAG and classification, processed in the EU.Embeddings
Move your AI workloads to EU infrastructure
Tell us which models you use and roughly how much traffic you have. We reply within one working day with pricing and next steps.
- Reply within one working day
- Pricing for your volume
- DPA ready to sign