Saltar al contenido
GD Data
Todos los artículos
IA y Machine LearningLLM

Qué es RAG? Generación aumentada por recuperación explicada

La generación aumentada por recuperación ancla un modelo de lenguaje en tus propios datos, reduciendo alucinaciones sin el coste de reentrenar. Así funciona RAG.

Por GD Data 10 min de lectura
Ilustración abstracta de un modelo de lenguaje conectado a nodos de documentos por líneas luminosas sobre fondo claro

Un modelo de lenguaje de gran tamaño es seguro de sí mismo, fluido y completamente ajeno a tu negocio. Pregúntale por tus precios, tus manuales internos o las cifras del último trimestre y responderá con la misma soltura con la que responde a todo lo demás; solo que no acertará. El conocimiento que tiene está congelado en el momento del entrenamiento y procede de la internet pública, no de tus sistemas. La generación aumentada por recuperación, o RAG, es el patrón que cierra esa brecha: permite que el modelo consulte tus datos antes de responder.

RAG se ha convertido discretamente en la arquitectura por defecto para aplicaciones empresariales de LLM, y con razón. Es la forma más barata, más rápida y más auditable de poner un modelo a trabajar sobre conocimiento que nunca vio durante el entrenamiento. Este artículo explica qué es en realidad RAG, por qué supera a las alternativas, cómo funciona cada fase del pipeline y adónde va a parar el verdadero esfuerzo de ingeniería cuando pasas de la demo.

Qué es en realidad la generación aumentada por recuperación

RAG es una idea sencilla con mucha ingeniería detrás. En lugar de depender solo de lo que el modelo aprendió durante el entrenamiento, le das una forma de recuperar información relevante de una fuente autorizada en el momento de la pregunta y, después, responder usando ese contexto recuperado. El modelo sigue haciendo el razonamiento y la redacción; los hechos vienen de ti.

Mecánicamente, colocas un sistema de recuperación delante del modelo. Cuando llega una pregunta, buscas en tu propio contenido los pasajes con más probabilidad de responderla, pegas esos pasajes en el prompt e instruyes al modelo a responder a partir de ellos. El conocimiento paramétrico del modelo (lo que memorizó en el entrenamiento) queda respaldado por conocimiento no paramétrico (lo que recuperaste en tiempo de ejecución). Esa separación es el núcleo de todo, y corrige los modos de fallo que hacen que los LLM en crudo sean arriesgados en producción:

  • Alucinación: anclado en pasajes recuperados, el modelo tiene mucho menos margen para inventar. Está respondiendo a un examen de libro abierto en vez de recitar de memoria.
  • Conocimiento desactualizado: el entrenamiento de un modelo tiene una fecha de corte, y todo lo posterior es invisible. Actualiza los documentos subyacentes y las respuestas se actualizan con ellos, sin reentrenar y sin nuevo despliegue.
  • Sin procedencia: como sabes exactamente qué pasajes se recuperaron, puedes devolver citas y dejar que los usuarios verifiquen las afirmaciones en la fuente. En trabajo regulado, jurídico o clínico, esa trazabilidad suele ser innegociable.
  • Control de acceso: el conocimiento vive en un repositorio que posees, así que puedes filtrar la recuperación según quién pregunta. Un modelo que memorizó los datos no puede olvidarlos para un usuario; una capa de recuperación puede simplemente no devolverlos.

Por qué no reentrenar o ajustar el modelo?

Es la primera pregunta de todo equipo, así que conviene responderla en serio, porque los tres enfoques resuelven problemas distintos.

Reentrenar o continuar el preentrenamiento de un modelo fundacional con tus datos es enormemente caro y lento, requiere un equipo de ML serio y presupuesto de GPU, y hay que repetirlo cada vez que los datos cambian. Para una base de conocimiento que cambia cada semana, es inviable de entrada.

El ajuste fino (fine-tuning) es bastante más barato, pero enseña al modelo forma mucho mejor que hechos: tono, formato, estilo de la casa, cómo seguir un tipo concreto de instrucción. Es malo inyectando conocimiento específico y cambiante, y cristaliza lo que aprende en los pesos, por lo que una corrección implica otro entrenamiento. Peor aún, ajustar sobre un corpus estrecho puede hacer que el modelo olvide capacidad general.

RAG mantiene el conocimiento fuera del modelo, donde debe estar. Tus datos permanecen en un sistema que controlas, puedes cambiarlos en segundos y puedes imponer quién tiene permiso para ver qué. Añadir un documento es un insert, no un trabajo de entrenamiento. Para la mayoría de los problemas de “responder preguntas sobre nuestro propio contenido”, esa es la arquitectura correcta.

No son mutuamente excluyentes. Un patrón de producción habitual es ajustar un modelo más pequeño para el comportamiento (responder en este formato, citar siempre, rechazar con cortesía ante la duda) y usar RAG para el conocimiento. El fine-tuning moldea cómo habla el modelo; RAG decide lo que sabe.

Cómo funciona RAG, paso a paso

Por dentro, un sistema RAG es un pipeline de recuperación acoplado a un paso de generación. Hay una mitad offline que prepara el conocimiento y una mitad online que responde a las preguntas. Importan cuatro fases.

1. Preparar e indexar la base de conocimiento

Toma tu material de origen; documentos, páginas de wiki, tickets, filas de bases de datos, PDF, y divídelo en fragmentos. La fragmentación (chunking) no es un trámite: fragmentos demasiado grandes diluyen la frase relevante en ruido y agotan el presupuesto de tokens; fragmentos demasiado pequeños quitan el contexto necesario para entenderlos. Divide en fronteras semánticas como títulos, secciones y párrafos, no por un recuento fijo de caracteres, manteniendo algo de solapamiento entre fragmentos para que una frase que cruza una frontera no quede huérfana. Lleva metadatos con cada fragmento (fuente, título, autor, fecha, permisos); los usarás después para filtrar y citar.

Cada fragmento pasa luego por un modelo de embedding, que convierte su significado en un vector, una lista de números posicionada de modo que textos con significado parecido queden cerca en el espacio. Esos vectores van a una base de datos vectorial (o un índice vectorial dentro de tu repositorio actual) capaz de responder rápido a “qué fragmentos están más cerca de este punto?”, usando un algoritmo de vecino más cercano aproximado para mantenerse rápido sobre millones de vectores.

2. Recuperar el contexto relevante

Cuando un usuario pregunta algo, genera el embedding de la consulta con el mismo modelo y busca en el índice los fragmentos más cercanos; los pasajes más parecidos en significado, no solo en la redacción. Aquí es donde los sistemas ingenuos fallan en silencio, así que la recuperación en producción suele ir más lejos:

  • Búsqueda híbrida combina la similitud vectorial densa con un método de palabras clave (BM25). Los vectores manejan paráfrasis y sinónimos; la búsqueda por palabras clave acierta con términos exactos, códigos de producto y nombres raros que los embeddings difuminan.
  • Filtrado por metadatos restringe la búsqueda de entrada (este cliente, documentos posteriores a una fecha, solo contenido que este usuario puede ver), lo que es a la vez una mejora de relevancia y tu frontera de control de acceso.
  • Reordenación (re-ranking) recupera un conjunto amplio de candidatos y luego usa un cross-encoder para puntuar cada uno frente a la consulta y quedarse solo con los mejores. Es más preciso que la similitud de primera pasada, y barato porque corre sobre una lista corta en vez de sobre todo el corpus.

3. Aumentar el prompt

Ensambla los pasajes recuperados en el prompt, junto a la pregunta del usuario, con una instrucción de sistema para responder solo a partir del contexto suministrado y para decir cuándo el contexto no contiene la respuesta. El orden y el presupuesto importan: los modelos atienden de forma más fiable al principio y al final de un contexto largo que a la mitad, así que coloca los pasajes más fuertes donde se van a leer y mantén el total dentro de la ventana de contexto, con margen para la respuesta. Da a cada pasaje un identificador para que el modelo pueda citar. Una plantilla mínima:

Responde a la pregunta usando solo el contexto de abajo.
Cita el id de la fuente entre corchetes tras cada afirmación.
Si el contexto no contiene la respuesta, di que no lo sabes.

Contexto:
[doc-12] {pasaje_recuperado_1}
[doc-07] {pasaje_recuperado_2}

Pregunta: {pregunta_del_usuario}

4. Mantener al día la base de conocimiento

Un sistema RAG solo está tan al día como su última indexación. Los documentos cambian, se añaden y se borran, así que vuelve a generar embeddings y a reindexar de forma programada o, mejor, en cada escritura, y asegúrate de que los borrados se propagan para que el modelo no pueda citar un documento que ya no existe. Vigila la deriva a medida que evolucionan tu modelo de embedding, la estrategia de fragmentación o la mezcla de contenidos; una reindexación es el momento de volver a correr tu conjunto de evaluación y confirmar que la calidad no ha bajado.

RAG frente a búsqueda semántica

A veces se confunden, pero están en capas distintas. La búsqueda semántica es la mitad de la recuperación; la tecnología que recorre tu base de conocimiento y devuelve pasajes por significado en vez de por palabras clave exactas, ordenados por relevancia. Responde a “qué pasajes se relacionan con esta consulta?” y te entrega una lista.

RAG usa búsqueda semántica (normalmente junto con búsqueda por palabras clave) y luego añade el paso de generación por encima, convirtiendo esa lista de pasajes en una única respuesta redactada, con citas, en lenguaje natural. En pocas palabras: la búsqueda semántica encuentra; RAG encuentra y luego explica. Una buena recuperación es lo que hace que RAG funcione, así que una capa fuerte de búsqueda semántica es un requisito previo, no un competidor. Si vuelven los pasajes equivocados, el modelo más capaz del mundo no tiene nada útil en lo que anclarse, y el resultado es una respuesta equivocada con toda la seguridad.

Dónde compensa RAG, y dónde muerde

RAG brilla allí donde el valor está en tu propio contenido: asistentes de conocimiento interno, soporte al cliente sobre tu documentación, búsqueda en contratos o estudios, respuesta a preguntas que debe mantenerse al día y citar sus fuentes. Siempre que la respuesta honesta es “depende de lo que digan nuestros documentos”, RAG es el encaje natural.

La salvedad honesta es que RAG desplaza el problema difícil en vez de eliminarlo. La calidad de la respuesta está limitada por la calidad de la recuperación, y esta depende de trabajo poco vistoso:

  • Los fallos de recuperación son la causa principal de malas respuestas; el fragmento correcto nunca se recuperó, así que ninguna magia de prompt salva la respuesta. Mide la recuperación por sí sola, con un conjunto etiquetado de preguntas y los pasajes que deberían responderlas, y sigue el recall antes de tocar el modelo.
  • La evaluación tiene que ser sistemática. Construye un conjunto de prueba de preguntas reales con el comportamiento esperado y córrelo en cada cambio, puntuando tanto la recuperación (recuperamos los pasajes correctos?) como la generación (fue la respuesta fundamentada y correcta?). Sin esto, estás ajustando a ciegas.
  • La observabilidad significa registrar la consulta, los fragmentos recuperados y la respuesta final, para que, cuando un usuario reporte una mala respuesta, puedas ver si la culpa fue de la recuperación o de la generación.
  • La gobernanza es una ventaja genuina de RAG, pero solo si la usas: impón permisos en el momento de la recuperación, mantén un rastro de auditoría mediante las citas e impide que fragmentos sensibles lleguen siquiera a entrar en un prompt.
  • El coste y la latencia se acumulan; cada pregunta implica ahora una llamada de embedding, una búsqueda vectorial, a menudo una reordenación y un prompt más grande. El caching, unos límites sensatos de top-k y dimensionar bien el modelo lo mantienen económico a escala.

Una demo lleva una tarde; un sistema en el que puedas confiar frente a clientes lleva ingeniería de verdad. Los equipos que tienen éxito tratan la calidad de la recuperación como una métrica que monitorizan, no una casilla que marcan una vez.

Conclusión

RAG es la forma más fiable de hacer útil un modelo de lenguaje sobre datos con los que nunca se entrenó, sin el coste de reentrenar y con la procedencia que exige el trabajo regulado y de alto riesgo. Trátalo como un problema de datos primero y un problema de modelo después: acierta en la fragmentación y la recuperación, mantén al día la base de conocimiento, impón los accesos en la capa de recuperación y mide ambas mitades del pipeline. Haz eso y el modelo pasa a ser la parte fácil. Si estás valorando RAG para tus propios datos, de eso trata exactamente nuestro trabajo en IA y machine learning e ingeniería de datos, y estaremos encantados de comentarlo contigo.

¿Listo para ponerlo en práctica?

Envíanos un mensaje y revisamos dónde encajan estas ideas en tu stack.

Hablemos
Reservar llamada