3. EmbeddingIntermédiaire

Choisir des modèles d'embedding pour le RAG

10 novembre 2025
11 min de lecture
Équipe de Recherche Ailog

Comparez les modèles d'embedding en 2025 : OpenAI, Cohere, alternatives open-source. Trouvez le meilleur pour votre cas d'usage.

Paysage des modèles d'embedding (novembre 2025)

L'espace des embeddings a considérablement évolué. Voici ce qui mène :

Top modèles par score MTEB

1. OpenAI text-embedding-3-large

  • Dimensions : 3072 (configurable jusqu'à 256)
  • Score MTEB : 64.6
  • Coût : $0.13 par 1M tokens
  • Meilleur pour : Usage général, haute précision

2. Cohere embed-v4

  • Dimensions : 1024
  • Score MTEB : 65.2 (le plus élevé en nov 2025)
  • Coût : $0.10 par 1M tokens
  • Meilleur pour : Multilingue, optimisé recherche

3. Voyage AI voyage-2

  • Dimensions : 1536
  • Score MTEB : 63.8
  • Coût : $0.12 par 1M tokens
  • Meilleur pour : Ajustement spécifique au domaine

4. BGE-M3 (open-source)

  • Dimensions : 1024
  • Score MTEB : 63.0
  • Coût : Gratuit (auto-hébergé)
  • Meilleur pour : Budget limité, confidentialité

5. all-MiniLM-L6-v2

  • Dimensions : 384
  • Score MTEB : 56.3
  • Coût : Gratuit
  • Meilleur pour : Prototypage rapide, dev local

Facteurs de décision clés

1. Précision vs Coût

DEVELOPERpython
# High accuracy: OpenAI or Cohere from openai import OpenAI client = OpenAI() response = client.embeddings.create( model="text-embedding-3-large", input="Your text here" ) embedding = response.data[0].embedding # Budget option: Open-source from sentence_transformers import SentenceTransformer model = SentenceTransformer('BAAI/bge-large-en-v1.5') embedding = model.encode("Your text here")

2. Taille de dimension

Plus petit = plus rapide, stockage moins cher, mais moins précis

DEVELOPERpython
# OpenAI: Configurable dimensions response = client.embeddings.create( model="text-embedding-3-large", input="text", dimensions=512 # vs default 3072 )

3. Support linguistique

Leaders multilingues (nov 2025) :

  • Cohere embed-v4 : 100+ langues
  • BGE-M3 : 100+ langues
  • OpenAI-3-large : Fort multilingue
  • E5-mistral-7b-instruct : Open-source multilingue

4. Spécialisation par domaine

Code : OpenAI text-embedding-3-small, Voyage code-2 Juridique : BGE fine-tuné sur corpus juridique Médical : BioGPT embeddings, PubMedBERT

Benchmarker votre cas d'usage

Ne faites pas confiance aux benchmarks génériques - testez sur VOS données :

DEVELOPERpython
from sentence_transformers import SentenceTransformer, util def benchmark_model(model_name, queries, documents): model = SentenceTransformer(model_name) # Embed query_embs = model.encode(queries) doc_embs = model.encode(documents) # Calculate similarities similarities = util.cos_sim(query_embs, doc_embs) return similarities # Test multiple models models = [ "text-embedding-3-large", "BAAI/bge-large-en-v1.5", "sentence-transformers/all-MiniLM-L6-v2" ] for model in models: scores = benchmark_model(model, test_queries, test_docs) print(f"{model}: {scores.mean()}")

Embeddings Matryoshka (innovation 2025)

Les nouveaux modèles supportent des dimensions variables depuis le même embedding :

DEVELOPERpython
# Generate once at full dimension full_embedding = model.encode(text, dimension=1024) # Truncate later as needed small_embedding = full_embedding[:256] # Just use first 256 medium_embedding = full_embedding[:512] # Quality degrades gracefully, not catastrophically

Modèles supportant ceci :

  • OpenAI text-embedding-3-*
  • Nomic embed-v1.5
  • Jina embeddings v2

Fine-tuning pour votre domaine

DEVELOPERpython
from sentence_transformers import SentenceTransformer, InputExample, losses from torch.utils.data import DataLoader # Load base model model = SentenceTransformer('BAAI/bge-base-en-v1.5') # Create training examples train_examples = [ InputExample(texts=['query', 'positive_doc', 'negative_doc']) ] train_dataloader = DataLoader(train_examples, shuffle=True, batch_size=16) # Fine-tune train_loss = losses.MultipleNegativesRankingLoss(model) model.fit( train_objectives=[(train_dataloader, train_loss)], epochs=1, warmup_steps=100 )

Analyse de coûts (1M documents, nov 2025)

ModèleCoût EmbeddingStockage (1024d)Inférence
OpenAI-3-large$130$50/mois$0.13/1M requêtes
Cohere v4$100$50/mois$0.10/1M requêtes
BGE (auto-hébergé)$0$50/moisGPU: $100/mois
all-MiniLM$0$20/moisCPU: $20/mois

Recommandations par cas d'usage

Startup/MVP : all-MiniLM-L6-v2 (gratuit, rapide) Production (qualité importante) : Cohere embed-v4 Production (budget important) : BGE-large auto-hébergé Multilingue : Cohere embed-v4 ou BGE-M3 Recherche de code : Voyage code-2 Critique pour la confidentialité : BGE auto-hébergé

Stratégie de migration

Changer d'embeddings nécessite de tout ré-embedder :

DEVELOPERpython
# Gradual migration def hybrid_search(query, old_index, new_index, alpha=0.5): # Search both indices old_results = old_index.search(old_model.encode(query)) new_results = new_index.search(new_model.encode(query)) # Blend results return blend_rankings(old_results, new_results, alpha)

Le modèle d'embedding est la fondation de votre RAG. Choisissez judicieusement, benchmarkez minutieusement, et soyez prêt à mettre à niveau au fur et à mesure que les modèles s'améliorent.

Tags

embeddingsmodèlesbenchmarksmteb

Articles connexes

Ailog Assistant

Ici pour vous aider

Salut ! Pose-moi des questions sur Ailog et comment intégrer votre RAG dans vos projets !