Construye una Base de Conocimiento para Chatbots Raspando un Sitio Web: Rastrear, Fragmentar, Citar

Un bot de soporte es tan bueno como lo que se le alimenta. Apúntalo a tu propio sitio — documentos, preguntas frecuentes, centro de ayuda — rastreando para limpiar markdown y fragmentándolo para su recuperación. Aquí está la canalización que mantiene las respuestas fundamentadas y citadas.

Un chatbot de soporte es tan bueno como lo que se le alimenta, y lo mejor para alimentarlo suele ser tu propio sitio web — los documentos, preguntas frecuentes y artículos del centro de ayuda que ya mantienes. El problema es que un bot no puede leer un sitio web como lo hace una persona; necesita texto limpio, fragmentado y recuperable con la fuente adjunta a cada pieza. Esta guía es la canalización completa: rastrea el sitio a markdown, fragmenta, incrústalo en un almacén vectorial y recupera el contexto citado en el momento de la consulta — una base de conocimiento fundamentada que se mantiene precisa a medida que tu sitio cambia.

Por qué RAG, no un ajuste fino

Podrías ajustar un modelo con tu contenido, pero para un bot de soporte esa es la herramienta equivocada: reentrenar es lento, costoso y se vuelve obsoleto en el momento en que editas un documento. La generación aumentada por recuperación (RAG) mantiene el conocimiento fuera del modelo — fragmenta tu contenido, incrústalo, y en el momento de la pregunta recupera las piezas más relevantes y entrégaselas al modelo como contexto. Actualiza un documento, vuelve a rastrear, y el conocimiento del bot se actualiza con él. La demanda es real: se proyecta que el mercado de chatbots crecerá a un CAGR del 23.3% hasta 2030, un estudio de KPMG encontró que el 69% de las personas ya usan chatbots, y un estudio de Stanford y MIT de 5,179 agentes de soporte midió un aumento promedio del 14% en productividad gracias a la asistencia de IA generativa — 35% para los agentes más nuevos.

Paso 1: rastrear el sitio para limpiar markdown

Alimentar HTML sin procesar en una canalización RAG lo envenena con navegación, banners de cookies y etiquetas de script. En su lugar, rastrea directamente a markdown — preserva encabezados, listas y tablas mientras elimina el ruido de presentación, que es exactamente lo que un LLM ingiere mejor. Una Scraper API con un modo de rastreo recorre el sitio y devuelve cada página como markdown limpio:

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": ...}

Rastrear tu propio sitio es sencillo; rastrear documentos detrás de límites geográficos o de tasa es donde enrutar a través de las IPs correctas importa, para que el rastreo se complete en lugar de detenerse a mitad de camino. Markdown-primero es el mismo principio detrás de alimentar a los LLMs con datos web frescos.

Paso 2: fragmentar por encabezado, mantener la fuente

No incrustes páginas enteras — la recuperación funciona mejor en fragmentos enfocados. Divide cada página en sus encabezados para que cada fragmento sea un tema coherente, y lleva la URL de la fuente en cada uno para que puedas citarla más tarde. Aquí es también donde un buen documento fuente vale la pena: artículos con encabezados claros, una idea cada uno, y preguntas reiteradas en el texto fragmentado funcionan mucho mejor que un muro de prosa (un bot no puede inferir el contexto que una persona sí):

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"])]
Canalización RAG convirtiendo un sitio web en un bot de soporte: rastrear a markdown, fragmentar por encabezado, incrustar en una base de datos vectorial, recuperar y citar
Recupera fragmentos citados en el momento de la consulta en lugar de meter todo el sitio en el prompt — fundamentado y verificable.

Paso 3: incrustar, almacenar y recuperar con citas

Incrusta cada fragmento en un vector e insértalo en una base de datos vectorial con la URL de la fuente como metadato. En el momento de la consulta, incrusta la pregunta del usuario, extrae las mejores coincidencias y pasa su texto al modelo como contexto — y muestra los enlaces de las fuentes para que la respuesta sea verificable, no una caja negra:

# 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)

Fundamentar el modelo en el contexto recuperado — y decirle que responda solo desde ese contexto — es lo que evita que un bot de soporte invente políticas con confianza. Las citas cumplen una doble función: permiten a los usuarios verificar, y te permiten detectar cuando el bot está buscando en el documento equivocado. Para una explicación más profunda, nuestra guía sobre canalizaciones RAG que no están obsoletas profundiza más en la fragmentación y recuperación.

Paso 4: actualizar, o se pudre

Una base de conocimiento es algo vivo. Los documentos se reescriben, los precios cambian, aparecen nuevos artículos — y un bot que responde desde el rastreo del mes pasado da respuestas incorrectas con total confianza. Programa un nuevo rastreo, compara cada página con su última versión, y vuelve a incrustar solo lo que cambió para que la actualización sea económica. Mantén una fecha de obtención en cada fragmento para que siempre sepas cuán actual es la fuente de la respuesta. Si prefieres consumir un feed gestionado y siempre fresco en lugar de ejecutar el rastreo y la actualización tú mismo, datos web construidos para LLMs se encargan de la parte de recolección.

Estadísticas detrás de los chatbots de base de conocimiento: 23.3% CAGR del mercado, 69% de las personas usan chatbots, y 14-35% de aumento en productividad de soporte
El cambio hacia los bots de soporte está en marcha; una base de conocimiento fundamentada y citada es lo que hace que uno sea confiable.

Rastrea cualquier sitio a markdown limpio para tu bot

Preguntas frecuentes

¿Cómo construyo una base de conocimiento para chatbots desde un sitio web?

Rastrea el sitio para obtener markdown limpio, divide cada página en fragmentos basados en encabezados con la URL de la fuente adjunta, incrusta los fragmentos en una base de datos vectorial, y en el momento de la consulta recupera los fragmentos más relevantes para fundamentar la respuesta del modelo. Programa un nuevo rastreo para mantenerlo actualizado. Este enfoque RAG significa que al editar un documento, el conocimiento del bot se actualiza sin necesidad de reentrenamiento.

¿Necesito entrenar un modelo con mi contenido?

No — y para un bot de soporte no deberías. El ajuste fino es lento, costoso y se vuelve obsoleto cada vez que cambia tu contenido. La generación aumentada por recuperación mantiene el conocimiento en un almacén vectorial fuera del modelo, por lo que el bot siempre responde desde el rastreo actual. Solo vuelves a rastrear e incrustar cuando el contenido cambia, lo cual es mucho más económico que reentrenar.

¿Por qué rastrear a markdown en lugar de HTML?

El HTML sin procesar lleva navegación, anuncios, banners de cookies y scripts que añaden ruido y desperdician tu presupuesto de incrustación. Markdown mantiene la estructura significativa — encabezados, listas, tablas — mientras elimina la capa de presentación, que es lo que los LLMs ingieren más limpiamente. Una entrada más limpia significa una recuperación más relevante y menos respuestas confusas. Los bots tampoco pueden leer imágenes o videos, así que mantén la información clave en texto.

¿Cómo mantengo actualizada la base de conocimiento?

Programa re-rastreos periódicos, detecta qué páginas cambiaron, y vuelve a incrustar solo esas — los re-rastreos completos desperdician ancho de banda y recursos de cómputo. Almacena una fecha de obtención en cada fragmento para que puedas saber cuán fresca es la fuente de una respuesta, y versiona el índice para que puedas retroceder si un mal rastreo degrada la recuperación. La actualización incremental mantiene el costo proporcional al cambio real.

La canalización es el producto aquí: rastrear a markdown, fragmentar por encabezado, incrustar con fuentes, recuperar y citar, luego actualizar según un programa. Haz eso y tu bot de soporte responde desde tu contenido real, enlaza sus fuentes y se mantiene actualizado a medida que tu sitio evoluciona — la diferencia entre un bot en el que la gente confía y uno que aprenden a evitar. Para darle a un agente de IA acceso en vivo a los mismos datos a través de una interfaz estándar, consulta nuestra guía sobre el servidor MCP de QuantumProxies.

Alimenta a tu bot con datos web siempre frescos