RAG en producción: fuentes, chunking y evaluación de calidad

Si tu sistema con RAG “iba fino” en demos pero, cuando lo usas con preguntas reales, empieza a responder con dudas, mezcla versiones o se queda corto justo cuando un equipo lo necesita, no es raro: el salto a producción exige método. En Bolmia lo vemos continuamente cuando una Agencia de IA entra a revisar proyectos que ya “estaban hechos”: casi siempre el problema no es el modelo, sino las fuentes, cómo estás partiendo el contenido y cómo estás midiendo si la respuesta es realmente fiable.

Qué cambia cuando pasas de “demo bonita” a “uso real”

La demo suele vivir en un ecosistema ideal: pocos documentos, preguntas claras y un usuario que “juega limpio”. En producción llega la realidad: gente que pregunta con prisa, con términos incompletos, con contexto implícito (“lo de siempre”), o mezclando dos temas en una frase. Y entonces el sistema hace lo que puede: recupera algo parecido, el modelo rellena huecos y la respuesta suena convincente… pero no siempre es correcta.

El primer cambio mental es aceptar que RAG no es “una feature”, es un producto interno o externo. Producto significa: métricas, mantenimiento, control de cambios y responsabilidad sobre el conocimiento. Si hoy el bot responde bien y mañana peor, necesitas saber por qué: ¿entró documentación nueva? ¿cambió el chunking? ¿se rompió el pipeline de ingesta? ¿la fuente “oficial” fue reemplazada por otra más ruidosa?

Y el segundo cambio es más incómodo: casi nunca se arregla con “un prompt mejor”. En producción, los prompts refinan el estilo y los límites, pero la calidad la deciden los datos y la recuperación. Si tu retrieval trae basura, el LLM hará poesía con basura.

Fuentes: cómo elegir conocimiento sin crear un bot contradictorio

“Metamos todo Drive y ya está” suena eficiente, pero es una trampa clásica. El RAG no distingue por jerarquía organizacional: no sabe qué documento es oficial, cuál es un borrador, cuál es una versión vieja, cuál es una conversación de Slack sacada de contexto. Solo ve texto y similitud. Y si en tu empresa conviven cinco definiciones de la misma política, el bot alternará entre ellas con total naturalidad.

Aquí es donde necesitas un criterio de entrada. Uno muy práctico: vigencia, autoridad y estructura. Vigencia: ¿cada cuánto cambia esa info y quién la actualiza? Autoridad: ¿es el “source of truth” o una copia? Estructura: ¿está escrito de forma que se pueda recuperar en piezas útiles? Si algo no cumple, no tiene sentido indexarlo “porque sí”.

En esta fase cobra valor la consultoría de inteligencia artificial bien hecha: no por postureo, sino porque te obliga a mapear quién es dueño del contenido, qué documentos son críticos y qué riesgos reales hay si el bot se equivoca. Es mejor empezar con pocas fuentes y alta calidad, que con muchas fuentes y caos. El objetivo no es “tener mucho contenido”, es “tener contenido confiable y recuperable”.

Ingesta y limpieza: el trabajo invisible que sostiene todo

La ingesta no es “subir PDFs”. Es extraer texto, normalizar formatos, detectar duplicados, separar secciones, arreglar saltos de línea y añadir metadata. Y sí, es aburrido… hasta que lo haces mal y el bot empieza a citar cosas raras.

Piensa en ejemplos reales: un PDF con encabezados repetidos en cada página, una tabla que al extraerse se vuelve un párrafo incomprensible, un documento escaneado con texto a medias, o un Notion lleno de toggles que, al exportar, se desordena. Todo eso termina en chunks defectuosos. Y un chunk defectuoso no se arregla con embeddings “más buenos”. Se arregla limpiando.

En producción es clave un concepto: versionado. Si una política cambia, ¿tu sistema sabe que cambió? ¿puedes rastrear qué versión respondió a un usuario hace dos semanas? Sin versionado, te conviertes en el típico equipo que recibe el mensaje: “el bot dijo esto” y nadie puede reproducirlo. Para evitarlo, cada documento y cada sección deberían tener identificadores estables, fechas y un rastro de cambios. Eso, además, te permite hacer rollback cuando una actualización de contenido rompe respuestas clave.

Chunking: cómo cortar el contenido para que el retrieval no tropiece

El chunking es el centro del RAG. Si cortas demasiado grande, metes ruido: el modelo recibe contexto mezclado (reglas con excepciones, productos diferentes, países distintos) y luego elige “lo que le suena” para contestar. Si cortas demasiado pequeño, pierdes la idea completa y el retrieval devuelve piezas sueltas que no sostienen una respuesta.

La solución práctica suele ser chunking semántico: respetar títulos, secciones, pasos, y mantener cada chunk como una “unidad de significado” completa. Esto es especialmente importante cuando hay procesos con excepciones (“si pasa X, aplica Y salvo que Z”). Si juntas todo en el mismo bloque, la probabilidad de que el modelo confunda la excepción con la regla sube muchísimo.

Además, en RAG de empresa hay algo que casi siempre ayuda: el solape. Un solape moderado (no exagerado) reduce el riesgo de cortar una definición a la mitad. Pero no es una receta fija: depende del tipo de contenido. Manuales técnicos, políticas legales, documentación de producto, FAQs internas… cada uno tiene patrones distintos.

Aquí entra bien el papel de embeddings: si tus chunks están bien construidos, la similitud semántica te trae “la sección exacta” con más frecuencia. Si los chunks están mal, los embeddings igual harán su trabajo… pero sobre piezas mediocres. Y luego te preguntas por qué “se acerca, pero no acierta”.

Chunking por tipo de documento: mismo sistema, reglas distintas

No deberías tratar igual un procedimiento y un catálogo. En procedimientos, el chunking por pasos suele funcionar muy bien. En catálogos, conviene agrupar por producto o categoría. En documentación con tablas, muchas veces hay que transformar: convertir filas en texto estructurado, o separar por bloques para que sea recuperable.

Y con FAQs internas, un consejo que parece obvio pero se olvida: chunk por pregunta-respuesta. La gente pregunta de forma parecida a como están redactadas las FAQs, y eso sube la precisión sin tocar nada “sofisticado”.

Si tu sistema falla con preguntas específicas (“¿qué pasa si…?”), casi siempre la respuesta está en cómo cortaste el contenido. Antes de tocar el modelo, toca esto.

Recuperación: el enfoque híbrido suele ser más estable que “solo semántico”

La recuperación puramente semántica es potente, pero en negocio real comete un pecado: trae cosas “parecidas” cuando tú necesitas “exactas”. Un ejemplo típico: dos políticas casi iguales para dos planes distintos, o dos procesos iguales con una diferencia crítica en el paso 3. Semánticamente se parecen mucho, pero operativamente no son equivalentes.

Por eso el enfoque híbrido suele ganar: semántico + keyword + filtros por metadata. Primero filtras por contexto (país, producto, equipo, vigencia), luego recuperas candidatos por similitud, y al final reordenas por señales adicionales. Ese “orden” hace que el bot parezca más inteligente, cuando lo que está pasando es que estás eliminando ambigüedad antes de que el modelo tenga que improvisar.

En conversaciones reales, este híbrido también mejora la percepción de confianza. Porque cuando el usuario ve que el bot “va a la sección exacta”, deja de sentir que le está contando algo genérico. Ahí la búsqueda semántica se convierte en una capa de UX, no solo en una pieza técnica.

La base del conocimiento: índices, actualizaciones y coherencia con el tiempo

Un RAG sin actualización se convierte en un museo. Al principio es brillante, a los dos meses empieza a “sonar raro”, a los seis meses el equipo lo ignora. Esto pasa incluso en empresas pequeñas, porque siempre hay cambios: pricing, procesos, herramientas, nombres de producto, responsables, condiciones legales.

En producción necesitas ingesta incremental: detectar cambios y reindexar solo lo necesario. Lo contrario (reindexar todo siempre) es caro, lento y propenso a errores. Además, si no controlas “qué cambió”, pierdes la capacidad de diagnosticar por qué bajó el rendimiento.

Aquí suele aparecer el componente de almacenamiento vectorial. No es magia; es infraestructura. Una vector database te permite recuperar rápido y escalar, pero no te resuelve la gobernanza ni el versionado. La parte importante es cómo decides qué entra, cómo lo etiquetas, cómo lo actualizas y cómo auditas qué fue utilizado en una respuesta. Si tu base crece sin control, tu calidad baja aunque tu tecnología sea excelente.

Un detalle muy práctico: cachear por hash de contenido. Si un chunk no cambió, no hay motivo para recalcular embeddings. Ese simple control suele bajar costes y acelera ciclos de mejora.

Calidad: cómo medir sin autoengañarte (y sin vivir de “sensaciones”)

El error más común en evaluación es medir solo “si suena bien”. En producción, “suena bien” es peligroso. Necesitas medir si recupera la evidencia correcta y si la respuesta se apoya en ella. Punto.

Para eso, define un set de evaluación. Idealmente con preguntas reales: tickets de soporte, dudas de ventas, preguntas internas repetidas, casos borde (“¿qué pasa si…?”). Si no tienes histórico, crea un set manual con gente del equipo: 30–50 preguntas ya te dan señales fuertes. Luego define qué es éxito: que la fuente correcta aparezca en los top-k, que la respuesta no invente, que cite la sección correcta, que no contradiga el documento.

En equipos maduros, esta capa se formaliza como evaluación de modelos con métricas y comparativas entre versiones. En equipos prácticos, basta con una rúbrica simple (0/1 o 0/2) por criterio. Lo importante no es hacer ciencia perfecta; es poder decir: “cambié chunking y mejoré el groundedness de 60% a 75%” en lugar de “creo que ahora va mejor”.

Preguntas “venenosas”: el test que separa un RAG serio de un juguete

Hay un tipo de preguntas que te revelan todo: las ambiguas, las que mezclan temas, las que dependen de una excepción o de una fecha. Esas son las que deberías priorizar. Si tu sistema aguanta ahí, lo demás suele caer solo.

Por ejemplo: “¿puedo cancelar si ya pasó X?” o “¿esto aplica también en Perú?” o “¿qué cambia entre plan Pro y Business?”. Si el bot contesta con algo genérico, estás perdiendo confianza. Si contesta con evidencia específica, ganas adopción.

Observabilidad: el “panel de control” que te permite mejorar sin adivinar

Cuando algo falla, necesitas saber qué pasó. Y eso implica logs y trazas: consulta, filtros, candidatos recuperados, ranking final, contexto enviado al modelo, latencia, coste, y (si aplica) feedback del usuario. Sin eso, depurar es discutir opiniones.

La observabilidad también te ayuda a priorizar: ¿dónde se va el tiempo? ¿en la búsqueda? ¿en el re-ranker? ¿en el LLM? ¿qué preguntas cuestan más tokens? ¿qué fuentes generan más fallos? Con esa información puedes optimizar de forma pragmática. Por ejemplo, ajustar el top-k, acortar contexto, cachear respuestas a preguntas frecuentes o mejorar el pipeline de limpieza de una fuente específica.

Aquí se conecta con algo que no se menciona tanto: el valor de la mejora incremental. Un RAG que reduce latencia de 8s a 3s suele aumentar uso, porque la gente deja de sentir que “interrumpe” su flujo. Y un RAG que cita bien reduce tickets de escalado (“¿esto es verdad?”). Son mejoras que parecen pequeñas, pero cambian adopción.

Seguridad: permisos, datos sensibles y el riesgo real de instrucciones maliciosas

Cuando un sistema toca documentos internos, seguridad deja de ser un checkbox. Si un usuario no debería ver un documento, ese documento no debe ni entrar en la recuperación. Porque aunque “no lo muestres”, si llega al contexto ya existe el riesgo de filtrado (directo o indirecto).

Además, está el riesgo de instrucciones dentro de documentos o dentro de conversaciones. Si alguien pega contenido con “órdenes” para el modelo, puede intentar manipularlo para que ignore reglas. Esto se conoce como prompt injection y en producción hay que asumir que va a ocurrir (a veces por accidente). Mitigaciones típicas: separar claramente las instrucciones del sistema de la evidencia, filtrar contenido sospechoso, limitar herramientas, y obligar a responder solo con soporte documental (si no hay evidencia, el bot debe admitirlo).

Y no olvides la privacidad: datos personales, información financiera, secretos comerciales. Un RAG útil suele tocar cosas delicadas. Por eso, el control de acceso y la clasificación de documentos no son extras: son parte del diseño.

Operación continua: cómo mantenerlo vivo sin que se convierta en deuda

Un RAG no se termina. Se opera. Y operarlo bien significa: feedback loop, backlog de mejoras, revisión de fuentes, y ciclos de evaluación. El camino sano suele ser:

  1. lanzar con un alcance limitado pero sólido,
  2. medir fallos reales,
  3. corregir contenido y chunking donde duele,
  4. ampliar cobertura,
  5. repetir.

Muchas mejoras no son “más IA”, son mejor contenido. Si un documento es confuso, el bot será confuso. Si la base de conocimiento está desactualizada, el bot quedará mal. Si hay contradicciones internas, el bot las heredará. En ese sentido, RAG empuja a la empresa a ordenar su conocimiento, y eso ya es un beneficio.

En proyectos maduros, esta operación se apoya en MLOps para versionar componentes, automatizar tests, controlar despliegues y evitar que un cambio rompa el sistema sin que nadie lo note. No necesitas el stack más complejo del mundo, pero sí necesitas disciplina: “cada cambio pasa por evaluación”, “cada nueva fuente tiene owner”, “cada fallo se convierte en acción”.

Cierre: un RAG fiable se construye con método, no con magia

Si estás intentando llevar RAG a producción, el orden importa. Primero define fuentes buenas y gobernadas; luego limpia e ingesta con versionado; después chunking con sentido; luego recuperación híbrida; y, encima de todo, evaluación y observabilidad como capa permanente. Cuando haces eso, el bot deja de ser una demo y se convierte en una herramienta que la gente usa sin miedo.

También te puede interesar nuestra guía sobre cómo crear una estrategia de contenidos SEO paso a paso.

Preguntas frecuentes sobre RAG en producción

1) ¿Qué es lo primero que debería revisar si el bot responde “convincente” pero se equivoca?

La calidad de las fuentes y el chunking. Si recuperas documentos desactualizados o chunks mezclados, el modelo rellenará huecos y fallará con seguridad.

2) ¿Cómo sé si mi chunking está mal hecho?

Si el sistema cita un documento correcto pero responde con matices incorrectos, o confunde excepciones con reglas. Suele ser señal de chunks demasiado grandes o sin estructura.

3) ¿Me conviene usar recuperación híbrida o solo semántica?

En escenarios reales, lo híbrido suele ser más estable: filtras por metadata (producto/país/vigencia), combinas semántico + keyword y reduces “resultados parecidos pero incorrectos”.

4) ¿Qué métricas mínimas debería medir para no ir a ciegas?

Al menos: si la fuente correcta aparece en el top-k (recuperación) y si la respuesta está realmente sustentada en esas fuentes (groundedness). Sin eso, solo hay sensaciones.

5) ¿Qué riesgos de seguridad son más comunes en RAG?

Permisos mal aplicados (el sistema recupera lo que no debería) y prompt injection (texto que intenta manipular la respuesta). La defensa empieza antes del retrieval.