01
📖 Introduction
Pour adapter un LLM (Large Language Model) à un domaine ou une entreprise spécifique, deux approches dominent : le RAG (Retrieval-Augmented Generation) et le Fine-tuning. Ce comparatif vous aide à choisir la bonne stratégie.
💡 En résumé :
- ✅ RAG : le LLM interroge une base de connaissances externe (vecteur ou graphe) pour enrichir son contexte
- ✅ Fine-tuning : le LLM est ré-entraîné sur vos données pour apprendre de nouveaux patterns
- ✅ Idéal : les combiner pour des résultats optimaux
02
🔍 RAG (Retrieval-Augmented Generation)
📊 Architecture RAG :
[Question] → [Recherche dans KB] → [Contexte pertinent] + [Prompt] → [LLM] → [Réponse]
# RAG simple avec LangChain
from langchain.vectorstores import FAISS
from langchain.chains import RetrievalQA
# 1. Indexation des documents
vectorstore = FAISS.from_documents(documents, embeddings)
# 2. Création du RAG
qa_chain = RetrievalQA.from_chain_type(
llm=llm,
retriever=vectorstore.as_retriever()
)
# 3. Question
response = qa_chain.run("Quel est notre politique de remboursement ?")
✅ Avantages du RAG
- Données toujours à jour : mettez à jour la KB sans re-entraînement
- Transparence : le LLM cite ses sources
- Réduction des hallucinations : contexte factuel fourni
- Coût d'inférence faible : pas de ré-entraînement
- Déploiement rapide : quelques heures/jours
- Idéal pour documents spécifiques : politique, FAQ, documentation
❌ Inconvénients
- Latence supplémentaire (recherche + génération)
- Dépend de la qualité de la recherche
- Contexte limité (taille du prompt)
- Ne change pas le "style" ou le "ton" du LLM
03
🎯 Fine-tuning
📊 Architecture Fine-tuning :
[Données d'entraînement] → [Ré-entraînement du LLM] → [Modèle personnalisé] → [Inférence]
# Fine-tuning avec OpenAI
from openai import OpenAI
client = OpenAI()
# Préparer les données (format JSONL)
# {"messages": [{"role": "system", "content": "..."}, ...]}
# Lancer le fine-tuning
job = client.fine_tuning.jobs.create(
training_file="file-xxx.jsonl",
model="gpt-3.5-turbo",
hyperparameters={"n_epochs": 3}
)
# Utiliser le modèle fine-tuné
response = client.chat.completions.create(
model="ft:gpt-3.5-turbo:my-org:custom-id",
messages=[{"role": "user", "content": "Question"}]
)
✅ Avantages du Fine-tuning
- Style et ton personnalisés : le LLM apprend votre "voix"
- Latence réduite : pas de recherche préalable
- Apprentissage de patterns complexes : raisonnement spécifique au domaine
- Meilleure compréhension du jargon : termes techniques
- Moins de dépendance à la qualité de la KB
❌ Inconvénients
- Coût d'entraînement élevé (centaines à milliers d'euros)
- Données non à jour : besoin de re-entraînement périodique
- Risque de surapprentissage (overfitting)
- Nécessite un dataset de qualité (souvent 500+ exemples)
- Temps de développement : semaines
- Pas de sources traçables
05
💰 Comparaison des coûts (exemple GPT-3.5)
| Élément | RAG | Fine-tuning |
| Préparation des données | Heures (nettoyage documents) | Jours (création dataset Q/R) |
| Entraînement | 0 € | ~200-500 € (500 exemples) |
| Stockage KB | ~10-50 €/mois (vector DB) | 0 € |
| Inférence (1M tokens) | ~1-2 € (recherche incluse) | ~1-2 € |
| Mise à jour mensuelle | 0 € (modifier KB) | 200-500 € (re-entraînement) |
💡 Estimation : Pour une entreprise avec des données évolutives, le RAG est 5 à 10 fois moins cher sur 12 mois qu'un fine-tuning mensuel.
07
🔄 Approche hybride : RAG + Fine-tuning
La meilleure approche combine RAG et Fine-tuning :
📊 Architecture Hybride :
[Question] → [RAG sur KB] → [Contexte] → [LLM fine-tuné] → [Réponse avec style + faits]
# Hybride : RAG avec LLM fine-tuné
# 1. Fine-tune GPT sur votre style/brand voice
# 2. Utilisez ce modèle dans une chaîne RAG
from langchain.chains import RetrievalQA
# LLM fine-tuné pour le style
custom_llm = OpenAI(
model="ft:gpt-3.5-turbo:my-company:style:xxx"
)
# RAG avec ce modèle
qa_chain = RetrievalQA.from_chain_type(
llm=custom_llm,
retriever=vectorstore.as_retriever()
)
# Résultat : réponse avec le bon style ET des faits à jour
response = qa_chain.run("Quelle est notre politique de télétravail ?")
💡 Meilleure pratique :
- Fine-tune le LLM sur votre style, votre jargon, votre format de réponse
- Ajoutez RAG pour les faits spécifiques et les données évolutives
- Résultat : réponses personnalisées, précises et à jour