RAG : La technique qui change tout
Le RAG (Retrieval-Augmented Generation) permet à une IA de consulter vos documents avant de répondre. C'est comme donner une bibliothèque personnalisée à ChatGPT.
Le problème sans RAG
- Les LLM ont une connaissance figée (date de coupure)
- Ils ne connaissent pas vos données privées
- Ils peuvent halluciner des informations
- Contexte limité (même avec 1M tokens)
Comment fonctionne le RAG ?
1. Indexation (une fois) ├─ Découper vos documents en chunks ├─ Créer des embeddings (vecteurs) └─ Stocker dans une base vectorielle 2. Requête (à chaque question) ├─ Convertir la question en embedding ├─ Chercher les chunks similaires ├─ Injecter les chunks dans le prompt └─ Générer la réponse
Stack technique populaire
Bases de données vectorielles
- Pinecone : Cloud, facile, performant
- Weaviate : Open-source, multimodal
- Qdrant : Rust, ultra-rapide
- Chroma : Python, simple
- pgvector : Extension PostgreSQL
Modèles d'embeddings
- OpenAI text-embedding-3-large : 3072 dimensions
- Cohere embed-v3 : Multilingue
- Voyage AI : Spécialisé code
- BGE-M3 : Open-source, gratuit
Exemple de code (Python + LangChain)
from langchain.document_loaders import PyPDFLoader from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain.embeddings import OpenAIEmbeddings from langchain.vectorstores import Chroma from langchain.chains import RetrievalQA from langchain.llms import OpenAI # 1. Charger les documents loader = PyPDFLoader("docs/manuel.pdf") documents = loader.load() # 2. Découper en chunks text_splitter = RecursiveCharacterTextSplitter( chunk_size=1000, chunk_overlap=200 ) chunks = text_splitter.split_documents(documents) # 3. Créer les embeddings et stocker embeddings = OpenAIEmbeddings() vectorstore = Chroma.from_documents( documents=chunks, embedding=embeddings ) # 4. Créer la chaîne RAG qa_chain = RetrievalQA.from_chain_type( llm=OpenAI(temperature=0), retriever=vectorstore.as_retriever( search_kwargs={"k": 3} # Top 3 chunks ) ) # 5. Poser une question response = qa_chain.run( "Comment installer le produit ?" ) print(response)
Techniques avancées
1. Hybrid Search
Combiner recherche vectorielle + recherche par mots-clés (BM25)
2. Reranking
Utiliser un modèle de reranking (Cohere, Jina) pour améliorer la pertinence
3. Chunking intelligent
- Respecter les paragraphes
- Garder le contexte (titres, métadonnées)
- Taille adaptative selon le type de contenu
4. Query expansion
Reformuler la question en plusieurs variantes avant la recherche
5. Metadata filtering
Filtrer par date, auteur, catégorie avant la recherche vectorielle
Cas d'usage
- Support client : Base de connaissances produit
- Juridique : Recherche dans contrats et lois
- Médical : Consultation de dossiers patients
- Recherche : Analyse de papers scientifiques
- Code : Documentation technique
Outils no-code/low-code
- ChatGPT + Files : Upload de documents
- Claude Projects : Base de connaissances intégrée
- Notion AI : RAG sur votre workspace
- Glean : RAG entreprise
- Hebbia : RAG pour analystes
Coûts estimés
| Composant | Coût |
|---|---|
| Embeddings (1M tokens) | $0.13 |
| Stockage vectoriel (1M vecteurs) | $10-50/mois |
| Génération (GPT-4) | $0.03/1K tokens |
Bonnes pratiques
- Testez différentes tailles de chunks (500-2000 tokens)
- Ajoutez des métadonnées riches
- Utilisez le reranking pour améliorer la précision
- Loggez les requêtes pour améliorer le système
- Mettez à jour régulièrement votre base