BGE-M3

RAG & Memory 💻 Python ⚖️ MIT 🟢 Actively maintained
12.1k stars

BGE-M3 is a multilingual embedding model from the FlagEmbedding library that supports dense, sparse, and multi-vector (ColBERT) retrieval. It handles inputs up to 8192 tokens across 100+ languages, making it suitable for retrieval-augmented generation and semantic search applications.

✨ Key features

  • Multilingual support for 100+ languages
  • Handles long documents up to 8192 tokens
  • Unifies dense, sparse, and multi-vector retrieval
  • State-of-the-art performance on multilingual benchmarks
  • Available via FlagEmbedding Python package
  • Supports fine-tuning for custom tasks

🎯 Use cases

  • Build multilingual semantic search engines
  • Enhance RAG pipelines with hybrid retrieval
  • Perform cross-lingual document retrieval
  • Retrieve relevant passages from long documents

📦 Installation

🧰 Requirements: Python environment with pip; model accessed via Hugging Face (no API key required).

pip install -U FlagEmbedding

For fine-tuning support:

pip install -U FlagEmbedding[finetune]

Alternatively, install from source:

git clone https://github.com/FlagOpen/FlagEmbedding.git
cd FlagEmbedding
pip install .
# For fine-tuning: pip install .[finetune]

🚀 Usage

from FlagEmbedding import FlagAutoModel

model = FlagAutoModel.from_finetuned('BAAI/bge-m3', use_fp16=True)

sentences_1 = ["I love NLP", "I love machine learning"]
sentences_2 = ["I love BGE", "I love text retrieval"]
embeddings_1 = model.encode(sentences_1)
embeddings_2 = model.encode(sentences_2)

similarity = embeddings_1 @ embeddings_2.T
print(similarity)

❓ FAQ

What does M3 stand for in BGE-M3?

M3 stands for Multi-linguality (100+ languages), Multi-granularities (input length up to 8192), and Multi-Functionality (unification of dense, lexical, and multi-vector retrieval).

Can I fine-tune BGE-M3?

Yes, you can install FlagEmbedding with the finetune extra (e.g., pip install FlagEmbedding[finetune]) and use the provided fine-tuning examples.

What retrieval methods does BGE-M3 support?

It supports dense retrieval, sparse (lexical) retrieval, and multi-vector (ColBERT) retrieval, making it versatile for different search scenarios.

Is BGE-M3 available for commercial use?

The README does not specify the license for BGE-M3, but other models like BGE-VL are MIT licensed. Check the model's Hugging Face page for license details.

📊 Repository

Stars★ 12,132
Forks🍴 914
Open issues🐛 908
Last commit🕒 Aug 24, 2026
Created📅 Aug 2023
Language💻 Python
License⚖️ MIT

🤖 Overview, features, install steps and FAQ were generated from the project's README on Sep 4, 2026. Always check the original source before running commands.