<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>Rag Desde Cero · DacaCode &lt;/&gt;</title><link>https://blog.dacadev.com/series/rag-desde-cero/</link><description>Blog de tecnología, programación y electrónica, para compartir conocimientos, experiencias y tutoriales con este apasionante mundo.</description><generator>Hugo</generator><language>es-CO</language><copyright>Copyright © 2026 DacaDev. All rights reserved.</copyright><lastBuildDate>Mon, 13 Jul 2026 00:00:00 -0500</lastBuildDate><atom:link href="https://blog.dacadev.com/series/rag-desde-cero/index.xml" rel="self" type="application/rss+xml"/><image><url>https://blog.dacadev.com/images/blog-logo.png</url><title>DacaCode &lt;/&gt;</title><link>https://blog.dacadev.com/</link></image><item><title>RAG: Qué es y Cómo Funciona Retrieval Augmented Generation</title><link>https://blog.dacadev.com/generative-ai/rag/que-es-un-rag/</link><pubDate>Mon, 13 Jul 2026 00:00:00 -0500</pubDate><guid>https://blog.dacadev.com/generative-ai/rag/que-es-un-rag/</guid><dc:creator>Dacadev</dc:creator><category>IA generativa</category><description>Descubre qué es un RAG, cómo Retrieval Augmented Generation resuelve las alucinaciones de los LLMs y por qué es clave en la IA generativa.</description><media:content url="https://blog.dacadev.com/images/generative-ai/rag/01-que-es-un-rag/banner.png" medium="image" type="image/png"/><content:encoded>
&lt;details class="table-of-content "&gt;
 &lt;summary&gt;
 
 Tabla de Contenido
 
 &lt;/summary&gt;
 &lt;nav id="TableOfContents"&gt;
 &lt;ol&gt;
 &lt;li&gt;&lt;a href="#las-limitaciones-estructurales-de-los-llms"&gt;Las limitaciones estructurales de los LLMs&lt;/a&gt;
 &lt;ol&gt;
 &lt;li&gt;&lt;a href="#alucinaciones"&gt;Alucinaciones&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#conocimiento-con-fecha-de-corte"&gt;Conocimiento con fecha de corte&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#ausencia-de-conocimiento-privado"&gt;Ausencia de conocimiento privado&lt;/a&gt;&lt;/li&gt;
 &lt;/ol&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#alternativas-antes-de-llegar-a-rag"&gt;Alternativas antes de llegar a RAG&lt;/a&gt;
 &lt;ol&gt;
 &lt;li&gt;&lt;a href="#agentes"&gt;Agentes&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#fine-tuning"&gt;Fine-tuning&lt;/a&gt;&lt;/li&gt;
 &lt;/ol&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#qué-es-un-rag-retrieval-augmented-generation"&gt;Qué es un RAG (Retrieval Augmented Generation)&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#cómo-funciona-un-rag-a-alto-nivel"&gt;Cómo funciona un RAG a alto nivel&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#ventajas-de-adoptar-un-rag"&gt;Ventajas de adoptar un RAG&lt;/a&gt;&lt;/li&gt;
 &lt;/ol&gt;
&lt;/nav&gt;
&lt;/details&gt;

&lt;p&gt;Supongamos que debemos desplegar un asistente conversacional sobre la documentación interna de una organización: manuales técnicos, contratos y políticas que se actualizan cada semana. El modelo base responde con fluidez sobre conocimiento general, pero desconoce por completo esos documentos privados e inventa respuestas con total seguridad cuando se le pregunta por ellos. Aquí es donde &lt;strong&gt;RAG (Retrieval Augmented Generation)&lt;/strong&gt; se convierte en la aproximación arquitectónica más rentable para dotar a un &lt;strong&gt;LLM&lt;/strong&gt; de información precisa, privada y actualizada.&lt;/p&gt;




 
 





 


&lt;div class="notice note"&gt;
 &lt;div class="notice-head"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" width="22" height="22" stroke-width="1.5" stroke="currentColor"&gt;
 &lt;path stroke-linecap="round" stroke-linejoin="round" d="m16.862 4.487 1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L6.832 19.82a4.5 4.5 0 0 1-1.897 1.13l-2.685.8.8-2.685a4.5 4.5 0 0 1 1.13-1.897L16.863 4.487Zm0 0L19.5 7.125" /&gt;
 &lt;/svg&gt;
 &lt;p&gt;Note&lt;/p&gt;
 
 &lt;/div&gt;
 &lt;div class="notice-body"&gt;&lt;p&gt;Este es el primer artículo de la serie &lt;strong&gt;RAG desde cero&lt;/strong&gt;. Al terminar podrás explicar qué es un RAG, cómo funciona a alto nivel y por qué se ha vuelto una pieza central en el diseño de aplicaciones de IA generativa. 🚀&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h2 id="las-limitaciones-estructurales-de-los-llms"&gt;Las limitaciones estructurales de los LLMs&lt;/h2&gt;
&lt;p&gt;Antes de definir qué es un RAG, es crucial entender las limitaciones de los LLMs que esta técnica resuelve. Un modelo de lenguaje, por potente que sea, arrastra tres restricciones inherentes a la forma en que fue entrenado.&lt;/p&gt;
&lt;h3 id="alucinaciones"&gt;Alucinaciones&lt;/h3&gt;
&lt;p&gt;Las &lt;strong&gt;alucinaciones&lt;/strong&gt; son uno de los problemas más severos de los LLMs. Consisten en que el modelo responde con información incorrecta o inventada, pero con un nivel de confianza que induce al usuario a asumirla como válida.&lt;/p&gt;
&lt;p&gt;En aplicaciones comerciales esto representa un riesgo directo: si la información de entrada es incorrecta, todo el proceso que dependa de ella heredará el error. Consideremos un asistente en el dominio médico; una respuesta errónea sobre la dosificación de un medicamento puede tener consecuencias fatales. La confianza aparente del modelo no es un indicador de veracidad.&lt;/p&gt;
&lt;h3 id="conocimiento-con-fecha-de-corte"&gt;Conocimiento con fecha de corte&lt;/h3&gt;
&lt;p&gt;Los LLMs se entrenan con grandes volúmenes de datos públicos —libros, artículos, páginas web— hasta una &lt;strong&gt;fecha de corte&lt;/strong&gt; determinada. Todo evento posterior a esa fecha queda fuera de su conocimiento.&lt;/p&gt;
&lt;p&gt;Si un modelo fue entrenado con datos hasta 2025, no dispone de información sobre hechos ocurridos después. Ante una consulta de este tipo, el modelo o bien reconoce su desconocimiento, o bien alucina para completar la respuesta.&lt;/p&gt;
&lt;h3 id="ausencia-de-conocimiento-privado"&gt;Ausencia de conocimiento privado&lt;/h3&gt;
&lt;p&gt;Al entrenarse sobre datos públicos, los LLMs no tienen acceso a datos privados: manuales internos, contratos, bases de conocimiento corporativas o historiales de clientes. Esta es una limitación esperada, pero decisiva.&lt;/p&gt;
&lt;p&gt;La alternativa que uno creeria de adjuntar todos los documentos privados en cada conversación no es técnicamente viable, implica un consumo desmedido de tokens y latencia en cada llamada, además de chocar contra los límites de la ventana de contexto.&lt;/p&gt;
&lt;pre class="mermaid"&gt;flowchart TD
 L[🧠 LLM entrenado con datos públicos]
 L --&amp;gt; A[❌ Alucinaciones&amp;lt;br/&amp;gt;respuestas inventadas]
 L --&amp;gt; B[❌ Fecha de corte&amp;lt;br/&amp;gt;sin datos recientes]
 L --&amp;gt; C[❌ Sin conocimiento privado&amp;lt;br/&amp;gt;manuales, contratos, datos internos]
&lt;/pre&gt;

&lt;h2 id="alternativas-antes-de-llegar-a-rag"&gt;Alternativas antes de llegar a RAG&lt;/h2&gt;
&lt;p&gt;RAG no es la única técnica para inyectar conocimiento en un LLM. Es importante situarla frente a otras dos aproximaciones habituales y comprender sus contrapartidas.&lt;/p&gt;
&lt;h3 id="agentes"&gt;Agentes&lt;/h3&gt;
&lt;p&gt;Los &lt;strong&gt;agentes&lt;/strong&gt; han ganado tracción gracias a las amplias ventanas de contexto actuales, que permiten al modelo procesar grandes cantidades de información para resolver tareas complejas de manera autonoma. Sin embargo, cuando el volumen documental es elevado, el agente debería leer toda la información en cada ejecución.&lt;/p&gt;
&lt;p&gt;Incluso apoyándose en mecanismos de caché, el costo en tokens y tiempo escala de forma prohibitiva. Procesar íntegramente un manual extenso solo para resolver una consulta puntual es análogo a recorrer una biblioteca completa para responder una única pregunta: funciona, pero es ineficiente.&lt;/p&gt;
&lt;h3 id="fine-tuning"&gt;Fine-tuning&lt;/h3&gt;
&lt;p&gt;El &lt;strong&gt;fine-tuning&lt;/strong&gt; consiste en reentrenar un LLM sobre datos específicos para ajustar sus pesos y especializarlo en un dominio. Esta técnica genera una nueva versión del modelo con el conocimiento incorporado directamente en sus parámetros.&lt;/p&gt;
&lt;p&gt;El problema es su costo operativo: requiere tiempo, recursos y datos de entrenamiento cuidados. Además, cada vez que la información cambia, es necesario reentrenar. En un escenario donde los datos se actualizan cada semana, o cada día, el fine-tuning se vuelve inviable como estrategia principal.&lt;/p&gt;




 
 





 


&lt;div class="notice info"&gt;
 &lt;div class="notice-head"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" width="22" height="22"&gt;
 &lt;path stroke-linecap="round" stroke-linejoin="round" d="m11.25 11.25.041-.02a.75.75 0 0 1 1.063.852l-.708 2.836a.75.75 0 0 0 1.063.853l.041-.021M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9-3.75h.008v.008H12V8.25Z" /&gt;
 &lt;/svg&gt;
 &lt;p&gt;Info&lt;/p&gt;
 
 &lt;/div&gt;
 &lt;div class="notice-body"&gt;&lt;p&gt;Estas alternativas no son deficientes; simplemente resuelven problemas distintos. Los &lt;strong&gt;agentes&lt;/strong&gt; son idóneos para explorar código o ejecutar flujos de trabajo dinámicos, y el &lt;strong&gt;fine-tuning&lt;/strong&gt; brilla cuando el conocimiento es estable y muy específico. RAG destaca precisamente donde estas fallan: conocimiento amplio, cambiante y verificable.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h2 id="qué-es-un-rag-retrieval-augmented-generation"&gt;Qué es un RAG (Retrieval Augmented Generation)&lt;/h2&gt;
&lt;p&gt;Un &lt;strong&gt;RAG (Retrieval Augmented Generation)&lt;/strong&gt; es una técnica que recupera información relevante desde una fuente de datos externa y la incorpora al contexto del LLM en tiempo de inferencia, de modo que el modelo pueda responder con información verídica y actualizada.&lt;/p&gt;
&lt;p&gt;La idea central es desacoplar el conocimiento del modelo. En lugar de codificar los datos en los pesos, como hace el fine-tuning, o de arrastrar todo el corpus en cada llamada, como hace un agente, el RAG selecciona únicamente los fragmentos pertinentes para cada consulta y los añade al prompt.&lt;/p&gt;
&lt;p&gt;Analicemos un caso concreto. Supongamos un modelo cuyo conocimiento llega hasta mayo de 2026 y le preguntamos por un evento posterior a esa fecha:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;prompt: ¿Qué equipos jugarán la semifinal de la Copa del Mundo 2026?
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;LLM: Lo siento, no dispongo de información sobre los equipos que jugarán
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; la semifinal de la Copa del Mundo 2026. Mi conocimiento está
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; actualizado hasta mayo de 2026.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Ahora enriquezcamos ese mismo prompt con un bloque de contexto recuperado desde una fuente externa:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;prompt: ¿Qué equipos jugarán la semifinal de la Copa del Mundo 2026?
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;----- contexto inyectado -----
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Contexto: Los equipos que disputarán la semifinal de la Copa del Mundo 2026 son:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- Francia
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- España
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- Inglaterra
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- Argentina
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;----- fin del contexto -----
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;LLM: Los equipos que jugarán la semifinal de la Copa del Mundo 2026 son
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Francia, España, Inglaterra y Argentina.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;La diferencia está en el campo de &lt;strong&gt;contexto&lt;/strong&gt;. Ese bloque, recuperado dinámicamente, es lo que permite al modelo responder con precisión sin haber sido entrenado con esa información. En esto consiste, en esencia, un RAG: obtener el conocimiento relevante desde una fuente de datos y aumentar con él el contexto del LLM.&lt;/p&gt;
&lt;p&gt;Si pensamos esto en el caso de la documentación extensa, un RAG permite extraer las secciones pertinentes de un manual o contrato y añadirlas al prompt, de modo que el modelo pueda responder con información verídica y actualizada sin necesidad de reentrenar ni de procesar todo el documento en cada consulta. Es decir que solo cargamos una parte del documento y no todo su contenido.&lt;/p&gt;
&lt;h2 id="cómo-funciona-un-rag-a-alto-nivel"&gt;Cómo funciona un RAG a alto nivel&lt;/h2&gt;
&lt;p&gt;Su nombre describe con exactitud las tres fases del proceso: &lt;strong&gt;Retrieval&lt;/strong&gt; (recuperación), &lt;strong&gt;Augmented&lt;/strong&gt; (aumento) y &lt;strong&gt;Generation&lt;/strong&gt; (generación).&lt;/p&gt;




 
 
 
 &lt;div class="flex justify-center"&gt;
 &lt;img
 src="https://blog.dacadev.com/images/generative-ai/rag/01-que-es-un-rag/rag-diagram_hu_ae75a4373e1dc204.webp"
 alt="Imagen guia del contenido de la página"/&gt;
 &lt;/div&gt;
 
 
 


&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Retrieval (Recuperación)&lt;/strong&gt;: ante una consulta del usuario, el sistema busca en una base de conocimiento externa los fragmentos de información más relevantes. Esta búsqueda suele apoyarse en similitud semántica, un mecanismo que abordaremos en detalle más adelante en la serie.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Augmented (Aumento)&lt;/strong&gt;: los fragmentos recuperados se combinan con la consulta original para construir un prompt enriquecido. El modelo recibe así, junto a la pregunta, el contexto necesario para responderla.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Generation (Generación)&lt;/strong&gt;: el LLM genera la respuesta final apoyándose en el contexto inyectado, no solo en su conocimiento paramétrico.&lt;/li&gt;
&lt;/ul&gt;




 
 





 


&lt;div class="notice tip"&gt;
 &lt;div class="notice-head"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" width="22" height="22"&gt;
 &lt;path stroke-linecap="round" stroke-linejoin="round" d="M15.362 5.214A8.252 8.252 0 0 1 12 21 8.25 8.25 0 0 1 6.038 7.047 8.287 8.287 0 0 0 9 9.601a8.983 8.983 0 0 1 3.361-6.867 8.21 8.21 0 0 0 3 2.48Z" /&gt;
 &lt;path stroke-linecap="round" stroke-linejoin="round" d="M12 18a3.75 3.75 0 0 0 .495-7.468 5.99 5.99 0 0 0-1.925 3.547 5.975 5.975 0 0 1-2.133-1.001A3.75 3.75 0 0 0 12 18Z" /&gt;
 &lt;/svg&gt;
 &lt;p&gt;Tip&lt;/p&gt;
 
 &lt;/div&gt;
 &lt;div class="notice-body"&gt;&lt;p&gt;La calidad de un RAG depende directamente de la fase de recuperación. Si los fragmentos recuperados son irrelevantes o incompletos, el modelo generará una respuesta pobre por muy capaz que sea. En RAG, la máxima &amp;ldquo;basura entra, basura sale&amp;rdquo; aplica con especial fuerza.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h2 id="ventajas-de-adoptar-un-rag"&gt;Ventajas de adoptar un RAG&lt;/h2&gt;
&lt;p&gt;Más allá de mitigar las limitaciones descritas, el patrón RAG ofrece beneficios concretos de ingeniería:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Eficiencia y costo&lt;/strong&gt;: aporta conocimiento profundo y específico al modelo sin el costo de reentrenar ni de procesar el documento completo en cada llamada.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Información verificable&lt;/strong&gt;: al recuperar fragmentos de fuentes reales, el modelo puede &lt;strong&gt;citar&lt;/strong&gt; su origen, de modo que el usuario contraste la respuesta con la fuente original.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Actualización simple&lt;/strong&gt;: mantener el sistema al día se reduce a actualizar la base de conocimiento, sin tocar el modelo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reducción de alucinaciones&lt;/strong&gt;: al fundamentar la respuesta en datos recuperados, disminuye de forma significativa la probabilidad de que el modelo invente información.&lt;/li&gt;
&lt;/ul&gt;




 
 





 


&lt;div class="notice warning"&gt;
 &lt;div class="notice-head"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" width="22" height="22"&gt;
 &lt;path stroke-linecap="round" stroke-linejoin="round" d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126ZM12 15.75h.007v.008H12v-.008Z" /&gt;
 &lt;/svg&gt;
 &lt;p&gt;Warning&lt;/p&gt;
 
 &lt;/div&gt;
 &lt;div class="notice-body"&gt;&lt;p&gt;Un RAG reduce las alucinaciones, pero no las elimina por completo. El modelo aún puede malinterpretar el contexto recuperado o combinarlo con su conocimiento paramétrico de forma incorrecta. El diseño del prompt y la evaluación rigurosa siguen siendo responsabilidad del ingeniero.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;
</content:encoded></item></channel></rss>