Objectif : Donner à l'agent accès à une base de connaissances métier.
Théorie (15 min) :
- RAG = Avant de répondre, chercher dans une base de documents les passages pertinents → Les injecter dans le prompt
- Cas d'usage : Agent qui répond aux questions sur les produits/services d'un client
- Stack : ChromaDB (local, gratuit) ou Pinecone (cloud) pour stocker les embeddings
Pratique (45 min) :
from langchain_chroma import Chroma
from langchain_anthropic import AnthropicEmbeddings
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.document_loaders import TextLoader
# Charger et indexer les documents
loader = TextLoader("base_connaissance_client.txt")
docs = loader.load()
splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
chunks = splitter.split_documents(docs)
vectordb = Chroma.from_documents(
documents=chunks,
embedding=AnthropicEmbeddings(),
persist_directory="./chroma_db"
)
# Créer un retriever
retriever = vectordb.as_retriever(search_kwargs={"k": 3})
- Indexer un document de 5 pages (process métier fictif)
- Tester des questions : L'agent doit chercher dans la base avant de répondre
- Mesurer la qualité des réponses avec vs sans RAG
- Cas client : Charger le manuel d'utilisation du logiciel client → Agent de support
Checkpoint : Tu implémente du RAG pour enrichir un agent avec des connaissances métier.