Comment créer un ChatBot avec n8n, Qdrant et OpenAI ?
Pourquoi automatiser les réponses aux clients ?
L’automatisation des réponses aux questions sur une plateforme de formation est un enjeu clé pour optimiser la gestion des demandes et améliorer l’expérience utilisateur. Dans cet article, nous allons détailler comment configurer un Agent IA avec n8n, Qdrant et OpenAI pour répondre aux questions sur le contenu des formations, le planning des sessions et toutes les questions annexes.
L’objectif est d’expliquer pas à pas comment stocker les informations nécessaires dans Qdrant, configurer un flux dans n8n et utiliser un LLM (Large Language Model) comme OpenAI pour générer des réponses précises et adaptées.
Présentation de l’objectif de l’Agent IA
Lorsqu’un site web propose des services ou des formations, il est fréquent que les visiteurs aient des questions précises :
📌 Quel est le programme détaillé d’une formation ?
📌 Quand se déroulera la prochaine session ?
📌 Quelles sont les modalités d’inscription et de financement ?
Si ces questions reviennent fréquemment, les équipes support perdent du temps à répondre manuellement aux mêmes demandes. Un chatbot intelligent permettrait de répondre instantanément à ces interrogations, 24h/24 et 7j/7, tout en fournissant des informations précises et personnalisées.
💡 C’est là qu’intervient l’automatisation des réponses avec un Agent IA.
L’objectif est de mettre en place un chatbot intelligent qui pourra :
✅ Donner des informations détaillées sur le contenu des formations (objectifs, programme, prérequis, etc.).
✅ Fournir le planning des sessions inter-entreprises (dates des prochaines sessions, formations disponibles sur un mois donné).
✅ Répondre aux questions générales sur l’organisation des formations (prix, logistique, certifications, etc.).
Ce chatbot doit être capable de comprendre n’importe quelle question et d’aller chercher automatiquement la meilleure réponse dans une base de connaissances, sans nécessiter une intervention humaine.
💡 L’idée est d’avoir une base de données intelligente, où chaque nouvelle formation ajoutée ou mise à jour est automatiquement prise en compte dans les réponses du chatbot.
Formez-vous à l'automatisation No Code !
Gagnez un temps précieux avec le No Code : Nos formations vous apprennent à automatiser vos opérations internes, à structurer et gérer vos données efficacement avec Make et Airtable. Exploitez l’IA pour générer et partager du contenu professionnel en quelques clics, sans une ligne de code. Optimisez votre productivité en simplifiant vos workflows et en centralisant vos informations.
Les technologies utilisées : n8n, Qdrant, OpenAI
Pour mettre en place cet Agent IA, nous allons utiliser trois technologies complémentaires :
1️⃣ n8n 🛠️
Un outil d’automatisation No Code/Low Code qui permet d’orchestrer l’ensemble du processus :
- Récupération des documents contenant les formations (PDF, Google Drive).
- Découpage et vectorisation des contenus.
- Gestion des interactions entre le chatbot et la base de données.
2️⃣ Qdrant 📊
Une base de données vectorielle utilisée pour stocker les documents sous forme d’embeddings. Contrairement à une base classique, elle permet d’effectuer des recherches sémantiques et de retrouver les informations les plus pertinentes selon la question de l’utilisateur.
3️⃣ OpenAI 🤖
Un modèle d’IA générative utilisé pour reformuler et générer des réponses naturelles à partir des résultats extraits de Qdrant. Cela permet d’avoir des réponses claires et bien structurées.
📌 Illustration de l’architecture générale

Vue d’ensemble du processus
Voici les étapes clés que nous allons suivre pour créer ce chatbot :
🔹 Préparer les données
- Importer les documents PDF contenant les informations sur les formations.
- Découper ces documents en petits morceaux (chunks) adaptés aux recherches des utilisateurs.
- Transformer ces morceaux en vecteurs et les stocker dans Qdrant.
🔹 Gérer les requêtes utilisateurs
- Un utilisateur pose une question dans le chatbot.
- Le chatbot analyse la question et identifie le type d’information recherché (programme, planning, ou question générale).
- Une requête est envoyée à Qdrant pour récupérer les données les plus pertinentes.
🔹 Générer et afficher la réponse
- Une fois la meilleure information trouvée, elle est envoyée à OpenAI pour être reformulée en langage naturel.
- La réponse finale est renvoyée à l’utilisateur sous forme de message clair et structuré.
💡 Avantages de cette approche
✅ Réponses instantanées et automatisées.
✅ Informations toujours à jour grâce à l’intégration avec les documents sources.
✅ Expérience utilisateur améliorée, avec un chatbot intelligent qui comprend le contexte et les nuances des questions posées.
1. Préparation des données : Importation et vectorisation
L’Agent IA doit être capable de répondre aux questions des utilisateurs en s’appuyant sur une base de connaissances structurée. Pour cela, nous devons importer les documents sources, les segmenter intelligemment, et les stocker sous forme de vecteurs dans Qdrant.
📌 Objectif : Transformer les fichiers PDF contenant les informations des formations en données exploitables par le chatbot.
1.1 Extraction des documents PDF
Surveillance et récupération des fichiers
Les fichiers source sont stockés dans Google Drive et mis à jour régulièrement. L’Agent IA doit être informé des nouvelles versions et récupérer automatiquement les fichiers dès qu’ils sont modifiés ou ajoutés.
📌 Flux n8n correspondant

➡️ Deux modes de mise à jour sont utilisés :
- Mise à jour en temps réel : n8n surveille Google Drive et déclenche le traitement lorsqu’un fichier PDF est modifié ou ajouté.
- Mise à jour à la demande : Un bouton permet de forcer la récupération des fichiers si nécessaire.
Noeuds utilisés dans n8n
- Google Drive – Watch for Changes : Détecte les nouveaux fichiers ou les mises à jour.
- Google Drive – Get Files : Récupère la liste des fichiers à traiter.
- Loop Each File : Itère sur chaque fichier pour le préparer à la segmentation.
1.2 Découpage des documents en chunks
📌 Pourquoi découper les documents en plusieurs morceaux ?
Les fichiers PDF contiennent souvent de grandes quantités d’informations. Pour permettre une recherche efficace, ils sont segmentés en blocs pertinents appelés chunks.
Chaque chunk représente une unité d’information qui peut être recherchée et indexée individuellement.
Segmentation des documents selon leur type
Les documents sont classés en trois catégories principales, chacune ayant des règles spécifiques de découpage :
Type de document | Taille du chunk | Overlap (recouvrement) |
---|---|---|
Planning (dates des formations) | 150 | 0 |
Détail formation (objectifs, programme, prérequis) | 600 | 100 |
FAQ (réponses courtes aux questions) | 400 | 40 |
📌 Code JavaScript dans n8n pour définir la taille des chunks
👉 Cliquez ICI pour découvrir notre offre de backlinks et notre réseau de sites Data, Analytics, AI, No Code et Techno.

let doc_id = $json.id;
let doc_name = $json.name.replace(".pdf", "");
let formation_name = doc_name.replace("detail", "").replace("formation", "");
let chunk_size;
let chunk_overlap;
let doc_type;
if(/.*planning.*/.test(doc_name)){
chunk_size = 150;
chunk_overlap = 0;
doc_type = "planning";
}
if(/.*detail.*/.test(doc_name)){
chunk_size = 600;
chunk_overlap = 100;
doc_type = "detail";
}
if(/.*faq.*/.test(doc_name)){
chunk_size = 400;
chunk_overlap = 40;
doc_type = "faq";
}
return {
chunk_size: chunk_size,
chunk_overlap: chunk_overlap,
doc_type: doc_type,
doc_name: doc_name,
doc_id: doc_id,
formation_name: formation_name
Flux n8n correspondant

- Recursive Character Text Splitter : Divise le texte en chunks selon la taille définie.
- Default Data Loader : Prépare les segments pour la vectorisation.
1.3 Génération des embeddings et stockage dans Qdrant
Une fois les chunks créés, il faut les transformer en embeddings (représentations vectorielles) pour les stocker dans Qdrant.
Qu’est-ce qu’un embedding ?
Un embedding est une représentation numérique d’un texte qui permet une recherche sémantique efficace.
Grâce aux embeddings, notre chatbot peut comparer une question utilisateur avec les chunks stockés et trouver les réponses les plus pertinentes.
Étapes du processus

- Transformation des chunks en embeddings avec OpenAI (nœud « Embeddings OpenAI »).
- Stockage des embeddings dans Qdrant (nœud « Qdrant Vector Store »).
- Mise à jour de la base de connaissances avec les nouvelles données.
📌 Noeuds utilisés dans n8n
- Embeddings OpenAI : Convertit chaque chunk en un vecteur numérique.
- Qdrant Vector Store : Stocke ces vecteurs avec des métadonnées.
Requête d’insertion dans Qdrant
Voici un exemple de requête JSON envoyée à Qdrant pour stocker un chunk :
{
"id": "chunk_123",
"vector": [0.0129, 0.0272, 0.0712, -0.0745, ...],
"metadata": {
"doc_type": "detail",
"formation_name": "ChatGPT Analytics Niveau 1",
"source": "formations-analytics.com"
}
}
Flux n8n correspondant

- Qdrant Vector Store – Planning
- Qdrant Vector Store – Détail
- Qdrant Vector Store – FAQ (non activé dans l’exemple fourni, mais facilement adaptable)
📌 Récapitulatif de l’étape 1
✔️ Récupération automatique des documents PDF
✔️ Segmentation dynamique des contenus selon leur type
✔️ Transformation en embeddings avec OpenAI
✔️ Stockage et indexation dans Qdrant
📌 Résultat : Notre base de connaissances est prête ! 🏗️
Les informations sont maintenant stockées sous forme de vecteurs et prêtes à être interrogées par notre Agent IA.
2. Gestion des requêtes utilisateurs
Une fois que les données sont vectorisées et stockées dans Qdrant, notre Agent IA doit être capable de traiter les questions des utilisateurs, identifier le type de demande, rechercher la meilleure réponse et la reformuler avec OpenAI.
Dans cette section, nous allons voir :
✅ Comment l’Agent IA reçoit et analyse les questions
✅ Comment il filtre et récupère les réponses pertinentes dans Qdrant
✅ Comment il génère une réponse optimisée avec OpenAI
📌 Flux global dans n8n :

2.1 Réception et analyse des questions
Le chatbot est conçu pour répondre à trois types de questions :
- Le contenu d’une formation (objectifs, programme, prérequis…)
- Le planning des sessions (dates, formations disponibles par mois…)
- Les questions générales (tarifs, financements, certifications…)
📌 Exemple de question utilisateur :
« Quelle est la prochaine session de ChatGPT Analytics niveau 1 ? »
📌 Déclenchement du chatbot dans n8n

Le chatbot est déclenché lorsqu’un utilisateur envoie un message.
- Le nœud « When chat message received » capte la question.
- Un premier traitement est effectué pour analyser la requête et extraire les mots-clés.
- L’Agent IA utilise un modèle OpenAI pour classer la question et déterminer la bonne base de connaissance.
2.2 Recherche des réponses dans Qdrant
📌 Sélection de la base de connaissances appropriée
Le chatbot doit identifier si la question concerne :
🔹 Le planning → Recherche dans la base Planning
🔹 Les détails d’une formation → Recherche dans la base Detail
🔹 Une question générale → Recherche dans la base FAQ
📌 Filtrage des données dans Qdrant :

Dans n8n, les nœuds Qdrant Vector Store permettent d’interroger les bases de connaissances en filtrant les résultats selon leur type de document.
📌 Exemple de requête Qdrant pour le planning

{
"must": [
{ "key": "metadata.doc_type", "match": { "value": "planning" } }
]
}
Cette requête permet de restreindre la recherche aux documents contenant des informations sur le planning des formations.
📌 Flux n8n correspondant :

Une fois la requête exécutée, Qdrant retourne les résultats les plus pertinents sous forme de vecteurs proches de la question posée.
📌 Exemple de résultat retourné par Qdrant

{
"pageContent": "Date Formation ChatGPT Analytics: 5 juin 2025",
"metadata": {
"doc_type": "planning",
"formation_name": "ChatGPT Analytics niveau 1"
}
}
💡 Remarque : Dans l’exemple fourni, les branches Detail et FAQ ne sont pas activées, mais elles fonctionneraient de la même manière en changeant "doc_type": "detail"
ou "doc_type": "faq"
.
2.3 Génération de la réponse avec OpenAI
Une fois que Qdrant a retourné la réponse brute, il faut la reformuler pour qu’elle soit plus naturelle et mieux contextualisée.
📌 Envoi des résultats à OpenAI

L’Agent IA envoie les résultats trouvés dans Qdrant à OpenAI, qui va générer une réponse optimisée.
📌 Exemple de requête envoyée à OpenAI
{
"query": "prochaine session ChatGPT Analytics niveau 1",
"k": 4
}
📌 Exemple de réponse générée par l’IA
Utilisateur : Quelle est la prochaine session de ChatGPT Analytics niveau 1 ?
Chatbot : La prochaine session de ChatGPT Analytics niveau 1 est programmée pour le 5 juin 2025.
L’IA reformule la réponse pour qu’elle soit claire et fluide pour l’utilisateur.
📌 Comparaison avant/après reformulation
Réponse brute (Qdrant) | Réponse optimisée (OpenAI) |
---|---|
Date Formation ChatGPT Analytics: 5 juin 2025 | La prochaine session de ChatGPT Analytics niveau 1 est programmée pour le 5 juin 2025. |
2.4 Mémorisation de l’historique des échanges avec Window Buffer Memory

Un chatbot efficace ne se limite pas à répondre à une question de manière isolée. Pour une expérience plus fluide et naturelle, il doit être capable de se souvenir des échanges précédents afin d’établir une continuité dans la conversation.
Dans notre architecture, cette mémoire est gérée par le module Window Buffer Memory dans n8n.
📌 Pourquoi utiliser une mémoire conversationnelle ?
🎯 Sans mémoire, voici un problème typique :
- Utilisateur : Quel est le programme de la formation ChatGPT Analytics ?
- Chatbot : La formation ChatGPT Analytics couvre l’analyse de données et l’intégration dans les workflows analytiques…
- Utilisateur : Et quels sont les prérequis ?
- ❌ Chatbot : Je ne comprends pas votre question.
➡️ Problème : le chatbot ne se souvient pas de la question précédente et ne sait pas à quelle formation l’utilisateur fait référence.
✅ Avec Window Buffer Memory :
- Utilisateur : Quel est le programme de la formation ChatGPT Analytics ?
- Chatbot : La formation couvre l’analyse de données et l’intégration dans les workflows analytiques…
- Utilisateur : Et quels sont les prérequis ?
- Chatbot : Pour suivre cette formation, il est recommandé d’avoir des bases en IA et en analyse de données.
➡️ Solution : Grâce à Window Buffer Memory, l’Agent IA garde en mémoire les derniers échanges et peut répondre en contexte.
📌 Comment fonctionne Window Buffer Memory ?
Window Buffer Memory est un module de gestion de contexte intégré à n8n, permettant de conserver un nombre défini d’échanges récents et de les fournir comme contexte aux prochaines requêtes.
📌 Exemple d’implémentation dans notre chatbot (Voir image « Window Buffer Memory »)
Configuration des paramètres
1️⃣ Session ID → Identifiant unique attribué à chaque conversation pour suivre les interactions d’un même utilisateur.
2️⃣ Context Window Length → Nombre de messages conservés en mémoire (ex. : 5 derniers échanges).
3️⃣ Sauvegarde automatique du contexte après chaque interaction.
📌 Explication du processus avec Window Buffer Memory
1️⃣ Stockage des interactions
À chaque message utilisateur, n8n enregistre :
- 📥 Le message de l’utilisateur
- 📤 La réponse du chatbot
- 🔄 Le tout est stocké dans la mémoire active
Exemple enregistré (Voir l’image « Window Buffer Memory – chatHistory ») :
{
"lc": 1,
"type": "constructor",
"id": {
"0": "langchain_core",
"1": "messages",
"2": "HumanMessage"
},
"kwargs": {
"content": "Quel est le programme de ChatGPT Analytics niveau 1 ?"
}
}
Réponse générée :
{
"lc": 1,
"type": "constructor",
"id": {
"0": "langchain_core",
"1": "messages",
"2": "AIMessage"
},
"kwargs": {
"content": "Le programme de la formation 'ChatGPT Analytics niveau 1' inclut..."
}
}
2️⃣ Réutilisation du contexte pour répondre en fonction de l’historique
Quand l’utilisateur pose une nouvelle question sans préciser le sujet (« Quels sont les prérequis ? »), Window Buffer Memory fournit automatiquement les derniers messages échangés à OpenAI, qui comprend alors qu’il s’agit toujours de la formation « ChatGPT Analytics ».
💡 Ainsi, le chatbot peut gérer des conversations plus naturelles et cohérentes.
📌 Configuration optimale pour un chatbot efficace
Paramètre | Valeur recommandée | Explication |
---|---|---|
Session ID | Généré dynamiquement | Permet d’attribuer un identifiant unique à chaque utilisateur. |
Context Window Length | 5 messages | Conserve les 5 derniers échanges pour garder une cohérence conversationnelle. |
Sauvegarde automatique | Activée | Met à jour la mémoire après chaque interaction. |
📌 Ces paramètres peuvent être ajustés selon la complexité des interactions.
➡️ Plus le contexte conservé est long, plus la conversation est fluide, mais cela peut ralentir le traitement.
3. Architecture du chatbot dans n8n : Comprendre les technologies utilisées
Dans ce projet, trois technologies principales sont utilisées pour créer un chatbot intelligent et automatisé. Chacune a un rôle bien précis, et leur combinaison permet d’obtenir un agent conversationnel performant capable de répondre aux questions des utilisateurs de manière naturelle et rapide.
📌 n8n : L’orchestrateur Open Source No Code pour automatiser les tâches
Qu’est-ce que n8n ?
n8n (prononcé « nodenodenode ») est un outil d’automatisation de workflow Open Source, conçu pour permettre aux utilisateurs de connecter différentes applications et services sans avoir à coder manuellement des scripts complexes.
🌟 Pourquoi utiliser n8n ?
✅ Interface visuelle intuitive → On construit des flux en glissant-déposant des blocs d’action.
✅ Open Source et auto-hébergé → Contrairement à des outils comme Zapier ou Make, on peut l’installer sur son propre serveur, ce qui offre plus de contrôle sur ses données.
✅ Flexibilité totale → Il permet de combiner des outils No Code et du code personnalisé via des nœuds JavaScript/Python.
Comment n8n fonctionne dans ce chatbot ?
Dans notre projet, n8n joue le rôle d’orchestrateur : il gère tout le processus de bout en bout, depuis la réception de la question utilisateur jusqu’à l’affichage de la réponse finale.
1️⃣ L’utilisateur envoie une question sur le chatbot.
2️⃣ n8n analyse la question et identifie le type d’information recherché :
- Planning (dates de formation)
- Détails des formations (objectifs, programme)
- FAQ générale
3️⃣ Il interroge la base Qdrant pour récupérer les documents les plus pertinents.
4️⃣ Il envoie les résultats à OpenAI pour générer une réponse naturelle et fluide.
5️⃣ Il affiche la réponse à l’utilisateur.
💡 Sans n8n, il faudrait coder une API complète pour gérer ces interactions ! Grâce à son approche visuelle, tout est automatisé sans effort.
📌 Qdrant : Une base de données vectorielle pour la recherche sémantique
Qu’est-ce que Qdrant ?
Qdrant est une base de données vectorielle qui permet de stocker et retrouver des informations en utilisant des embeddings. Contrairement à une base SQL classique qui cherche des résultats exacts, Qdrant trouve les réponses les plus pertinentes en fonction du sens de la question.
🌟 Pourquoi utiliser Qdrant ?
✅ Recherche intelligente → Permet de retrouver des documents même si la question est formulée différemment.
✅ Optimisé pour l’IA → Conçu pour fonctionner avec des modèles de traitement du langage naturel comme OpenAI.
✅ Rapide et scalable → Peut gérer des millions de documents sans perte de performance.
Comment Qdrant fonctionne dans ce chatbot ?
Dans notre chatbot, Qdrant est utilisé pour stocker les informations sur les formations sous forme de vecteurs.
📌 Processus d’indexation des formations
1️⃣ Découpage des documents PDF en petits morceaux (« chunks »).
2️⃣ Conversion de ces chunks en embeddings via un modèle OpenAI.
3️⃣ Stockage des embeddings dans Qdrant, avec des métadonnées pour identifier leur type (Planning, Détail, FAQ).
📌 Exemple de requête pour rechercher les dates des formations
{
"must": [
{ "key": "metadata.doc_type", "match": { "value": "planning" } }
]
}
👉 Seuls les documents contenant des informations sur le planning sont retournés.
💡 Pourquoi ne pas utiliser une base de données classique ?
❌ Une base SQL exigerait que l’utilisateur tape exactement les bons mots-clés.
✅ Avec Qdrant, même si la question est formulée différemment, on retrouve l’information grâce à la similarité des vecteurs.
📌 OpenAI : L’IA générative qui formule des réponses naturelles
Qu’est-ce qu’OpenAI ?
OpenAI est une entreprise spécialisée dans l’intelligence artificielle avancée. Dans ce projet, nous utilisons GPT-4 (ou un modèle plus léger comme GPT-3.5) pour reformuler les réponses trouvées par Qdrant afin qu’elles soient plus naturelles et adaptées à l’utilisateur.
🌟 Pourquoi utiliser OpenAI ?
✅ Reformulation intelligente → Transforme des extraits bruts en réponses fluides.
✅ Ton conversationnel et adapté → Permet d’ajuster le style de réponse en fonction du besoin.
✅ Génération de contenu contextualisé → Enrichit les réponses avec des informations supplémentaires si nécessaire.
Comment OpenAI fonctionne dans ce chatbot ?
1️⃣ n8n envoie à OpenAI les résultats trouvés dans Qdrant.
2️⃣ OpenAI reformule ces extraits en un message clair et compréhensible.
3️⃣ n8n affiche la réponse finalisée à l’utilisateur.
📌 Exemple de requête envoyée à OpenAI
{
"query": "prochaine session ChatGPT Analytics niveau 1",
"k": 4
}
Réponse générée par OpenAI :
Utilisateur : Quelle est la prochaine session de ChatGPT Analytics niveau 1 ?
Chatbot : La prochaine session de ChatGPT Analytics niveau 1 est programmée pour le 5 juin 2025.
💡 Sans OpenAI, la réponse serait brute et peu naturelle. L’IA permet de l’améliorer et de l’adapter au ton souhaité.
📌 Synthèse : Comment ces technologies travaillent ensemble ?
📌 Schéma de l’interaction entre les technologies (Voir l’image « Flux Agent IA avec 3 knowledge bases »)
Technologie | Rôle |
---|---|
n8n | Automatisation et orchestration du chatbot |
Qdrant | Stockage intelligent des réponses et recherche sémantique |
OpenAI | Reformulation et génération de réponses naturelles |
Une combinaison gagnante pour un chatbot performant
En combinant n8n, Qdrant et OpenAI, nous obtenons un chatbot qui est :
✅ Intelligent → Il comprend la signification des questions, pas juste des mots-clés.
✅ Automatisé → n8n gère tout le processus sans intervention humaine.
✅ Fluide et naturel → OpenAI améliore les réponses pour une expérience utilisateur optimale.
💡 Cette architecture peut être adaptée à d’autres besoins :
- Support client automatisé
- FAQ intelligentes
- Recherche documentaire avancée