Comment utiliser RAGFlow : Un guide pratique pour créer des applications RAG fiables
Si vous avez essayé de construire un système de génération augmentée par la récupération (RAG), vous avez probablement rencontré les problèmes classiques : hallucinations, récupération aléatoire, pipelines lents et prétraitement de documents désordonné. RAGFlow intervient en tant qu'outil de flux de travail de bout en bout qui vous aide à orchestrer l'ingestion de documents, le découpage, la vectorisation, la récupération et la génération avec plus de contrôle et d'observabilité.
Ce guide adopte une approche pratique et axée sur les solutions. Nous allons vous montrer une configuration propre, vous montrer comment utiliser RAGFlow pour des documents réels et partager des modèles qui réduisent réellement les hallucinations et améliorent la qualité des réponses.
Qu'est-ce que RAGFlow et pourquoi l'utiliser ?
RAGFlow est un système pour construire des pipelines de génération augmentée par la récupération. Dans une configuration RAG typique, vous :
- Ingérez des documents (PDF, pages web, diapositives, code, etc.)
- Découpez le contenu en unités récupérables
- Intégrez les blocs en vecteurs pour la recherche sémantique
- Récupérez les k meilleurs blocs pertinents au moment de la question
- Générez une réponse fondée en utilisant un LLM
RAGFlow ajoute des paramètres par défaut, des blocs de flux de travail et des garde-fous afin que vous puissiez itérer plus rapidement et livrer des applications plus fiables. Il est particulièrement utile si vous voulez :
- Découpage et métadonnées cohérents : Une meilleure récupération commence par de meilleurs blocs.
- Intégrations et LLM enfichables : Échangez OpenAI, des modèles locaux ou des points de terminaison d'entreprise.
- Évaluations et garde-fous : Mesurez la qualité de la récupération et réduisez les hallucinations.
- Pipelines déployables : Passez du notebook à la production avec moins de réécritures.
Démarrage rapide : De zéro à un pipeline RAGFlow fonctionnel
Vous trouverez ci-dessous un flux de travail minimal de bout en bout que vous pouvez adapter. Même si votre environnement diffère, la séquence et les garde-fous sont portables.
1) Préparez votre environnement
- Créez un
.env avec vos clés :
OPENAI_API_KEY (ou un autre fournisseur LLM)
EMBEDDINGS_API_KEY (si vous utilisez un fournisseur distinct)
VECTOR_DB_URL (par exemple, Pinecone, Weaviate, Qdrant ou local)
- Définissez un répertoire de projet, par exemple
ragflow-project/ avec les dossiers :
data/raw/ (fichiers source)
data/processed/ (blocs nettoyés)
configs/ (YAML/JSON pour les paramètres du pipeline)
eval/ (ensembles de données et rapports)
2) Ingérez des documents avec des métadonnées propres
De bonnes métadonnées = une meilleure récupération. Normalisez les titres, les auteurs, les dates et les sources.
- Convertissez les PDF et les diapositives en texte avec un analyseur robuste
- Préservez la structure : titres, listes, blocs de code et tableaux
- Attachez des métadonnées à chaque bloc :
source, section, page, timestamp, version
Conseil : Conservez un doc_id et un chunk_id pour prendre en charge les citations et la réingestion.
3) Choisissez une stratégie de découpage qui correspond à votre contenu
Le découpage affecte fortement la qualité de la récupération et la latence.
- Pour les documents narratifs : découpage sémantique (diviser par titres/paragraphes)
- Pour les documents techniques : utilisez le découpage hybride (sémantique + fenêtre fixe)
- Pour le code : découpez par fonction/classe avec une petite fenêtre coulissante
Paramètres recommandés pour commencer :
chunk_size : 600–1 000 jetons
chunk_overlap : 50–100 jetons
max_depth : limitez les sections imbriquées à 2–3 niveaux pour éviter la fragmentation
4) Choisissez des intégrations et un magasin de vecteurs
- Commencez avec un modèle d'intégration polyvalent puissant (par exemple, text‑embedding‑3‑large ou un modèle local moderne). Si la confidentialité est essentielle, envisagez des intégrations auto-hébergées.
- Utilisez une base de données vectorielle qui prend en charge :
- Recherche hybride (dense + mot-clé)
- Filtres (contraintes de métadonnées)
- Upserts par lots et métriques d'index
Paramètres d'index à tester :
top_k = 5–10 pour la récupération initiale
similarity_metric = cosine (ou dot pour certains modèles)
- Activez la pertinence marginale maximale (MMR) pour réduire la redondance
5) Orchestration de la récupération
Implémentez un récupérateur en deux étapes :
- Rappel rapide des candidats
- Recherche hybride (BM25 + dense)
- Grand
top_k (par exemple, 30–50)
- Reclasseur d'encodeur croisé ou score basé sur LLM
- Réduisez au
top_k final (par exemple, 5–8)
Ajoutez des filtres de métadonnées : source:"handbook" AND section:"benefits" AND version:"v2" pour contraindre les réponses aux documents de confiance.
6) Génération fondée avec structure
Votre invite doit appliquer les citations et le refus lorsque les preuves sont faibles.
Exemple d'invite système :
Vous êtes un assistant prudent. Répondez UNIQUEMENT avec des informations étayées par le contexte fourni.
- Citez les sources en ligne comme [doc_id:chunk_id].
- Si le contexte est insuffisant, dites « Pas assez d'informations dans les documents fournis. »
- N'inventez pas de faits.
Modèle d'invite utilisateur :
Question : {query}
Contexte :
{top_chunks}
Instructions :
- Fournissez d'abord une réponse concise, puis des détails.
- Incluez des citations après chaque affirmation factuelle.
7) Ajoutez des garde-fous pour réduire les hallucinations
- Vérification de la possibilité de répondre : Avant la génération, demandez à un petit modèle : « Y a-t-il des preuves directes dans les blocs récupérés ? » Si non, renvoyez une question de clarification.
- Politique Citer ou se taire : Bloquez les sorties qui manquent de citations.
- Filtres de toxicité/PII pour le contenu d'entreprise.
8) Évaluation et amélioration continue
Créez un ensemble eval/ avec :
- 50–200 vraies questions d'utilisateurs
- Réponses de vérité terrain (ou références de confiance)
- Sources attendues (identifiants de document) le cas échéant
Mesure :
- Taux de réussite de la récupération (la source d'or apparaît-elle dans le top‑k ?)
- Fidélité de la réponse (déclarations étayées par des citations)
- Latence (p95 de bout en bout)
Itérer sur :
- Taille et chevauchement des blocs
- Choix du modèle d'intégration
- Reclasseur vs. top‑k supérieur
- Structure et contraintes de l'invite
Un pipeline RAGFlow complet : Exemple de configuration
Vous trouverez ci-dessous une configuration conceptuelle que vous pouvez adapter à votre chaîne d'outils. Remplacez les noms de fournisseurs au besoin.
project: product-handbook-rag
io:
input_path: data/raw/
output_index: product-handbook-index
parsing:
pdf:
strategy: auto
keep_layout: true
extract_tables: true
markdown:
preserve_headings: true
chunking:
method: semantic_hybrid
target_tokens: 800
overlap_tokens: 80
windowing: 2
metadata:
fields: [doc_id, title, section, page, version, source]
embeddings:
provider: openai
model: text-embedding-3-large
vectorstore:
type: qdrant
url: ${VECTOR_DB_URL}
similarity: cosine
retrieval:
hybrid: true
lexical_weight: 0.35
semantic_weight: 0.65
candidate_top_k: 40
rerank:
enabled: true
model: bge-reranker-large
final_top_k: 7
generation:
llm: gpt-4o
temperature: 0.2
cite_or_silence: true
guardrails:
answerability_check: true
pii_filter: true
toxicity_filter: moderate
monitoring:
log_traces: true
latency_budget_ms: 3500
cost_budget_per_100: 1.25
Comment utiliser RAGFlow pour différents types de contenu
Manuels de produits et manuels d'utilisation
- Préférez le découpage sémantique avec des limites de section claires
- Attachez la version et la date d'entrée en vigueur pour éviter les réponses obsolètes
- Utilisez des filtres stricts : exigez toujours
version = latest
Bases de connaissances et FAQ
- Utilisez des blocs plus petits (400–600 jetons) pour des réponses précises
- Augmentez le pool de candidats et comptez sur le reclassement pour trouver l'extrait exact
- Générez automatiquement des paires Q/R canoniques pour augmenter le rappel via la recherche lexicale
Documents d'ingénierie et code
- Découpez par fonction/module et incluez les graphes d'importation dans les métadonnées
- Activez la récupération parent-enfant : renvoyez la fonction + son contexte de chaîne de documentation
- Utilisez un reclasseur conscient du code pour hiérarchiser les symboles pertinents
Juridique et conformité
- Exigez des citations au niveau du paragraphe
- Ajoutez une logique de refus pour un contexte incomplet
- Conservez un ensemble de sources approuvées par les organismes de réglementation dans un index distinct
Modèles d'invite qui fonctionnent réellement
- Répondez puis citez : Réponse courte en haut ; citations en ligne après chaque affirmation
- Chaîne de récupération : Demandez d'abord au modèle de résumer chaque bloc, puis de synthétiser
- Réécriture de la requête : Développez les requêtes des utilisateurs avec des synonymes et des termes de domaine avant la récupération
- Invites contrastives : « Expliquez pourquoi l'option A est meilleure que B en fonction du contexte. » Cela force l'utilisation de preuves
Exemple d'étape de réécriture de requête :
Original : « quelle est notre politique de report des jours de congé ? »
Réécriture : « politique de report des jours de congé payés ; report des vacances ; heures maximales ; dernière version de la politique »
Observabilité et boucles de rétroaction
- Enregistrez les blocs qui ont été utilisés, leurs scores et ceux qui ont été ignorés
- Capturez les pouces levés/baissés avec une courte justification ; réinjectez cela dans le réglage du récupérateur
- Exécutez des tests de régression hebdomadaires sur votre ensemble d'évaluation avant de déployer toute modification de modèle
Aide-mémoire sur le réglage des performances
- Si les réponses semblent génériques : augmentez
candidate_top_k et ajoutez un reclasseur plus fort
- Si les réponses manquent de détails : réduisez la taille des blocs ; augmentez légèrement le poids lexical
- Si les citations répètent le même bloc : activez MMR et augmentez la diversité
- Si la latence est élevée : mettez en cache les intégrations, précalculez les réécritures de requêtes, utilisez un reclasseur plus petit
- Si les coûts augmentent : diminuez la température de génération, raccourcissez les invites, essayez un LLM plus petit pour la première passe
Éléments essentiels de la sécurité et de la gouvernance
- Chiffrez les vecteurs stockés et expurger les champs sensibles dans les métadonnées
- Utilisez le contrôle d'accès par index ; segmentez par équipe ou par sensibilité des données
- Tenez un registre de la lignée des données : URL de la source du document, somme de contrôle et horodatage de l'ingestion
Instantané d'étude de cas : Des PDF désordonnés aux réponses fiables
Une équipe de support a ingéré 1 200 pages de PDF. La récupération initiale était incohérente ; les agents ne faisaient pas confiance au bot. Après être passé au découpage sémantique-hybride (800 jetons, 80 de chevauchement), avoir activé le reclassement de l'encodeur croisé et avoir appliqué la règle citer ou se taire, le taux de réussite du top‑k est passé de 62 % à 89 % et l'adoption par les agents a doublé. La clé n'était pas un LLM plus grand, mais des blocs plus propres et une récupération plus stricte.
Conseil d'outillage : Itération rapide avec une barre latérale d'IA
Il convient de noter que si vous expérimentez avec des invites et des extraits de récupération dans de nombreux documents, un assistant d'IA qui vous permet de discuter sur des PDF, des pages web et du code directement depuis le navigateur peut accélérer l'itération. D'ailleurs, Sider.AI (https://sider.ai/) offre une barre latérale d'IA qui vous permet d'importer le contexte de la page sur laquelle vous vous trouvez, de résumer et d'affiner rapidement les invites. C'est pratique pour prototyper des invites RAG et tester la qualité des blocs avant de formaliser le pipeline. Dépannage de RAGFlow : Correctifs rapides
- « Le modèle est confiant mais a tort. »
- Activez la vérification de la possibilité de répondre ; baissez la température ; exigez des citations
- « La recherche renvoie des quasi-doublons. »
- Activez MMR ; ajoutez un reclasseur ; réduisez le chevauchement des blocs
- « Les pics de latence au maximum. »
- Intégrations par lots ; mettez en cache les réécritures de requêtes ; utilisez la génération en continu
- « Les anciennes politiques continuent d'apparaître. »
- Filtrez sur
version = latest ; dépréciez ou mettez hors service les documents obsolètes
Prochaines étapes : Rendez votre RAGFlow fiable en production
- Commencez avec un petit corpus de confiance ; perfectionnez d'abord le découpage et les filtres
- Ajoutez un reclasseur avant de mettre à niveau le LLM
- Créez un ensemble d'évaluation de 100 questions et suivez le taux de réussite chaque semaine
- Intégrez la rétroaction des utilisateurs pour affiner continuellement la récupération
Principaux points à retenir :
- La qualité de la récupération bat la taille du modèle pour RAG
- Le découpage, les métadonnées et le reclassement sont vos principaux leviers
- Les garde-fous comme citer ou se taire augmentent considérablement la confiance
- Investissez tôt dans l'observabilité et l'évaluation
Grâce à ces pratiques, RAGFlow devient une épine dorsale fiable pour les réponses fondées, que vous alimentiez un robot d'aide, un copilote de développeur ou un assistant de connaissances interne.
FAQ
Q1:Qu'est-ce que RAGFlow et comment l'utiliser pour la QA de documents ?
RAGFlow est un framework pour construire des pipelines de génération augmentée par la récupération. Vous ingérez, découpez, intégrez, récupérez et générez des réponses avec des citations pour réduire les hallucinations et améliorer la précision.
Q2:Comment dois-je découper les documents dans RAGFlow ?
Utilisez le découpage sémantique ou hybride avec des blocs de 600 à 1 000 jetons et un chevauchement de 50 à 100 jetons. Pour le code, découpez par fonction ou classe et incluez le contexte environnant.
Q3:Quelle base de données vectorielle fonctionne le mieux avec RAGFlow ?
Choisissez un magasin qui prend en charge la recherche hybride, les filtres de métadonnées et le reclassement : Qdrant, Weaviate, Pinecone ou une option locale sont tous des choix courants.
Q4:Comment puis-je empêcher les hallucinations dans une application RAGFlow ?
Appliquez une politique de citer ou se taire, ajoutez une vérification de la possibilité de répondre avant la génération et maintenez des invites strictes quant à l'utilisation du contexte récupéré uniquement.
Q5:Quelles métriques dois-je suivre pour évaluer RAGFlow ?
Surveillez le taux de réussite de la récupération, la fidélité des réponses, la latence et le coût par 100 requêtes, et maintenez un ensemble d'évaluation petit mais représentatif.