> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ouraicalling.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Base de conocimientos (RAG)

> Deja que los asistentes respondan con tus documentos mediante generación aumentada por recuperación

Una base de conocimientos hace que tus documentos se puedan consultar **durante una llamada en vivo**. Cuando quien llama pregunta algo que tu material cubre —precios, políticas, horarios de apertura, detalles de producto—, el asistente recupera los pasajes relevantes y responde a partir de ellos en lugar de improvisar.

## Cómo funciona

1. **Sube** documentos a una base de conocimientos: PDF, Word (DOCX), HTML o texto plano.
2. La plataforma **extrae el texto, lo divide en fragmentos superpuestos** (\~500 tokens) y calcula los embeddings vectoriales.
3. Cada documento avanza por una cadena de estados: `processing → ready` (o `error` con un mensaje). Si actualizas un documento, se reindexa automáticamente.
4. Adjunta la base de conocimientos a un asistente. Durante las llamadas, el asistente recibe una herramienta `search_knowledgebase` y la usa cuando la pregunta lo requiere.
5. La recuperación es semántica (similitud vectorial), así que quien llama no necesita usar la redacción exacta de tu documento.

<Note>
  Mientras el asistente busca, puede decir una frase breve de relleno ("Déjame comprobarlo…") para que quien llama nunca escuche silencio muerto. Cada búsqueda queda registrada como un evento de llamada, visible en el detalle de la llamada.
</Note>

## Crear una base de conocimientos

<Steps>
  <Step title="Crear">
    Ve a **Bases de conocimiento → Nueva**, ponle un nombre y una descripción breve. La descripción se le muestra al asistente: escríbela como una pista: *"Precios, horarios de apertura y política de cancelación de Example GmbH."*
  </Step>

  <Step title="Sube documentos">
    Arrastra archivos PDF, DOCX, HTML o de texto. Espera a que cada uno llegue a **ready**.
  </Step>

  <Step title="Prueba la búsqueda">
    Usa la **búsqueda de prueba** integrada para lanzar preguntas de ejemplo contra el índice y comprobar qué fragmentos devuelve, antes de que lo haga cualquier persona que llame.
  </Step>

  <Step title="Adjúntala a un asistente">
    En el editor del asistente, selecciona la base de conocimientos. Listo: no hace falta tocar el prompt.
  </Step>
</Steps>

## Cómo escribir documentos que se recuperen bien

* Prefiere **secciones autocontenidas**: un título con los datos justo debajo. Los fragmentos se recuperan de forma individual, así que cada sección debe tener sentido por sí sola.
* Incluye **números y condiciones en el texto**, no solo en tablas repartidas entre páginas.
* Evita documentos duplicados o contradictorios: la recuperación mostrará ambos.
* Mantén un solo tema por documento cuando sea posible (pricing.pdf, faq.pdf, policy.pdf).

## Rastrear un sitio web

En lugar de subir archivos uno a uno, puedes apuntar una base de conocimientos a un **sitio web** y dejar que el rastreador importe las páginas por ti. Cada página rastreada se convierte en un documento de conocimiento y se indexa igual que si la hubieras subido.

<Steps>
  <Step title="Añade una fuente de rastreo">
    En la base de conocimientos, añade una **fuente de rastreo** con una **URL raíz** (por ejemplo, `https://example.com/docs`). Opcionalmente, restríngela a prefijos de ruta (**rutas incluidas**, por ejemplo, `/docs`), excluye secciones con **rutas excluidas** (por ejemplo, `/admin`), y define un límite de **páginas máximas** (1-500, 50 por defecto).
  </Step>

  <Step title="Ejecútalo">
    Inicia un rastreo. El rastreador lee `robots.txt`, luego descubre páginas a través de `sitemap.xml` (si no lo encuentra, sigue enlaces del mismo host desde la página raíz), extrae el texto principal de cada página y lo indexa.
  </Step>

  <Step title="Mantenlo actualizado (opcional)">
    Activa la **sincronización automática** y un **intervalo de sincronización** (en horas). La plataforma vuelve a rastrear el sitio según lo programado. Las páginas cuyo contenido no ha cambiado se omiten automáticamente: sin volver a generar embeddings, sin coste adicional.
  </Step>
</Steps>

<Note>
  El rastreo de sitios web y la sincronización automática son **funciones del plan** (se habilitan según tu plan) y se facturan como **créditos de uso por página rastreada** (solo cuentan las páginas nuevas o modificadas). Volver a rastrear un sitio sin cambios es, en la práctica, gratis. Si tu saldo se agota a mitad del rastreo, la ejecución se detiene de forma controlada: las páginas ya obtenidas se conservan y la fuente muestra el estado `error` con el mensaje *créditos insuficientes*.
</Note>

### Límites del rastreador

* **Solo HTML estático**: sin renderizado de JavaScript. Las aplicaciones de una sola página que generan el contenido en el cliente (sin HTML del lado del servidor) devolverán poco o ningún texto.
* **Solo el mismo host.** No se siguen enlaces a otros dominios.
* **Solo páginas de texto**: se omiten las respuestas que no sean HTML y las páginas de más de 2 MB. Los archivos enlazados (PDF, etc.) no se descargan durante el rastreo; añádelos en su lugar como URLs de documento.
* **Cortesía**: como máximo 2 solicitudes en paralelo con una pequeña pausa entre ellas, y se respetan las reglas `Disallow` de `robots.txt`.

## Límites y planes

El número de bases de conocimiento por cuenta es un límite del plan (`max_knowledgebases`). El rastreo de sitios web cobra créditos por página rastreada (consulta la nota anterior).

Cada base de conocimiento tiene además estos topes fijos:

| Recurso                                    | Límite                                |
| ------------------------------------------ | ------------------------------------- |
| Archivos                                   | 25 por base (máx. 20 MB cada uno)     |
| URL (páginas sueltas + páginas rastreadas) | 500                                   |
| Fragmentos de texto                        | 50                                    |
| CSV / TSV                                  | 1.000 filas y 50 columnas             |
| Rutas excluidas del crawl                  | 200 por fuente, 500 en total por base |
