Reponse Rapide
RAG (Retrieval-Augmented Generation) permet de combiner un LLM avec vos propres donnees. LangChain simplifie l'implementation avec ses abstractions pour le chargement de documents, les embeddings et les vector stores.
Introduction
Les LLMs comme GPT-4 ou Claude sont puissants, mais ils ne connaissent pas vos documents internes. Le RAG resout ce probleme en recuperant les informations pertinentes avant de generer une reponse.
Architecture RAG
Documents → Chunking → Embeddings → Vector Store
↓
Question → Embedding → Recherche Similarite
↓
Contexte + Question → LLM → Reponse
Installation
pip install langchain langchain-openai chromadb
Etape 1 : Charger les Documents
from langchain_community.document_loaders import PyPDFLoader
loader = PyPDFLoader("document.pdf")
documents = loader.load()
LangChain supporte de nombreux formats : PDF, Word, HTML, Markdown, etc.
Etape 2 : Decouper en Chunks
from langchain.text_splitter import RecursiveCharacterTextSplitter
text_splitter = RecursiveCharacterTextSplitter(
chunk_size=1000,
chunk_overlap=200
)
chunks = text_splitter.split_documents(documents)
Etape 3 : Creer les Embeddings
from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import Chroma
embeddings = OpenAIEmbeddings()
vectorstore = Chroma.from_documents(chunks, embeddings)
Etape 4 : Creer la Chaine RAG
from langchain_openai import ChatOpenAI
from langchain.chains import RetrievalQA
llm = ChatOpenAI(model="gpt-4")
qa_chain = RetrievalQA.from_chain_type(
llm=llm,
retriever=vectorstore.as_retriever(),
return_source_documents=True
)
Etape 5 : Interroger
result = qa_chain.invoke({"query": "Quelle est la politique de securite ?"})
print(result["result"])
Bonnes Pratiques
Taille des chunks
- Trop petit : perte de contexte
- Trop grand : bruit dans les resultats
- Optimal : 500-1500 caracteres selon le cas
Overlap
Un overlap de 10-20% aide a preserver le contexte entre les chunks.
Nombre de documents recuperes
Commencez avec k=4 et ajustez selon la qualite des reponses.
Conclusion
LangChain rend le RAG accessible avec quelques lignes de code. Cette technique est essentielle pour creer des applications IA qui exploitent vos donnees proprietaires.