Aller au contenu principal

Chapitre 3 : Choisir le bon modèle d'embedding

Introduction​

Sélectionner le bon modèle d'embedding dépend de vos exigences spécifiques : qualité, coût, latence, support linguistique et contraintes de déploiement.

Cadre de décision​

Benchmarks MTEB​

Le Massive Text Embedding Benchmark (MTEB) est la norme pour comparer les modèles d'embedding :

Classement (Meilleurs modèles)​

RangModèleScore moyenDimensions
1text-embedding-3-large64.593072
2Cohere embed-v364.471024
3BGE-large-en-v1.564.231024
4E5-large-v262.251024
5text-embedding-3-small62.261536

Performance spécifique aux tâches​

ModèleRécupérationSTSClassification
text-embedding-3-large59.265.471.2
Cohere embed-v358.964.870.1
BGE-large57.863.969.5

Analyse des coûts​

Par million de tokens​

def calculate_monthly_cost(
docs_per_month: int,
avg_tokens_per_doc: int,
model: str
):
prices = {
"text-embedding-3-small": 0.02,
"text-embedding-3-large": 0.13,
"cohere-embed-v3": 0.10,
"self-hosted": 0.0 # Infrastructure costs separate
}

total_tokens = docs_per_month * avg_tokens_per_doc
millions = total_tokens / 1_000_000

return millions * prices[model]

# Exemple : 1M documents, 500 tokens chacun
cost = calculate_monthly_cost(1_000_000, 500, "text-embedding-3-small")
# Résultat : 10 $/mois pour l'embedding

Comparaison des coûts totaux​

ÉchelleOpenAI SmallOpenAI LargeAuto-hébergé
100K docs1 $6,50 $~50 $/mois (infra)
1M docs10 $65 $~100 $/mois
10M docs100 $650 $~200 $/mois

Considérations de latence​

Latence de l'API​

ModèleLatence moyenneLatence P99
text-embedding-3-small50ms150ms
text-embedding-3-large80ms200ms
Cohere embed-v360ms180ms
Auto-hébergé (GPU)10ms30ms

Stratégie de batching​

import asyncio
from openai import AsyncOpenAI

client = AsyncOpenAI()

async def batch_embed(texts, batch_size=100):
"""Batching efficace pour les grands ensembles de données"""
embeddings = []

for i in range(0, len(texts), batch_size):
batch = texts[i:i + batch_size]
response = await client.embeddings.create(
input=batch,
model="text-embedding-3-small"
)
embeddings.extend([e.embedding for e in response.data])

return embeddings

Support linguistique​

Modèles multilingues​

ModèleLanguesQualité
text-embedding-3100+Excellent
Cohere multilingual100+Excellent
BGE-m3100+Excellent
paraphrase-multilingual50+Bon

Spécifique à la langue​

# Pour des langues spécifiques, des modèles dédiés peuvent être meilleurs
models_by_language = {
"en": "BAAI/bge-large-en-v1.5",
"zh": "BAAI/bge-large-zh-v1.5",
"multilingual": "BAAI/bge-m3"
}

Options de déploiement​

Option 1 : API (Recommandée pour la plupart)​

# Avantages : Pas d'infrastructure, toujours à jour
# Inconvénients : Coût continu, latence, les données quittent votre réseau

from langchain.embeddings import OpenAIEmbeddings
embeddings = OpenAIEmbeddings()

Option 2 : Auto-hébergé​

# Avantages : Pas de coût par token, latence réduite, les données restent internes
# Inconvénients : Coût d'infrastructure, maintenance

from sentence_transformers import SentenceTransformer

model = SentenceTransformer('BAAI/bge-large-en-v1.5')
# Charger une fois, utiliser plusieurs fois

Option 3 : Hybride​

# Utiliser l'auto-hébergement pour les gros volumes, l'API pour les cas particuliers
def get_embeddings(texts, use_api=False):
if use_api or len(texts) < 10:
return api_embeddings.embed_documents(texts)
else:
return local_model.encode(texts)

Liste de vérification pour la sélection​

FacteurQuestionRecommandation
BudgetBudget mensuel ?>100 $ : API, <100 $ : Auto-hébergé
VolumeDocuments/mois ?>10M : Considérer l'auto-hébergement
LatenceTemps réel nécessaire ?<20ms : Auto-hébergement requis
LanguesMultilingue ?Utiliser des modèles multilingues
ConfidentialitéSensibilité des données ?Auto-héberger si critique
QualitéPrécision critique ?Payer pour le meilleur modèle

Matrice de recommandation​

Cas d'utilisationModèle recommandé
Startup / MVPtext-embedding-3-small
Entreprise (qualité)text-embedding-3-large
Entreprise (coût)BGE-large (auto-hébergé)
MultilingueCohere multilingual
Edge / Hors ligneall-MiniLM-L6-v2
Qualité maximaleCohere embed-v3

Résumé​

  1. Commencez avec l'API (OpenAI small) pour le prototypage
  2. Évaluez les scores MTEB pour votre type de tâche
  3. Calculez les coûts à votre échelle prévue
  4. Envisagez l'auto-hébergement à haut volume
  5. Testez avec vos données avant de vous engager

Prochaines étapes​

Testez vos connaissances avec le Quiz du Module 3 !