Embeddings Multilingues pour un RAG Global
Construisez des systèmes RAG qui fonctionnent dans toutes les langues en utilisant des modèles d'embeddings multilingues et la récupération inter-langues.
- Auteur
- Équipe de Recherche Ailog
- Date de publication
- Temps de lecture
- 11 min de lecture
- Niveau
- intermediate
- Étape du pipeline RAG
- Embedding
Pourquoi le multilingue ?
Cas d'usage : • Support client global • Recherche inter-langues • Bases de connaissances internationales • Chatbots multilingues
Meilleurs modèles multilingues (Nov 2025)
mE5-large (Microsoft) : • Plus de 100 langues • 1024 dimensions • Meilleur rapport performance/coût
multilingual-e5-large-instruct : • Optimisé par instructions • Optimisation requête/passage • État de l'art sur le benchmark MIRACL
LaBSE (Google) : • 109 langues • 768 dimensions • Excellent pour langues similaires
Implémentation de base
``python from sentence_transformers import SentenceTransformer
model = SentenceTransformer('intfloat/multilingual-e5-large-instruct')
Requête anglaise, documents français query_en = "What is machine learning?" docs_fr = [ "L'apprentissage automatique est une branche de l'IA", "Les réseaux de neurones sont utilisés en ML" ]
Embedding avec préfixe d'instruction query_emb = model.encode(f"query: {query_en}") doc_embs = model.encode([f"passage: {doc}" for doc in docs_fr])
Calculer la similarité from sklearn.metrics.pairwise import cosine_similarity scores = cosine_similarity([query_emb], doc_embs)[0] `
Récupération inter-langues
Rechercher dans n'importe quelle langue, récupérer dans n'importe quelle langue :
`python Requête en anglais, documents en plusieurs langues query = "How to bake bread?"
documents = { "en": "To bake bread, mix flour, water, yeast...", "fr": "Pour faire du pain, mélanger farine, eau, levure...", "es": "Para hacer pan, mezclar harina, agua, levadura...", "de": "Um Brot zu backen, Mehl, Wasser, Hefe mischen..." }
Encoder tout avec le même modèle query_emb = model.encode(f"query: {query}") doc_embs = { lang: model.encode(f"passage: {text}") for lang, text in documents.items() }
Tous les documents sont comparables dans le même espace vectoriel `
Détection de langue + Routage
`python from langdetect import detect
def multilingual_rag(query): Détecter la langue de la requête lang = detect(query)
Router vers un index spécifique à la langue (optimisation optionnelle) if lang in ['en', 'fr', 'de']: index = f"docs_{lang}" else: index = "docs_multilingual"
Rechercher results = vector_db.search( collection_name=index, query_vector=model.encode(f"query: {query}") )
return results `
Repli par traduction
Pour les langues rares, traduire d'abord :
`python from transformers import pipeline
translator = pipeline("translation", model="facebook/nllb-200-distilled-600M")
def translate_then_search(query, source_lang, target_lang='en'): Traduire la requête vers une langue commune if source_lang != target_lang: translated = translator( query, src_lang=source_lang, tgt_lang=target_lang )[0]['translation_text'] else: translated = query
Rechercher dans l'espace traduit results = vector_search(translated)
return results `
Qdrant avec filtrage par langue
`python from qdrant_client import QdrantClient from qdrant_client.models import Filter, FieldCondition, MatchValue
client = QdrantClient("localhost", port=6333)
Indexer les documents avec métadonnées de langue client.upsert( collection_name="multilingual_docs", points=[{ "id": 1, "vector": embedding, "payload": { "text": "...", "language": "fr" } }] )
Rechercher avec filtre de langue results = client.search( collection_name="multilingual_docs", query_vector=query_embedding, query_filter=Filter( must=[ FieldCondition( key="language", match=MatchValue(value="fr") ) ] ) ) `
Évaluation inter-langues
`python Benchmark MIRACL (Multilingual Information Retrieval) from mteb import MTEB
model = SentenceTransformer('intfloat/multilingual-e5-large-instruct')
evaluation = MTEB(tasks=["MIRACL"]) results = evaluation.run(model, output_folder="results/")
print(f"nDCG@10 moyen : {results['MIRACL']['ndcg@10']}") ``
Les embeddings multilingues débloquent le RAG global. Utilisez mE5 pour les meilleurs résultats en novembre 2025.