Les Concepts Fondamentaux du RAG
Pour bien comprendre la technique Naive RAG, il est essentiel de maîtriser les concepts fondamentaux qui la sous-tendent. Cette section présente une vue d'ensemble des composants clés et de leur interaction dans un système RAG.
Carte Mentale des Concepts RAG
Voici une représentation visuelle des principaux concepts liés au RAG :
Les Composants Essentiels
Un système RAG repose sur trois composants fondamentaux :
1. Grands Modèles de Langage (LLM)
Les LLM constituent le cœur du système RAG, responsables de la génération de texte. Ils utilisent le contexte fourni par le système de récupération pour produire des réponses pertinentes et cohérentes. Dans une approche Naive RAG, on utilise généralement des modèles pré-entraînés sans fine-tuning spécifique.
Exemples de LLM couramment utilisés :
- GPT-3.5/GPT-4 (via l'API OpenAI)
- Llama 2/3
- Mistral
- Claude
2. Base de Données Vectorielle
La base de données vectorielle stocke les représentations vectorielles (embeddings) des documents ou segments de documents. Elle permet une recherche efficace par similarité vectorielle pour identifier les contenus les plus pertinents par rapport à une requête.
Options populaires pour les bases vectorielles :
- Chroma
- FAISS
- Pinecone
- Weaviate
- Milvus
3. Embeddings
Les embeddings sont des représentations vectorielles numériques de texte qui capturent le sens sémantique. Dans un système Naive RAG, on utilise des modèles d'embedding standards pour convertir à la fois les documents et les requêtes en vecteurs comparables.
Modèles d'embedding courants :
- OpenAI text-embedding-ada-002
- BERT et ses variantes
- Sentence Transformers
- E5
Le Processus Naive RAG
Le processus Naive RAG suit une séquence d'étapes bien définie :
1. Préparation des Documents
Cette étape consiste à collecter, nettoyer et préparer les documents qui serviront de source d'information. Dans l'approche naive, on se contente généralement d'extraire le texte brut sans traitement complexe des métadonnées.
2. Chunking
Le chunking divise les documents en segments plus petits (chunks) de taille relativement fixe. Dans l'approche naive, on utilise souvent un découpage simple basé sur un nombre de tokens ou de caractères, sans considération particulière pour la structure sémantique.
Stratégies de chunking basiques :
- Découpage par nombre fixe de tokens (ex: 512 tokens)
- Découpage par paragraphes
- Découpage par phrases
3. Création d'Embeddings
Chaque chunk est converti en un vecteur d'embedding à l'aide d'un modèle pré-entraîné. Ces vecteurs capturent le sens sémantique du texte dans un espace multidimensionnel.
4. Indexation
Les vecteurs d'embedding sont stockés dans une base de données vectorielle qui permet une recherche efficace par similarité.
5. Traitement des Requêtes
Lorsqu'une requête est reçue, elle est également convertie en embedding, puis comparée aux vecteurs stockés pour identifier les chunks les plus similaires.
6. Génération de Réponse
Les chunks récupérés sont fournis comme contexte au LLM, qui génère une réponse basée sur ce contexte et la requête originale.
Avantages et Limites de l'Approche Naive
Avantages
- Simplicité : Facile à comprendre et à implémenter
- Rapidité de déploiement : Peut être mis en place rapidement avec peu de ressources
- Efficacité : Fonctionne bien pour de nombreux cas d'usage simples
- Base d'apprentissage : Excellent point de départ pour comprendre les systèmes RAG plus complexes
Limites
- Chunking sous-optimal : Le découpage fixe peut séparer des informations connexes
- Absence de métadonnées : Ne tire pas parti des informations structurelles des documents
- Récupération simpliste : Utilise uniquement la similarité vectorielle sans filtrage ou re-ranking
- Sensibilité au bruit : Peut inclure des informations non pertinentes dans le contexte