Notes pratiques : LlamaIndex RAG : Un guide pratique pour créer des IA plus intelligentes
Guide opérationnel des notes pratiques : LlamaIndex RAG – Un guide pratique pour créer des IA plus intelligentes : contrats, vérifications et emplacements de code prêts à l’emploi pour les équipes qui mettent en œuvre ce modèle.
Utilisez ceci comme une version révisée destinée aux opérateurs des idées présentées dans « LlamaIndex RAG : Un guide pratique pour créer des applications d’IA plus intelligentes » : étapes claires, emplacements de code ordonnés et notes de récupération qui survivent au transfert. L’étape « Aperçu » fonctionne le mieux lorsqu’elle est considérée comme une surface mesurable. Capturez un enregistrement exemplaire, un cas d’échec et la note de réversion avant d’élargir le périmètre. Enregistrez les temps d’exécution ainsi que le coût en tokens ou en requêtes à côté des résultats fonctionnels. Une visibilité précoce des coûts évite les factures inattendues lorsque le processus passe de la démonstration aux environnements partagés.
Qu’est-ce que RAG exactement ?
Pour l’étape « What Exactly Is RAG », définissez les entrées, le responsable de l’étape et les critères d’arrêt avant de modifier le code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Conservez la configuration en dehors du code de l’application. Les fichiers d’environnement, les bases de données secrètes et les flags fonctionnels doivent être regroupés en un seul endroit que les opérateurs peuvent auditer sans devoir lire l’ensemble du système. Citez les passages qui ont réellement servi de base à la réponse. Sans citations, les opérateurs ne peuvent pas distinguer une hallucination d’un manque d’indexation.
User
↓
Question
↓
LLM
↓
Answer
User Question
↓
Retrieval
↓
Relevant Documents
↓
LLM Prompt
↓
LLM
↓
Answer
Où s’insère LlamaIndex
Pour l’étape « Où LlamaIndex s’insère », définissez les entrées, le responsable de l’étape et les critères de fin avant de modifier le code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Documentez ensemble le parcours normal et le parcours de récupération. Les tentatives répétées, les contrôles humains et la gestion des messages non traités font partie du produit, et non d’une amélioration ultérieure. Citez les passages qui ont réellement servi de base à la réponse. Sans citations, les opérateurs ne peuvent pas distinguer une hallucination d’un manque d’indexation.
Your Data
│
┌────────────┼────────────┐
↓ ↓ ↓
PDFs Websites Databases
│ │ │
└────────────┼────────────┘
↓
LlamaIndex
↓
Data Ingestion
↓
Chunks
↓
Embeddings
↓
Vector Store
↓
Retriever
↓
Reranker
↓
LLM
↓
Answer
Le pipeline RAG de LlamaIndex
Pour l’étape du pipeline The LlamaIndex RAG, définissez les entrées, le responsable de l’étape et les critères d’arrêt avant de modifier le code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Préférez des unités petites et testables aux scripts complexes. Lorsqu’une étape échoue, l’échec doit indiquer une seule responsabilité plutôt qu’un pipeline embrouillé. Citez les passages qui ont réellement servi de base à la réponse. Sans citations, les opérateurs ne peuvent pas distinguer une hallucination d’un manque d’indexation. Pour l’étape du pipeline The LlamaIndex RAG, définissez les entrées, le responsable de l’étape et les critères d’arrêt avant de modifier le code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Enregistrez les temps d’exécution ainsi que le coût en tokens ou en requêtes à côté des résultats fonctionnels. Une visibilité précoce du coût évite les factures inattendues lorsque le processus passe de la démonstration à l’utilisation partagée.
environnements.Documents
↓
Loading
↓
Parsing
↓
Chunking
↓
Indexing
↓
Retrieval
↓
Context Selection
↓
Generation
1. Charger vos données
Lors de l’étape 1 « Charger vos données », notez d’abord les exigences : entrées requises, signal de succès et conséquences en cas d’échec partiel. Cette liste de contrôle permet de rester honnête lors des modifications ultérieures du code. Conservez la configuration en dehors du code de l’application. Les fichiers d’environnement, les bases de données secrètes et les indicateurs fonctionnels doivent être regroupés en un seul endroit que les administrateurs peuvent auditer sans devoir lire l’ensemble du système. Évaluez le taux de rappel sur un ensemble fixe de questions avant d’ajuster les prompts. Un changement fréquent des prompts résout rarement un système de récupération insuffisant.
PDFs
Markdown
Web pages
Notion
Google Drive
SQL databases
APIs
CSV files
documents = load_documents("data/")
Offline / ingestion time
↓
Prepare the knowledge
Online / query time
↓
Retrieve the knowledge
2. Diviser les documents en blocs
Lors de l’étape « Diviser les documents en 2 », notez d’abord le contrat : les entrées requises, le signal de succès et ce qui se passe en cas d’échec partiel. Cette liste de contrôle permet de rester honnête lors des modifications ultérieures du code. Documentez ensemble le parcours normal et le parcours de récupération. Les tentatives répétées, les contrôles humains et la gestion des messages non traités font partie intégrante du produit, et non d’améliorations apportées ultérieurement. Mesurez le taux de rappel sur un ensemble fixe de questions avant d’ajuster les prompts. Un changement fréquent des prompts ne résout que rarement un système de récupération insuffisant.
Document
↓
Chapter
↓
Section
↓
Paragraph
↓
Chunk
chunks = split_document(
document,
chunk_size=512,
)
Huge chunk
↓
Lots of irrelevant information
↓
Large prompt
↓
Higher latency
Tiny chunk
↓
Missing context
↓
Poor retrieval
3. Créer des embeddings
Lors de la réalisation des 3 étapes de création d’embeddings, notez d’abord le contrat : les entrées requises, le signal de succès et ce qui se passe en cas d’échec partiel. Cette liste de contrôle permet de rester honnête lors des modifications ultérieures du code. Préférez des unités petites et testables plutôt que des scripts complexes. Lorsqu’une étape échoue, l’échec doit indiquer une seule responsabilité et non un processus embrouillé. Mesurez le taux de rappel sur un ensemble de questions fixe avant d’ajuster les prompts. Changer fréquemment les prompts ne résout que rarement un système de récupération insuffisant. Lors de la réalisation des 3 étapes de création d’embeddings, notez d’abord le contrat : les entrées requises, le signal de succès et ce qui se passe en cas d’échec partiel. Cette liste de contrôle permet de rester honnête lors des modifications ultérieures du code. Enregistrez les temps d’exécution ainsi que le coût en tokens ou requêtes à côté des résultats fonctionnels. Une visibilité précoce des coûts évite les factures inattendues lorsque le système passe de l’environnement de démonstration à des environnements partagés.
"How can I reset my password?"
"What should I do if I forgot my login credentials?"
Text
↓
Embedding Model
↓
[0.12, -0.42, 0.81, ...]
4. Stocker les vecteurs
La phase de stockage des vecteurs fonctionne le mieux lorsqu’elle est considérée comme une surface mesurable. Capturez un transcript exemplaire, un cas d’échec et la note de réversion avant d’élargir le périmètre. Conservez la configuration en dehors du code de l’application. Les fichiers d’environnement, les bases de données secrètes et les indicateurs fonctionnels doivent être regroupés en un seul endroit que les opérateurs peuvent auditer sans devoir lire l’ensemble du système. Séparez la politique de segmentation de la politique de récupération. Modifier l’une ne doit pas obliger à réécrire l’autre lorsque les métriques de qualité évoluent.
Document
↓
Chunk
↓
Embedding
↓
Vector Store
Vector Store
ID Vector Metadata
--------------------------------
001 [....] product=api
002 [....] product=web
003 [....] product=mobile
document_id
page_number
department
product
version
created_at
tenant_id
access_level
5. Récupérer les informations pertinentes
La phase 5 « Récupérer des informations pertinentes » fonctionne le mieux lorsqu’elle est considérée comme une surface mesurable. Capturez un transcript exemplaire, un cas d’échec et la note de réversion avant d’élargir le périmètre. Documentez en même temps le parcours optimal et le parcours de récupération. Les tentatives répétées, les contrôles humains et le traitement des messages non livrés font partie intégrante du produit, et non d’une mise en forme ultérieure. Séparez la politique de segmentation des données de la politique de récupération ; modifier l’une ne doit pas obliger à réécrire l’autre lorsque les métriques de qualité évoluent.
Question
↓
Query Embedding
↓
Vector Search
Top 5 Results
1. API Authentication Guide
2. OAuth Configuration
3. API Token Documentation
4. Authentication Troubleshooting
5. Security Configuration
6. Transformer les documents récupérés en contexte
La phase des documents récupérés en 6 étapes fonctionne le mieux lorsqu’elle est considérée comme une surface mesurable. Capturez un transcript idéal, un cas d’échec et la note de réversion avant d’élargir le périmètre. Préférez des unités petites et testables aux scripts complexes. Lorsqu’une étape échoue, l’échec doit pointer vers une seule responsabilité plutôt que vers un processus embrouillé. Séparez la politique de segmentation de la politique de récupération. Modifier l’une ne doit pas obliger à réécrire l’autre lorsque les indicateurs de qualité évoluent. La phase des documents récupérés en 6 étapes fonctionne le mieux lorsqu’elle est considérée comme une surface mesurable. Capturez un transcript idéal, un cas d’échec et la note de réversion avant d’élargir le périmètre. Enregistrez les temps d’exécution ainsi que le coût des tokens ou des requêtes à côté des résultats fonctionnels. Une visibilité précoce des coûts évite des factures inattendues lorsque le processus passe de l’environnement de démonstration aux environnements partagés.
User Question
+
Retrieved Context
↓
Prompt
↓
LLM
System:
Answer using the supplied context.
Context:
[Relevant document 1]
[Relevant document 2]
[Relevant document 3]
Question:
How do I configure API authentication?
7. Générer la réponse
Pour l’étape 7 « Générer la réponse », définissez les entrées, le responsable de l’étape et les critères d’arrêt avant de modifier le code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Conservez la configuration en dehors du code de l’application. Les fichiers d’environnement, les bases de données secrètes et les indicateurs fonctionnels doivent être regroupés en un seul endroit que les opérateurs peuvent auditer sans devoir lire l’ensemble du système. Citez les passages qui ont réellement servi de base à la réponse. Sans citations, les opérateurs ne peuvent pas distinguer une hallucination d’un manque d’indexation.
Question
+
Relevant Context
User
↓
Query
↓
Query Embedding
↓
Vector Retrieval
↓
Relevant Chunks
↓
Context Assembly
↓
LLM
↓
Answer
LlamaIndex, c’est plus que « Recherche vectorielle + LLM »
Pour la phase LlamaIndex Is More Than, définissez les entrées, le responsable de l’étape et les critères d’arrêt avant de modifier le code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Documentez conjointement le parcours normal et les scénarios de récupération. Les tentatives répétées, les contrôles humains et la gestion des messages non traités font partie intégrante du produit, et non d’améliorations ultérieures. Préférez des sorties structurées avec validation de schéma plutôt que du texte libre lorsque l’étape suivante consiste en du code ou une appel à outil.
Query
↓
Vector Search
↓
Top 5 Documents
↓
LLM
Query
↓
Query Processing
↓
┌─────────┴─────────┐
↓ ↓
Dense Search Keyword Search
↓ ↓
└─────────┬─────────┘
↓
Fusion
↓
Rerank
↓
Context Selection
↓
LLM
Moteurs de requête : transformer la récupération en système de réponse à des questions
Pour l’étape des moteurs de requête chargés du récupération, définissez les entrées, le responsable de l’étape et les critères d’arrêt avant de modifier le code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Préférez des unités petites et testables aux scripts complexes. Lorsqu’une étape échoue, l’échec doit indiquer une seule responsabilité plutôt qu’un processus embrouillé. Citez les passages qui ont réellement servi de base à la réponse. Sans citations, les opérateurs ne peuvent pas distinguer une hallucination d’un manque d’indexation. Pour l’étape des moteurs de requête chargés du récupération, définissez les entrées, le responsable de l’étape et les critères d’arrêt avant de modifier le code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Enregistrez les temps d’exécution ainsi que le coût en tokens ou requêtes à côté des résultats fonctionnels. Une visibilité précoce du coût évite les factures inattendues lorsque le processus passe de la version démo à celle en production.
environnements partagés.query_embedding = embed(query)
documents = search(query_embedding)
context = build_context(documents)
answer = llm.generate(
query=query,
context=context,
)
query_engine = index.as_query_engine()
response = query_engine.query(
"How does authentication work?"
)
C’est à l’étape de récupération que de nombreux systèmes RAG échouent
Lorsque vous travaillez sur l’étape de récupération, notez d’abord les exigences : entrées requises, signal de succès et conséquences en cas d’échec partiel. Cette liste de contrôle permet de maintenir l’honnêteté des modifications ultérieures du code. Conservez la configuration en dehors du code de l’application. Les fichiers d’environnement, les bases de données secrètes et les indicateurs fonctionnels doivent être regroupés en un seul endroit que les administrateurs peuvent auditer sans devoir lire l’ensemble du système. Mesurez le taux de rappel sur un ensemble fixe de questions avant d’ajuster les prompts. Changer fréquemment les prompts ne résout que rarement un problème de qualité de récupération insuffisante.
User Question
↓
Bad Retrieval
↓
Wrong Context
↓
LLM
↓
Bad Answer
Mieux améliorer la récupération avec des métadonnées
Lors de la phase d’amélioration de la récupération grâce aux métadonnées, notez d’abord les exigences : entrées requises, signal de succès et comportement en cas d’échec partiel. Cette liste de contrôle permet de rester honnête lors des modifications ultérieures du code. Documentez ensemble le parcours normal et les procédures de récupération. Les tentatives répétées, les contrôles humains et la gestion des messages non traités font partie intégrante du produit, et non d’améliorations ultérieures. Mesurez le taux de rappel sur un ensemble de questions fixe avant d’ajuster les prompts. Le simple remplacement des prompts ne résout que rarement un système de récupération insuffisant.
Product A
Product B
Product C
product = Product B
version = 3
document_type = documentation
Entire Knowledge Base
↓
Metadata Filter
↓
Relevant Subset
↓
Semantic Search
La recherche hybride peut être meilleure que la recherche vectorielle seule
Lors du travail sur l’étape « Hybrid Search Can Be », notez d’abord le contrat : les entrées requises, le signal de succès et ce qui se passe en cas d’échec partiel. Cette liste de contrôle permet de rester honnête lors des modifications ultérieures du code. Préférez des unités petites et testables plutôt que des scripts complexes. Lorsqu’une étape échoue, l’échec doit indiquer une seule responsabilité et non un processus embrouillé. Mesurez le taux de rappel sur un ensemble de questions fixe avant d’ajuster les prompts. Un changement fréquent des prompts ne résout que rarement un système de récupération insuffisant. Lors du travail sur l’étape « Hybrid Search Can Be », notez d’abord le contrat : les entrées requises, le signal de succès et ce qui se passe en cas d’échec partiel. Cette liste de contrôle permet de rester honnête lors des modifications ultérieures du code. Enregistrez les temps d’exécution ainsi que le coût en tokens ou requêtes à côté des résultats fonctionnels. Une visibilité précoce des coûts évite les factures inattendues lorsque le système passe de l’environnement de démonstration à des environnements partagés.
ERR_CONNECTION_RESET_502
Dense Retrieval
+
Sparse Retrieval
↓
Result Fusion
↓
Reranking
Réclassement : consacrer davantage de ressources de calcul uniquement aux meilleurs candidats
L’étape de réclassement « Consacrer davantage de ressources de calcul » fonctionne le mieux lorsqu’elle est considérée comme une surface mesurable. Capturez un transcript parfait, un cas d’échec et la note de réversion avant d’élargir le périmètre. Conservez la configuration en dehors du code de l’application. Les fichiers d’environnement, les bases de données secrètes et les indicateurs fonctionnels doivent être regroupés en un seul endroit que les opérateurs peuvent auditer sans devoir lire l’ensemble du système. Séparez la politique de segmentation des données de la politique de récupération. Modifier l’une ne doit pas obliger à réécrire l’autre lorsque les métriques de qualité évoluent.
Top 20 documents
Vector Search
↓
20 candidates
↓
Reranker
↓
Top 5
↓
LLM
Retriever
→ Find potentially relevant documents
Reranker
→ Determine which are actually relevant
LLM
→ Use those documents to answer
Le contexte est une ressource limitée
Le Context Is a Limited stage fonctionne le mieux lorsqu’il est considéré comme une surface mesurable. Capturez un transcript exemplaire, un cas d’échec et la note de réversion avant d’élargir le périmètre. Documentez en même temps le parcours optimal et le parcours de récupération. Les tentatives répétées, les contrôles humains et le traitement des messages non livrés font partie intégrante du produit, et non d’une mise en forme ultérieure. Séparez la politique de segmentation de la politique de récupération : modifier l’une ne doit pas obliger à réécrire l’autre lorsque les métriques de qualité évoluent.
20 chunks
×
500 tokens
=
10,000 tokens
Retrieve 20
↓
Rerank
↓
Keep 5
↓
Compress
↓
Send 2,500 tokens
LlamaIndex RAG pour PDFs
La phase LlamaIndex RAG pour les PDF fonctionne le mieux lorsqu’elle est considérée comme une surface mesurable. Capturez un transcript idéal, un cas d’échec et la note de réversion avant d’élargir le périmètre. Préférez des unités petites et testables plutôt que des scripts complexes. Lorsqu’une étape échoue, l’échec doit pointer vers une seule responsabilité et non vers un processus embrouillé. Séparez la politique de segmentation des données de la politique de récupération. Modifier l’une ne doit pas obliger à réécrire l’autre lorsque les métriques de qualité changent. La phase LlamaIndex RAG pour les PDF fonctionne le mieux lorsqu’elle est considérée comme une surface mesurable. Capturez un transcript idéal, un cas d’échec et la note de réversion avant d’élargir le périmètre. Enregistrez les temps d’exécution ainsi que le coût en tokens ou en requêtes à côté des résultats fonctionnels. Une visibilité précoce des coûts évite les factures inattendues lorsque le système passe d’un environnement de démonstration à des environnements partagés.
PDF Files
↓
Document Loading
↓
Text Extraction
↓
Chunking
↓
Embeddings
↓
Vector Store
↓
Retriever
↓
LLM
Company Handbook
↓
Employee Documentation
↓
HR Policies
↓
Benefits
↓
Leave Policies
LlamaIndex RAG pour les applications d’IA
Pour la phase LlamaIndex RAG pour l’IA, définissez les entrées, le responsable de l’étape et les critères d’arrêt avant de modifier le code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Conservez la configuration en dehors du code de l’application. Les fichiers d’environnement, les stocks de secrets et les flags fonctionnels doivent être regroupés en un seul endroit que les opérateurs peuvent auditer sans devoir lire l’ensemble du système. Citez les passages qui ont réellement servi de base à la réponse. Sans citations, les opérateurs ne peuvent pas distinguer une hallucination d’un manque d’indexation.
User
↓
RAG
↓
Answer
User
↓
Agent
↓
┌─────────┼─────────┐
↓ ↓ ↓
RAG Database API
↓ ↓ ↓
└─────────┼─────────┘
↓
LLM
↓
Answer
La latence RAG est importante
Pour l’étape RAG Latency Matters, définissez les entrées, le responsable de l’étape et les critères de fin avant de modifier le code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Documentez ensemble le parcours normal et le parcours de récupération. Les tentatives répétées, les contrôles humains et la gestion des messages non traités font partie du produit, et non d’une amélioration ultérieure. Citez les passages qui ont réellement servi de base à la réponse. Sans citations, les opérateurs ne peuvent pas distinguer une hallucination d’un manque d’indexation.
Query
↓
Embedding API
↓
Vector Database
↓
Reranker
↓
LLM
Récupérer moins de documents
Pour l’étape « Récupérer moins de documents », définissez les entrées, le responsable de l’étape et les critères d’arrêt avant de modifier le code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Préférez des unités petites et testables aux scripts complexes. Lorsqu’une étape échoue, l’échec doit indiquer une seule responsabilité plutôt qu’un processus embrouillé. Citez les passages qui ont réellement servi de base à la réponse. Sans citations, les opérateurs ne peuvent pas distinguer une hallucination d’un manque d’indexation. Pour l’étape « Récupérer moins de documents », définissez les entrées, le responsable de l’étape et les critères d’arrêt avant de modifier le code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Enregistrez les temps d’exécution ainsi que le coût en tokens ou en requêtes à côté des résultats fonctionnels. Une visibilité précoce du coût évite les factures inattendues lorsque le processus passe de la démonstration à un environnement partagé.
Utiliser les filtres de métadonnées
Lors de l’étape d’utilisation des filtres de métadonnées, notez d’abord les exigences : entrées requises, signal de succès et conséquences en cas d’échec partiel. Cette liste de contrôle permet de rester honnête lors des modifications ultérieures du code. Conservez la configuration en dehors du code de l’application. Les fichiers d’environnement, les bases de données secrètes et les indicateurs fonctionnels doivent être regroupés en un seul endroit que les administrateurs peuvent auditer sans devoir lire l’ensemble du système. Mesurez le taux de rappel sur un ensemble fixe de questions avant d’ajuster les prompts. Un changement fréquent des prompts ne résout que rarement un système de récupération insuffisant.
Paralléliser les opérations de récupération indépendantes
Lorsque vous travaillez sur l’étape de récupération indépendante à paralléliser, notez d’abord les exigences : entrées requises, signal de succès et ce qui se passe en cas d’échec partiel. Cette liste de contrôle permet de rester honnête lors des modifications ultérieures du code. Documentez ensemble le parcours normal et les procédures de récupération. Les tentatives répétées, les contrôles humains et la gestion des messages non traités font partie intégrante du produit, et non d’améliorations apportées ultérieurement. Mesurez le taux de rappel sur un ensemble de questions fixe avant d’ajuster les prompts. Le changement fréquent des prompts ne résout que rarement un système de récupération insuffisant.
Dense ──────┐
├──→ Fusion
Sparse ─────┘
Dense
↓
Sparse
↓
Fusion
Réduire la taille des prompts
Lors de la phase de réduction de la taille du prompt, notez d’abord le contrat : les entrées requises, le signal de succès et ce qui se passe en cas d’échec partiel. Cette liste de contrôle permet de rester honnête lors des modifications ultérieures du code. Préférez des unités petites et testables plutôt que des scripts complexes. Lorsqu’une étape échoue, l’échec doit indiquer une seule responsabilité et non un processus embrouillé. Cachez les instructions du système stables ainsi que les schémas des outils. Envoyer à nouveau un préambule identique est une cause fréquente de gaspillage. Lors de la phase de réduction de la taille du prompt, notez d’abord le contrat : les entrées requises, le signal de succès et ce qui se passe en cas d’échec partiel. Cette liste de contrôle permet de rester honnête lors des modifications ultérieures du code. Enregistrez les temps d’exécution ainsi que le coût en tokens ou en requêtes à côté des résultats fonctionnels. Une visibilité précoce des coûts évite les factures inattendues lorsque le processus passe d’un environnement de démonstration à des environnements partagés.
Diffuser la réponse
La phase d’envoi de la réponse fonctionne le mieux lorsqu’elle est considérée comme une surface mesurable. Capturez un transcript parfait, un cas d’échec et la note de réversion avant d’élargir le périmètre. Conservez les configurations en dehors du code de l’application. Les fichiers d’environnement, les bases de données secrètes et les indicateurs fonctionnels doivent être regroupés en un seul endroit que les opérateurs peuvent auditer sans devoir lire l’ensemble du système. Séparez la politique de segmentation de la politique de récupération. Modifier l’une ne doit pas obliger à réécrire l’autre lorsque les métriques de qualité évoluent.
RAG ne concerne pas seulement la précision
Le RAG ne fonctionne le mieux que s’il est considéré comme une surface mesurable. Capturez un transcript parfait, un cas d’échec et la note de réversion avant d’élargir le périmètre. Documentez en même temps le parcours optimal et celui de récupération. Les tentatives répétées, les contrôles humains et la gestion des messages non traités font partie intégrante du produit, et non d’une mise en forme ultérieure. Séparez la politique de segmentation des données de la politique de récupération ; modifier l’une ne doit pas obliger à réécrire l’autre lorsque les métriques de qualité évoluent.
RAG Quality
│
┌────────────┼────────────┐
↓ ↓ ↓
Retrieval Generation System
Quality Quality Performance
│ │ │
Recall Faithfulness Latency
Precision Relevance Cost
Ranking Completeness Reliability
Erreurs courantes lors de la création de RAG avec LlamaIndex
Les erreurs fréquentes lors de la construction de stages fonctionnent le mieux lorsque l’on les considère comme une surface mesurable. Capturez un transcript exemplaire, un cas d’échec et la note de réversion avant d’élargir le périmètre. Préférez des unités petites et testables aux scripts complexes. Lorsqu’une étape échoue, l’erreur doit pointer vers une seule responsabilité plutôt que vers un processus embrouillé. Séparez la politique de segmentation de la politique de récupération. Modifier l’une ne doit pas obliger à réécrire l’autre lorsque les métriques de qualité changent.
Erreur 1 : Considérer le LLM comme l’ensemble du système
L’erreur n°1 : traiter l’étape comme une surface mesurable. Capturez un transcript idéal, un cas d’échec et la note de réversion avant d’élargir le périmètre. Considérez cette étape comme un contrat entre les entrées et les sorties validées. Nommez les artefacts, définites des critères de succès et refusez toute mise en œuvre partielle silencieuse. Fixez un budget de tokens par tour et par session. Les outils agents élargissent lourdement le contexte ; des plafonds stricts empêchent que les démos ne se transforment en factures inattendues.
Erreur n°2 : utiliser de très gros blocs
L’erreur n°2 : utiliser de très grands volumes pour l’étape fonctionne mieux lorsque celle-ci est traitée comme une surface mesurable. Capturez un transcript idéal, un cas d’échec et la note de réversion avant d’élargir le périmètre. Enregistrez les temps d’exécution ainsi que le coût en tokens ou en requêtes à côté des résultats fonctionnels. Une visibilité précoce des coûts évite les factures inattendues lorsque le processus passe de la démo à des environnements partagés.
Erreur n°3 : récupérer trop d’informations
Erreur 4 : Ignorer les métadonnées
Erreur 5 : Omettre l’évaluation
Erreur 6 : Penser que la recherche vectorielle suffit
Une architecture LlamaIndex RAG orientée vers la production
User Query
│
▼
Query Processing
│
▼
Query Router
│
┌──────────────┴──────────────┐
│ │
Direct Answer Retrieval Needed
│
▼
Metadata Filtering
│
┌──────────────────┴──────────────────┐
▼ ▼
Dense Search Sparse Search
│ │
└──────────────────┬──────────────────┘
▼
Fusion
│
▼
Rerank
│
▼
Context Selection
│
▼
LLM
│
▼
Response
Commencer avec le RAG le plus simple possible
Documents
↓
Chunk
↓
Embed
↓
Vector Store
↓
Retrieve
↓
LLM
Add metadata
Add hybrid retrieval
Add reranking
Add context compression
Cache + parallelize + reduce retrieval
Le véritable pouvoir de LlamaIndex
Documents
Databases
APIs
Knowledge Bases
Search Systems
Structured Data
Unstructured Data
LLM
AI Application
│
┌────────────────┼────────────────┐
↓ ↓ ↓
LLM Tools Data
│ │
└───────┬────────┘
↓
Retrieval
↓
Context
↓
LLM
Considerations finales
Data
↓
Ingestion
↓
Indexing
↓
Retrieval
↓
Context
↓
LLM
↓
Answer