RAG en local avec Ollama : guide complet 2026
Le RAG (Retrieval Augmented Generation) est la technique qui permet a une IA de repondre a vos questions en se basant sur vos propres documents. Imaginez : vous chargez vos PDF, vos notes, votre documentation interne, et l'IA peut "discuter" avec ces documents. Le tout en local, sans envoyer une seule donnee au cloud. Voici comment construire votre systeme RAG avec Ollama en 2026.
💡 Qu'est-ce que le RAG ?
Retrieval Augmented Generation. C'est une technique en deux etapes :
- 1. Retrieval (Recuperation) : On cherche dans vos documents les passages les plus pertinents par rapport a votre question.
- 2. Generation : On envoie ces passages + votre question au LLM, qui genere une reponse basee sur vos documents.
Resultat : l'IA repond en se basant sur vos donnees reelles, pas sur ses connaissances generales. Moins d'hallucinations, des reponses precises et sourcees.
Pourquoi un RAG en local ?
Confidentialite totale
Vos documents ne quittent jamais votre machine. Ideal pour les donnees sensibles (juridique, medical, financier).
Zero cout d'API
Pas de facture OpenAI ou Anthropic. Une fois installe, le systeme fonctionne gratuitement, sans limite de requetes.
Fonctionne hors-ligne
Pas besoin d'internet. Votre assistant IA fonctionne meme en avion ou dans un environnement deconnecte.
La stack technique
Voici les composants de notre systeme RAG local :
| Composant | Outil | Role |
|---|---|---|
| LLM (generation) | Ollama + Llama 3.1 8B | Genere les reponses a partir du contexte |
| Embeddings | Ollama + nomic-embed-text | Transforme le texte en vecteurs numeriques |
| Base vectorielle | ChromaDB | Stocke et recherche les vecteurs |
| Orchestration | LangChain | Connecte tous les composants ensemble |
| Chargement docs | PyPDFLoader / Unstructured | Extrait le texte des PDF et autres formats |
Etape 1 : Installer les prerequis
Assurez-vous d'avoir Ollama installe sur votre machine. Puis telechargez les modeles necessaires :
# Telecharger le modele de generation
ollama pull llama3.1
# Telecharger le modele d'embedding
ollama pull nomic-embed-text
# Installer les dependances Python
pip install langchain langchain-community chromadb pypdf ollama
Etape 2 : Charger et decouper vos documents
Le RAG fonctionne en decoupant vos documents en "chunks" (morceaux) de taille geree. Chaque chunk sera transforme en vecteur et stocke dans ChromaDB. Quand vous posez une question, le systeme cherche les chunks les plus proches de votre question.
Exemple de code Python pour charger des PDF :
from langchain_community.document_loaders import PyPDFLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
# Charger le PDF
loader = PyPDFLoader("mon_document.pdf")
pages = loader.load()
# Decouper en chunks de 500 caracteres
splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
chunks = splitter.split_documents(pages)
Etape 3 : Creer la base vectorielle
Les embeddings transforment chaque chunk de texte en un vecteur numerique. Deux textes au sens similaire auront des vecteurs proches. ChromaDB stocke ces vecteurs et permet de chercher les plus proches d'une question donnee.
from langchain_community.embeddings import OllamaEmbeddings
from langchain_community.vectorstores import Chroma
# Creer les embeddings avec Ollama (local)
embeddings = OllamaEmbeddings(model="nomic-embed-text")
# Stocker dans ChromaDB
vectorstore = Chroma.from_documents(chunks, embeddings, persist_directory="./db")
Etape 4 : Construire le pipeline de requete
Maintenant, on assemble tout. Quand vous posez une question, le systeme : (1) cherche les chunks les plus pertinents dans ChromaDB, (2) les envoie comme contexte au LLM Ollama, (3) le LLM genere une reponse basee sur ces chunks.
from langchain_community.llms import Ollama
from langchain.chains import RetrievalQA
# Initialiser le LLM local
llm = Ollama(model="llama3.1")
# Creer la chaine RAG
retriever = vectorstore.as_retriever(search_kwargs={"k": 4})
qa_chain = RetrievalQA.from_chain_type(llm=llm, retriever=retriever)
# Poser une question
result = qa_chain.invoke("Quelles sont les clauses de resiliation ?")
Materiel requis
| Configuration | RAM/VRAM | Modele LLM | Nb de documents | Qualite reponses |
|---|---|---|---|---|
| PC + RTX 3060 | 12 Go VRAM | Llama 3.1 8B | Centaines de PDF | Bonne |
| Mac Mini M4 Pro 24 Go | 24 Go unifiee | Mistral 7B / Qwen 14B | Milliers de PDF | Tres bonne |
| PC + RTX 4090 | 24 Go VRAM | Qwen 32B / Mixtral | Milliers de PDF | Excellente |
🏆 Cas d'usage concret : chater avec ses PDF
Imaginons que vous etes avocat. Vous avez 50 contrats de bail commercial dans un dossier. Avec ce systeme RAG :
- Question : "Quels contrats contiennent une clause de resiliation anticipee ?" - Le systeme cherche dans les 50 PDF et vous donne les reponses avec les references.
- Question : "Quel est le loyer moyen dans ces baux ?" - Le systeme extrait les montants et calcule la moyenne.
- Question : "Y a-t-il des clauses non conformes a la loi Pinel ?" - Le systeme identifie les clauses potentiellement problematiques.
Tout cela en local, sans qu'aucun document ne quitte votre machine.