Costruisci una Base di Conoscenza per Chatbot estraendo dati da un Sito Web: Crawling, Suddivisione, Citazione
Un bot di supporto è valido solo quanto il materiale di cui si nutre. Indicalo verso il tuo sito — documentazione, FAQ, centro assistenza — eseguendo il crawling per ottenere markdown pulito e suddividendolo per il recupero. Ecco il processo che mantiene le risposte fondate e citate.
Un chatbot di supporto è valido solo quanto il materiale di cui si nutre, e il miglior materiale è solitamente il tuo sito web — la documentazione, le FAQ e gli articoli del centro assistenza che già mantieni. Il problema è che un bot non può leggere un sito web come fa una persona; ha bisogno di testo pulito, suddiviso e recuperabile con la fonte allegata a ogni pezzo. Questa guida è il processo completo: esegui il crawling del sito a markdown, suddividilo, incorporalo in un archivio vettoriale e recupera il contesto citato al momento della query — una base di conoscenza fondata che rimane accurata mentre il tuo sito cambia.
Perché RAG, non un fine-tuning
Potresti fare il fine-tuning di un modello sui tuoi contenuti, ma per un bot di supporto è lo strumento sbagliato: il riaddestramento è lento, costoso e diventa obsoleto nel momento in cui modifichi un documento. La generazione aumentata dal recupero (RAG) mantiene la conoscenza al di fuori del modello — suddividi i tuoi contenuti, incorporali e al momento della domanda recupera i pezzi più rilevanti e consegnali al modello come contesto. Aggiorna un documento, esegui di nuovo il crawling e la conoscenza del bot si aggiorna con esso. La domanda è reale: si prevede che il mercato dei chatbot cresca a un CAGR del 23,3% fino al 2030, uno studio di KPMG ha rilevato che il 69% delle persone utilizza già i chatbot, e uno studio di Stanford e MIT su 5.179 agenti di supporto ha misurato un aumento medio della produttività del 14% grazie all'assistenza AI generativa — 35% per gli agenti più recenti.
Passo 1: esegui il crawling del sito per ottenere markdown pulito
Alimentare HTML grezzo in un processo RAG lo avvelena con navigazione, banner sui cookie e tag script. Esegui il crawling direttamente a markdown invece — preserva intestazioni, elenchi e tabelle mentre elimina il rumore della presentazione, che è esattamente ciò che un LLM ingerisce meglio. Un Scraper API con una modalità di crawling percorre il sito e restituisce ogni pagina come markdown pulito:
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": ...}
Eseguire il crawling del proprio sito è semplice; eseguire il crawling di documenti dietro limiti geografici o di velocità è dove il routing attraverso gli IP giusti conta, in modo che il crawling si completi invece di bloccarsi a metà. Markdown-first è lo stesso principio dietro alimentare gli LLM con dati web freschi.
Passo 2: suddividi per intestazione, mantieni la fonte
Non incorporare intere pagine — il recupero funziona meglio su blocchi mirati. Dividi ogni pagina sulle sue intestazioni in modo che ogni blocco sia un argomento coerente, e porta l'URL della fonte su ciascuno in modo da poterlo citare in seguito. Questo è anche il punto in cui un buon documento di origine paga: articoli con intestazioni chiare, un'idea ciascuno, e domande ripetute nel testo si suddividono molto meglio di un muro di prosa (un bot non può inferire il contesto che una persona farebbe):
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"])]

Passo 3: incorpora, archivia e recupera con citazioni
Incorpora ogni blocco in un vettore e inseriscilo in un database vettoriale con l'URL della fonte come metadato. Al momento della query, incorpora la domanda dell'utente, estrai le prime corrispondenze e passa il loro testo al modello come contesto — e mostra i link delle fonti in modo che la risposta sia verificabile, non una scatola nera:
# 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)
Fondare il modello nel contesto recuperato — e dirgli di rispondere solo da quel contesto — è ciò che impedisce a un bot di supporto di inventare politiche con sicurezza. Le citazioni hanno un doppio ruolo: permettono agli utenti di verificare e ti permettono di individuare quando il bot sta cercando il documento sbagliato. Per i meccanismi più profondi, la nostra guida su processi RAG che non sono obsoleti approfondisce la suddivisione e il recupero.
Passo 4: aggiorna, o marcisce
Una base di conoscenza è una cosa viva. I documenti vengono riscritti, i prezzi cambiano, appaiono nuovi articoli — e un bot che risponde dal crawling del mese scorso dà risposte sbagliate con piena fiducia. Pianifica un nuovo crawling, confronta ogni pagina con la sua ultima versione e reincorpora solo ciò che è cambiato in modo che l'aggiornamento rimanga economico. Tieni una data di acquisizione su ogni blocco in modo da sapere sempre quanto è attuale la fonte della risposta. Se preferisci consumare un feed gestito e sempre aggiornato piuttosto che eseguire il crawling e l'aggiornamento da solo, dati web costruiti per LLM gestisce il lato della raccolta.

Esegui il crawling di qualsiasi sito per ottenere markdown pulito per il tuo bot
Domande frequenti
Come costruisco una base di conoscenza per chatbot da un sito web?
Esegui il crawling del sito per ottenere markdown pulito, dividi ogni pagina in blocchi basati sulle intestazioni con l'URL della fonte allegato, incorpora i blocchi in un database vettoriale e al momento della query recupera i blocchi più rilevanti per fondare la risposta del modello. Pianifica un nuovo crawling per mantenerlo aggiornato. Questo approccio RAG significa che modificare un documento aggiorna la conoscenza del bot senza alcun riaddestramento.
Devo addestrare un modello sui miei contenuti?
No — e per un bot di supporto non dovresti. Il fine-tuning è lento, costoso e diventa obsoleto ogni volta che i tuoi contenuti cambiano. La generazione aumentata dal recupero mantiene la conoscenza in un archivio vettoriale al di fuori del modello, quindi il bot risponde sempre dal crawling corrente. Devi solo eseguire nuovamente il crawling e reincorporare quando i contenuti cambiano, il che è molto più economico del riaddestramento.
Perché eseguire il crawling a markdown invece che a HTML?
L'HTML grezzo contiene navigazione, annunci, banner sui cookie e script che aggiungono rumore e sprecano il tuo budget di incorporazione. Il markdown mantiene la struttura significativa — intestazioni, elenchi, tabelle — mentre elimina il livello di presentazione, che è ciò che gli LLM ingeriscono più pulitamente. Un input più pulito significa un recupero più rilevante e meno risposte confuse. I bot non possono nemmeno leggere immagini o video, quindi mantieni le informazioni chiave in testo.
Come mantengo aggiornata la base di conoscenza?
Pianifica nuovi crawling periodici, rileva quali pagine sono cambiate e reincorpora solo quelle — i nuovi crawling completi sprecano banda e calcolo. Archivia una data di acquisizione su ogni blocco in modo da poter sapere quanto è fresca la fonte di una risposta e versiona l'indice in modo da poter tornare indietro se un cattivo crawling degrada il recupero. L'aggiornamento incrementale mantiene i costi proporzionali al cambiamento reale.
Il processo è il prodotto qui: esegui il crawling a markdown, suddividi per intestazione, incorpora con le fonti, recupera e cita, quindi aggiorna su un programma. Fai questo e il tuo bot di supporto risponde dai tuoi contenuti reali, collega le sue fonti e rimane aggiornato mentre il tuo sito si evolve — la differenza tra un bot di cui le persone si fidano e uno che imparano a evitare. Per dare a un agente AI accesso live agli stessi dati tramite un'interfaccia standard, consulta la nostra guida al server QuantumProxies MCP.