Construire une base de connaissances pour chatbot en scrappant un site web : exploration, segmentation, citation

Un bot de support est aussi bon que ce qu'on lui fournit. Orientez-le vers votre propre site — documents, FAQ, centre d'aide — en explorant pour obtenir du markdown propre et en le segmentant pour la récupération. Voici le pipeline qui maintient les réponses fondées et citées.

Un chatbot de support est aussi bon que ce qu'on lui fournit, et la meilleure chose à lui fournir est généralement votre propre site web — les documents, FAQ et articles du centre d'aide que vous maintenez déjà. Le problème est qu'un bot ne peut pas lire un site web comme le fait une personne ; il a besoin de texte propre, segmenté, récupérable avec la source attachée à chaque morceau. Ce guide est le pipeline complet : explorez le site vers markdown, segmentez-le, intégrez-le dans un magasin de vecteurs, et récupérez le contexte cité au moment de la requête — une base de connaissances fondée qui reste précise au fur et à mesure que votre site évolue.

Pourquoi RAG, et non un ajustement fin

Vous pourriez ajuster un modèle sur votre contenu, mais pour un bot de support, c'est le mauvais outil : le réentraînement est lent, coûteux, et devient obsolète dès que vous modifiez un document. La génération augmentée par récupération (RAG) garde la connaissance en dehors du modèle — segmentez votre contenu, intégrez-le, et au moment de la question, récupérez les morceaux les plus pertinents et fournissez-les au modèle comme contexte. Mettez à jour un document, réexplorez, et la connaissance du bot se met à jour avec lui. La demande est réelle : le marché des chatbots devrait croître à un TCAC de 23,3 % d'ici 2030, une étude de KPMG a révélé que 69 % des personnes utilisent déjà des chatbots, et une étude de Stanford et du MIT sur 5 179 agents de support a mesuré une augmentation moyenne de la productivité de 14 % grâce à l'assistance de l'IA générative — 35 % pour les agents les plus récents.

Étape 1 : explorez le site vers du markdown propre

Alimenter un pipeline RAG avec du HTML brut l'empoisonne avec la navigation, les bannières de cookies et les balises de script. Explorez directement vers du markdown à la place — il préserve les titres, les listes et les tableaux tout en éliminant le bruit de présentation, ce qui est exactement ce qu'un LLM ingère le mieux. Une Scraper API avec un mode d'exploration parcourt le site et renvoie chaque page sous forme de markdown propre :

import requests

resp = requests.post(
    "https://api.quantumproxies.io/crawl",
    json={"url": "https://docs.example.com", "limit": 300, "format": "markdown"},
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    timeout=120,
)
pages = resp.json()["pages"]  # each: {"url": ..., "markdown": ...}

Explorer votre propre site est simple ; explorer des documents derrière des limites géographiques ou de taux est là où le routage via les bonnes IPs est important, afin que l'exploration se termine au lieu de stagner à mi-chemin. Le markdown d'abord est le même principe que alimenter les LLMs avec des données web fraîches.

Étape 2 : segmentez par titre, gardez la source

N'intégrez pas des pages entières — la récupération fonctionne mieux sur des segments ciblés. Divisez chaque page sur ses titres pour que chaque segment soit un sujet cohérent, et conservez l'URL source sur chacun pour pouvoir le citer plus tard. C'est aussi là qu'un bon document source est payant : des articles avec des titres clairs, une idée chacun, et des questions reformulées dans le texte segmenté bien mieux qu'un mur de prose (un bot ne peut pas déduire le contexte qu'une personne pourrait) :

def chunk_markdown(md, source_url):
    chunks, cur = [], {"heading": "", "text": ""}
    for line in md.splitlines():
        if line.startswith("#"):
            if cur["text"].strip():
                chunks.append({**cur, "source": source_url})
            cur = {"heading": line.lstrip("# ").strip(), "text": ""}
        else:
            cur["text"] += line + "\n"
    if cur["text"].strip():
        chunks.append({**cur, "source": source_url})
    return chunks

all_chunks = [c for p in pages for c in chunk_markdown(p["markdown"], p["url"])]
Pipeline RAG transformant un site web en bot de support : explorez vers markdown, segmentez par titre, intégrez dans une base de données vectorielle, récupérez et citez
Récupérez les segments cités au moment de la requête plutôt que de bourrer tout le site dans l'invite — fondé et vérifiable.

Étape 3 : intégrez, stockez et récupérez avec citations

Intégrez chaque segment dans un vecteur et insérez-le dans une base de données vectorielle avec l'URL source comme métadonnée. Au moment de la requête, intégrez la question de l'utilisateur, tirez les quelques meilleures correspondances, et passez leur texte au modèle comme contexte — et faites apparaître les liens sources pour que la réponse soit vérifiable, pas une boîte noire :

# index each chunk with its source as metadata
for c in all_chunks:
    vec = embed(c["heading"] + "\n" + c["text"])
    index.upsert(id=uid(c), values=vec,
                 metadata={"source": c["source"], "text": c["text"]})

# at query time: retrieve, ground, and cite
hits = index.query(embed(user_question), top_k=4)
context = "\n\n".join(h.metadata["text"] for h in hits)
citations = list({h.metadata["source"] for h in hits})
answer = llm(f"Answer using only this context:\n{context}", question=user_question)

Ancrer le modèle dans le contexte récupéré — et lui dire de répondre uniquement à partir de ce contexte — est ce qui empêche un bot de support d'inventer des politiques avec confiance. Les citations ont une double fonction : elles permettent aux utilisateurs de vérifier, et elles vous permettent de repérer quand le bot cherche le mauvais document. Pour les mécaniques plus profondes, notre guide sur les pipelines RAG qui ne sont pas obsolètes va plus loin sur la segmentation et la récupération.

Étape 4 : actualisez, sinon ça pourrit

Une base de connaissances est une chose vivante. Les documents sont réécrits, les prix changent, de nouveaux articles apparaissent — et un bot répondant à partir de l'exploration du mois dernier donne de mauvaises réponses avec une pleine confiance. Planifiez une réexploration, comparez chaque page à sa dernière version, et réintégrez uniquement ce qui a changé pour que l'actualisation reste économique. Gardez une date de récupération sur chaque segment pour toujours savoir à quel point la source de la réponse est actuelle. Si vous préférez consommer un flux géré, toujours frais plutôt que de gérer vous-même l'exploration et l'actualisation, les données web conçues pour les LLMs gèrent le côté collecte.

Statistiques derrière les chatbots de base de connaissances : TCAC de 23,3 % du marché, 69 % des personnes utilisent des chatbots, et gains de productivité de support de 14-35 %
Le passage aux bots de support est bien en cours ; une base de connaissances fondée et citée est ce qui rend un bot digne de confiance.

Explorez n'importe quel site vers du markdown propre pour votre bot

Questions fréquemment posées

Comment construire une base de connaissances pour chatbot à partir d'un site web ?

Explorez le site vers du markdown propre, divisez chaque page en segments basés sur les titres avec l'URL source attachée, intégrez les segments dans une base de données vectorielle, et au moment de la requête, récupérez les segments les plus pertinents pour ancrer la réponse du modèle. Planifiez une réexploration pour le maintenir à jour. Cette approche RAG signifie qu'éditer un document met à jour la connaissance du bot sans aucun réentraînement.

Dois-je entraîner un modèle sur mon contenu ?

Non — et pour un bot de support, vous ne devriez pas. L'ajustement fin est lent, coûteux et devient obsolète chaque fois que votre contenu change. La génération augmentée par récupération garde la connaissance dans un magasin de vecteurs en dehors du modèle, donc le bot répond toujours à partir de l'exploration actuelle. Vous ne réexplorez et ne réintégrez que lorsque le contenu change, ce qui est bien moins coûteux que le réentraînement.

Pourquoi explorer vers markdown au lieu de HTML ?

Le HTML brut contient la navigation, les publicités, les bannières de cookies et les scripts qui ajoutent du bruit et gaspillent votre budget d'intégration. Le markdown conserve la structure significative — titres, listes, tableaux — tout en éliminant la couche de présentation, ce que les LLMs ingèrent le plus proprement. Une entrée plus propre signifie une récupération plus pertinente et moins de réponses confuses. Les bots ne peuvent pas non plus lire les images ou les vidéos, donc gardez les informations clés en texte.

Comment maintenir la base de connaissances à jour ?

Planifiez des réexplorations périodiques, détectez quelles pages ont changé, et réintégrez uniquement celles-ci — les réexplorations complètes gaspillent de la bande passante et des ressources informatiques. Stockez une date de récupération sur chaque segment pour pouvoir dire à quel point la source d'une réponse est fraîche, et versionnez l'index pour pouvoir revenir en arrière si une mauvaise exploration dégrade la récupération. L'actualisation incrémentale garde le coût proportionnel au changement réel.

Le pipeline est le produit ici : explorez vers markdown, segmentez par titre, intégrez avec les sources, récupérez et citez, puis actualisez selon un calendrier. Faites cela et votre bot de support répond à partir de votre contenu réel, lie ses sources, et reste à jour au fur et à mesure que votre site évolue — la différence entre un bot en qui les gens ont confiance et un qu'ils apprennent à contourner. Pour donner à un agent IA un accès en direct aux mêmes données via une interface standard, consultez notre guide sur le serveur QuantumProxies MCP.

Alimentez votre bot avec des données web toujours fraîches