Guía 18

Chatbots con RAG: generación aumentada por recuperación para respuestas basadas en tus documentos

Un modelo solo sabe lo que aprendió en su entrenamiento y lo que pones en el prompt. RAG es la disciplina de poner ahí los pocos párrafos correctos.

Guía2 min de lecturaActualizado

El ciclo

  1. Ingesta: recoge documentos, límpialos y divídelos en fragmentos.
  2. Indexación: calcula un embedding para cada fragmento y guárdalo con metadatos (URL de origen, título, fecha, grupo de acceso).
  3. Recuperación: para cada pregunta, encuentra los fragmentos más relevantes.
  4. Generación: da al modelo la pregunta y esos fragmentos y pídele que responda solo a partir de ellos, con citas.

Fragmentación

  • Divide primero por estructura (encabezados, párrafos) y luego por tamaño. Unos cientos de tokens por fragmento con un pequeño solapamiento es un punto de partida habitual; ajústalo con evaluación, no por intuición.
  • Conserva la ruta de encabezados en cada fragmento ("Facturación > Reembolsos > Planes anuales") para que se entienda por sí solo.
  • Guarda el texto original y un ID estable para actualizar o borrar fragmentos cuando cambie la fuente.

Recuperación

  • La búsqueda semántica con embeddings encuentra paráfrasis. La búsqueda por palabras clave (BM25) encuentra códigos exactos, nombres y mensajes de error. La búsqueda híbrida que combina ambas suele ser más robusta que cualquiera por separado.
  • Un reranker que puntúa los 20 a 50 mejores candidatos frente a la pregunta suele mejorar mucho la precisión.
  • Filtra por metadatos antes de ordenar: idioma, versión del producto y, sobre todo, lo que la persona que pregunta puede ver.

Prompt con contexto

Responde usando solo las fuentes de abajo. Cítalas como [1], [2].
Si las fuentes no contienen la respuesta, di que no lo sabes y sugiere contactar con soporte.

<sources>
[1] (Política de reembolsos, actualizada 2026-03-01) ...
[2] (FAQ de planes) ...
</sources>

Envuelve el texto recuperado en delimitadores e indica al modelo que son datos. Los documentos pueden contener instrucciones escritas por otra persona; consulta defensa contra inyección de prompts. Crea y prueba prompts con el constructor de prompts y mide tamaños con el estimador de tokens.

Permisos y actualización

  • Nunca indexes contenido en un espacio compartido confiando en que el prompt lo oculte. Aplica el control de acceso en la consulta de recuperación.
  • Vuelve a ingerir al cambiar (webhooks del CMS o una tarea programada) y muestra la fecha de la fuente en las respuestas.
  • Elimina pronto del índice los documentos borrados, sobre todo los datos personales.

Evaluación

Crea un conjunto de preguntas reales con los documentos fuente esperados y respuestas de referencia. Mide:

  • Recall de recuperación: ¿está el fragmento correcto entre los k primeros?
  • Fundamentación: ¿cada afirmación está respaldada por la fuente citada?
  • Calidad y negativas: ¿dice "no lo sé" cuando debe?

Repite la evaluación cada vez que cambies la fragmentación, el modelo de embeddings, el prompt o el LLM. Consulta pruebas de bots.

Fallos habituales

  • Respuestas de la memoria del modelo en lugar de las fuentes: endurece la instrucción y baja la temperatura.
  • Documento correcto, fragmento equivocado: mejora los cortes o añade un reranker.
  • Respuestas desactualizadas: el índice está obsoleto o no se borraron versiones antiguas.

Comprueba lo aprendido

1. ¿Dónde deben aplicarse los permisos de los documentos?
2. ¿Por qué combinar búsqueda por palabras y semántica?