Partie 2 sur 5 : Génération Augmentée par Récupération
Bienvenue ! Aujourd'hui, nous explorons les systèmes RAG — l'une des façons les plus pratiques de rendre l'IA utile pour les besoins spécifiques de votre entreprise.
Qu'est-ce exactement que RAG ?
Laissez-moi expliquer RAG avec une analogie simple. Imaginez que vous passez un examen avec documents autorisés. Au lieu de vous fier uniquement à ce que vous avez mémorisé, vous pouvez consulter vos manuels pour donner des réponses meilleures et plus précises. C'est essentiellement ce que RAG fait pour les modèles IA.
RAG = Modèle IA + Votre Base de Connaissances Personnalisée
Le modèle IA fournit l'« intelligence » pour comprendre les questions et générer des réponses humaines, tandis que votre base de connaissances fournit les informations spécifiques et à jour sur votre entreprise.
Pourquoi Devriez-Vous Vous Intéresser à RAG ?
Voilà le truc avec les grands modèles de langage comme ChatGPT — ils sont incroyablement intelligents, mais ils ne savent rien sur votre entreprise spécifique. Ils ne peuvent pas parler aux clients de vos dernières fonctionnalités produit, de vos politiques d'entreprise, ou répondre aux questions en utilisant votre documentation interne.
RAG résout ce problème en :
- Rendant les réponses IA plus précises et pertinentes pour votre entreprise
- Maintenant les informations à jour (mettez simplement à jour vos documents, pas besoin de réentraînement)
- Offrant de la transparence (vous pouvez voir quels documents l'IA a utilisés pour répondre)
- Étant rentable (beaucoup moins cher que l'ajustement fin de grands modèles)
Construisons-en Un Ensemble
Je vais vous montrer comment construire un système RAG en utilisant l'IA Gemini de Google. Nous créerons un système qui peut répondre aux questions sur « MyNextDeveloper ». Voici le processus étape par étape :
Étape 1 : Installer les Outils Requis
!pip install -q -U google-generativeai langchain-google-genai langchain faiss-cpu pypdf langchain-community
Ces bibliothèques feront le gros du travail pour nous :
- google-generativeai : Accès aux modèles Gemini de Google
- langchain-google-genai : Intégration Gemini avec LangChain
- LangChain : Cadre pour construire des applications IA
- FAISS : Recherche de similarité rapide (trouver les documents pertinents)
Étape 2 : Configurer l'API Google AI
import os from google.colab import userdata import google.generativeai as genaiGOOGLE_API_KEY = userdata.get('GOOGLE_API_KEY') genai.configure(api_key=GOOGLE_API_KEY)
Vous devrez obtenir une clé API gratuite dans Google AI Studio et l'ajouter à votre environnement.
Étape 3 : Préparer Votre Base de Connaissances
raw_text = """ MyNextDeveloper (MND) is a remote-first tech company founded in 2022 in Mumbai. They focus on supplying pre-vetted, highly skilled developers to startups. Their mission is to solve the trust gap between startups and engineers by emphasizing empathy, communication, and transparency.The company promotes agile practices, test-driven development, and POSH-compliant culture. MND offers services like staff augmentation, API and web development, UI/UX design, and AI/ML solutions. Their tech stack includes Angular, React, Next.js, Node.js, Django, Python, Docker, and AWS. Clients appreciate their transparency and delivery quality. Project pricing starts at $10,000 with hourly rates between $25 and $49. MND claims startups can save up to 30% through their freelance model. They operate globally, serving startups, Y Combinator and Techstars alumni. It is headquartered in Malabar Hill, Mumbai. """# Convertir en Document LangChain from langchain_core.documents import Document documents = [Document(page_content=raw_text)] print(f"Loaded {len(documents)} document(s).")
Dans une application réelle, ce serait votre documentation produit, FAQ, politiques d'entreprise, ou toute information textuelle sur votre entreprise.
Étape 4 : Diviser les Informations en Segments
from langchain.text_splitter import RecursiveCharacterTextSplitter
text_splitter = RecursiveCharacterTextSplitter( chunk_size=300, chunk_overlap=50, length_function=len, add_start_index=True, )
chunks = text_splitter.split_documents(documents)
print(f"Split into {len(chunks)} chunks.")
Pourquoi divisons-nous le texte ? Les modèles IA fonctionnent mieux avec des informations plus petites et ciblées. Le chunk_overlap=50 garantit que nous ne perdons pas le contexte aux limites des segments, tandis que add_start_index=True nous aide à suivre d'où provient l'information.
Étape 5 : Créer des Embeddings et un Magasin Vectoriel
from langchain_google_genai import GoogleGenerativeAIEmbeddings from langchain_community.vectorstores import FAISS
embeddings = GoogleGenerativeAIEmbeddings( model="models/embedding-001", google_api_key=GOOGLE_API_KEY )
print("Creating FAISS vector store...")
vector_store = FAISS.from_documents(chunks, embeddings)
print("FAISS vector store created.")
L'étape la plus importante. Chaque segment de texte est converti en un « vecteur » (représentation numérique). Quand quelqu'un pose une question, nous trouvons les segments dont les vecteurs sont les plus similaires au vecteur de la question.
Étape 6 : Configurer le Système de Questions-Réponses
from langchain_google_genai import ChatGoogleGenerativeAI from langchain.chains import RetrievalQA from langchain_core.prompts import PromptTemplate
retriever = vector_store.as_retriever(search_kwargs={"k": 3})
llm = ChatGoogleGenerativeAI( model="gemini-1.5-flash", temperature=0.3, google_api_key=GOOGLE_API_KEY )
prompt_template = """ You are an AI assistant that answers questions based on the provided context. If the answer is not available in the context, politely state that you don't know.
Context:
{context}
Question:
{question}
Answer: """ RAG_PROMPT = PromptTemplate.from_template(prompt_template)
qa_chain = RetrievalQA.from_chain_type(
llm=llm,
chain_type="stuff",
retriever=retriever,
return_source_documents=True,
chain_type_kwargs={"prompt": RAG_PROMPT}
)
Le temperature=0.3 maintient les réponses ciblées et factuelles, tandis que search_kwargs={"k": 3} signifie que nous récupérerons les 3 segments les plus pertinents pour chaque question.
Étape 7 : Testez-le
questions = [ "What does MyNextDeveloper (MND) do?", "Where is MND headquartered?", "What services does MND offer?", "What technologies does MND use?", "How does MND help startups save money?", "What is the capital of France?" # This should trigger "I don't know" ]
for i, question in enumerate(questions):
print(f"nQuestion {i+1}: {question}")
response = qa_chain.invoke({"query": question})
print(f"Answer: {response['result']}")
if 'source_documents' in response:
print("Source Documents:")
for doc in response['source_documents']:
print(f"- Content (truncated): {doc.page_content[:150]}...")
Exemple de Résultat :
Question 1: What does MyNextDeveloper (MND) do? Answer: MyNextDeveloper (MND) is a remote-first tech company that supplies pre-vetted, highly skilled developers to startups. They offer services such as staff augmentation, API and web development, UI/UX design, and AI/ML solutions. Their goal is to bridge the trust gap between startups and engineers through empathy, communication, and transparency.
Question 6: What is the capital of France? Answer: I'm sorry, but I don't know the capital of France. The provided text is about a company called MND and doesn't contain information about France's capital.
Remarquez comment le système répond correctement aux questions sur MND mais refuse poliment de répondre aux questions en dehors de sa base de connaissances.
Google Colab
Voici le lien google colab de cet article qui peut être exécuté en un clic : lien
Applications dans le Monde Réel
Voici quelques façons pratiques d'utiliser les systèmes RAG :
Support Client : Téléchargez votre FAQ, vos manuels produits et vos tickets de support. Laissez l'IA gérer les questions courantes 24h/24.
Base de Connaissances Interne : Téléchargez les politiques de l'entreprise, les procédures et la documentation. Les employés peuvent poser des questions en langage naturel au lieu de fouiller dans des fichiers.
Assistant Commercial : Téléchargez les spécifications produit, la tarification et les études de cas. Votre équipe commerciale accède instantanément à toute information dont elle a besoin lors des appels.
Création de Contenu : Téléchargez votre contenu existant, vos articles de blog et vos matériels marketing. Générez un nouveau contenu cohérent avec la voix de votre marque.
Les Limitations (Soyons Honnêtes)
RAG n'est pas parfait :
- La qualité dépend de vos données : Ordures en entrée, ordures en sortie
- Peut halluciner : Parfois, l'IA pourrait inventer des informations qui semblent plausibles
- Nécessite une maintenance : Vous devez maintenir votre base de connaissances à jour
- Considérations de coûts : Les appels API peuvent s'accumuler avec une utilisation intensive
Points d'Implémentation Clés
À partir de notre exemple fonctionnel, voici quelques considérations techniques importantes :
La Taille des Segments Importe : Nous avons utilisé 300 caractères avec 50 caractères de chevauchement. Cela équilibre la préservation du contexte avec la précision de la récupération.
Qualité des Embeddings : Le modèle embedding-001 de Google fournit de bons embeddings à usage général, mais vous pourriez avoir besoin d'embeddings spécifiques au domaine pour le contenu spécialisé.
Stratégie de Récupération : Le paramètre k=3 signifie que nous récupérons les 3 segments les plus pertinents. Vous pouvez l'ajuster en fonction de votre cas d'usage.
Ingénierie des Invite : Notre invite indique explicitement à l'IA de dire « Je ne sais pas » quand l'information n'est pas disponible. Cela prévient l'hallucination.
Conseils pour Réussir
- Commencez petit : Commencez par un cas d'usage spécifique plutôt que d'essayer de tout couvrir
- Gardez les documents à jour : Les informations obsolètes frustrulent les utilisateurs
- Testez en détail : Essayez de nombreuses questions différentes pour comprendre où votre système fonctionne bien et où il ne fonctionne pas
- Surveillance de l'utilisation : Gardez un œil sur les questions que les gens posent pour améliorer votre base de connaissances
- Itérez sur la taille des segments : Expérimentez avec différentes tailles de segments et valeurs de chevauchement pour votre contenu spécifique
Suivant
Dans notre prochain article, nous explorerons l'ajustement fin — prendre un modèle IA existant et l'entraîner spécifiquement pour votre cas d'usage. Tandis que RAG donne à l'IA accès à vos informations, l'ajustement fin change réellement comment l'IA « pense » à votre domaine.
RAG est souvent le meilleur point de départ car il est plus simple, plus transparent et plus facile à maintenir. Mais parfois, vous avez besoin de ce niveau supplémentaire de personnalisation que seul l'ajustement fin peut fournir.
À venir : Article 3 — « Ajustement Fin des LLM : Enseigner à l'IA à Parler Votre Langue »


