Back to "RAG explicado: Orígenes y fundamentos"

This is a viewer only at the moment see the article on how this works.

To update the preview hit Ctrl-Alt-R (or ⌘-Alt-R on Mac) or Enter to refresh. The Save icon lets you save the markdown file to disk

This is a preview from the server running through my markdig pipeline

AI AI-Article LLM Machine Learning RAG Semantic Search

RAG explicado: Orígenes y fundamentos

Saturday, 22 November 2025

¿Alguna vez ha buscado "guía de despliegue" y no ha conseguido nada, a pesar de que hay un artículo sobre "publicar a la producción"? RAG (Retrieval-Aumentated Generation) resuelve esto mediante la comprensión de significado, no sólo palabras clave. Esta serie muestra cómo surgió RAG, cómo funciona bajo el capó, y cómo construir sistemas de producción.

Introducción

Navegación de la serie: Esta es la parte 1 de la serie RAG (Retrieval-Aumentated Generation):

RAG (Retrieval-Augmentated Generation) fue desarrollado para hacer que la IA sea más inteligente, dando a los LLMs acceso a información en la que no fueron entrenados. Pero esto es lo interesante: la tecnología abre oportunidades mucho más allá de los chatbots de IA. Potencia la búsqueda semántica en sitios web, recomendaciones de contenido, asistencia para escribir y gestión del conocimiento.

La doble naturaleza: RAG puede ayudar a los clientes (mejor búsqueda, respuestas exactas con citas) o explotarlos (recomendaciones manipulativas, enterrando críticas negativas, emergiendo contenido upsell). La diferencia no es la tecnología, es la intención. ¿Una búsqueda semántica que ayuda a los usuarios a encontrar lo que realmente necesitan? Genial. ¿Una que priorice lo que te hace más dinero mientras parece útil? Ese es el territorio de patrón oscuro, y es por qué entender cómo esto funciona importa.

Esta es la verdad sobre RAG: Suena intimidante. ¿Incrustaciones de vectores? ¿Modelos de transformadores? ¿Cachés de KV? Pero como todo lo demás en el software, se trata de entender cómo funciona. No es necesario saber las matemáticas detrás de las arquitecturas de transformadores más de lo que necesita entender el ensamblaje para escribir C#.

RAG en tres pasos:

  1. Convierta el texto en números (embeddings)
  2. Encontrar números similares (búsqueda de vectores)
  3. Use lo que encontró (mostrar resultados o alimentar a LLM)

El resto son detalles de la implementación.

Esta serie te muestra cómo construir sistemas RAG con código C# en funcionamiento. Sin agitar las manos. Sin suposiciones. Sólo las piezas y cómo encajan.

Lo que aprenderás en esta serie:

  • **Parte 1 (este artículo)**Cómo surgió el GCR y por qué es importante
  • Parte 2: Arquitectura técnica completa y LLM interna
  • Parte 3: Construyendo sistemas reales con ejemplos de código

Más tarde, también les mostraré cómo construir sistemas RAG completos incluyendo:

¿Qué es RAG?

Generación de aumento de la obtención: Encuentre información relevante y luego úselo.

flowchart LR
    A[User Question] --> B[Retrieve Relevant Info]
    B --> C[Retrieved Documents/Context]
    C --> D[Generate Response]
    A --> D
    D --> E[Grounded, Accurate Answer]

    style B stroke:#f9f,stroke-width:2px
    style D stroke:#bbf,stroke-width:2px

Sin RAG: El usuario pregunta → LLM adivina de la memoria → podría alucinar

Con RAG: El usuario pregunta → Encontrar documentos relevantes → Respuestas LLM usando esos documentos → basados en la realidad

// Without RAG: Hope the LLM knows
var answer = await llm.GenerateAsync("How do I deploy Docker?");
// Risk: Might make up outdated or wrong steps

// With RAG: Give it the docs
var relevantDocs = await vectorSearch.FindSimilar("How do I deploy Docker?");
var context = string.Join("\n", relevantDocs.Select(d => d.Text));
var answer = await llm.GenerateAsync($"Context: {context}\n\nQuestion: How do I deploy Docker?");
// Result: Answer based on YOUR actual Docker deployment docs

Perspicacia clave: Separar el almacenamiento de conocimientos (búsqueda) del razonamiento (LLM). Actualizar sus documentos, la búsqueda permanece actualizada. No se necesita readiestramiento.

¿De dónde salió RAG?

RAG se basa en décadas de búsqueda e investigación NLP. Comprender esta historia le ayuda a apreciar por qué RAG está diseñado de la manera en que es y qué problemas resuelve.

Búsqueda tradicional (antes de 2010)

Búsqueda basada en palabras clave:

  • TF-IFF: Frecuencia de término × frecuencia de documento inversa - las palabras comunes importan menos
  • BM25: Ranking probabilístico - sigue siendo la línea de base para la búsqueda de palabras clave
  • Coincidencia borrosa:
    • Soundex: Algoritmo fonético ("Smith" coincide con "Smythe")
    • Distancia de Levenshtein: Editar distancia (cuántas inserciones/sustituciones/sustituciones)
    • N-Grams: Secuencias de caracteres/palabras para correspondencia parcial

El problema: Estos emparejados caracteres, no significado. Busca "container orquestation" y no encontrarás "Docker Swarm" a menos que aparezcan esas palabras exactas. Podrían manejar errores tipográficos pero no semánticos.

Respuestas tempranas a preguntas (2010s)

Watson (IBM, 2011):

  • Recuperación combinada con razonamiento basado en normas
  • ¡Won Jeopardy! pero necesitó ingeniería masiva del conocimiento artesanal
  • Todavía depende en gran medida de la coincidencia de palabras clave

Modelos de comprensión lectora:

  • Podría extraer respuestas de los pasajes proporcionados
  • Pero primero tenías que darles el pasaje correcto.
  • No hay búsqueda semántica para encontrar ese pasaje

La revolución del aprendizaje profundo (2017+)

Transformadores (2017): "La atención es todo lo que necesitas"

  • Redes neuronales que puedan entender el contexto
  • Fundación para todo lo que siguió

BERT (2018):

  • Comprensión contextual del lenguaje
  • "Banco" significa diferentes cosas en "banco fluvial" vs "banco de ahorro"
  • Podría generar incrustaciones que capturen el significado

GPT-2/3 (2019/2020):

  • Grandes modelos lingüísticos que podrían generar texto coherente
  • Pero limitado a sus datos de entrenamiento
  • Surgieron problemas de alucinación

Representaciones vectoriales densas:

  • Texto → números significativos en el espacio de alta dimensión
  • Significados similares → vectores cercanos
  • Esto hizo posible la búsqueda semántica

BART (Facebook AI, octubre 2019):

  • Transformador bidireccional y autorregresivo de Mike Lewis et al.
  • Codificador tipo BERT combinado con descodificador tipo GPT
  • Denoising autoencoder entrenado corrompiendo el texto y luego reconstruyéndolo
  • Excelente para la generación de texto y tareas de comprensión
  • Se convirtió en la base de RAG

M2M-100 (Facebook AI, octubre 2020):

  • Primer modelo de traducción multilingüe de muchos a muchos
  • Traducción directa entre 100 idiomas sin pivote inglés
  • 2.200 direcciones de idioma (10 veces más que los modelos anteriores)
  • Los transformadores mostrados podrían manejar enormes tareas transversales

Ejemplo del mundo real: Mi herramienta de traducción automática neuronal utiliza BART como un modelo de traducción alternativo cuando los servicios primarios no están disponibles, demostrando cómo estos modelos basados en transformadores se convirtieron en bloques de construcción prácticos para los sistemas de producción.

El nacimiento de la RAG moderna (mayo de 2020)

El papel seminal "Generación aumentada de recuperación para tareas NLP intensivas en conocimiento" por Patrick Lewis et al. (Facebook AI Research) introdujo formalmente RAG, construyendo directamente en BART:

Lo que combinaron:

  • Recuperación de pases densos (DPR) - representaciones de vectores aprendidas, no palabras clave
  • Generador BART - el modelo sq2seq a partir de 2019
  • Arquitectura diferenciable de extremo a extremo - recuperar y generar juntos

Los resultados: Los sistemas RAG superaron modelos mucho más grandes en tareas de gran intensidad de conocimiento, siendo más eficientes y actualizados. Podría actualizar la base de conocimientos sin necesidad de readiestrar el modelo.

Por qué explotó el GCR (2023-Presentado)

ChatGPT, GPT-4, y Claude hicieron RAG esencial:

  1. Problema de alucinación - Los LLM conforman con confianza los hechos. RAG argumenta las respuestas en documentos reales.
  2. Corte de conocimientos - Los LLM entrenados en datos de 2021 no conocen los eventos de 2024. RAG utiliza documentos actuales.
  3. Datos privados - Los LLM no pueden acceder a los documentos internos de su compañía.
  4. Costo - Afinación de LLMs es caro ($10K-100K+). RAG es barato (almacenamiento + incrustaciones).
  5. Explicabilidad - RAG puede citar fuentes, haciéndolas auditables y confiables.

Hoy (2024-2025): RAG es el estándar de facto para los sistemas de IA de producción que necesitan precisión y auditabilidad.

Cómo funciona RAG: La gran imagen

Antes de profundizar en los detalles técnicos (que cubriremos en la Parte 2), vamos a entender el flujo de trabajo de alto nivel.

Las tres fases

Los sistemas RAG funcionan en tres fases distintas:

Fase 1: Indización (configuración por una sola vez)

flowchart LR
    A[Your Documents] --> B[Split into Chunks]
    B --> C[Generate Embeddings]
    C --> D[Store in Vector DB]

    style C stroke:#f9f,stroke-width:2px
    style D stroke:#bbf,stroke-width:2px

¿Qué sucede?

  1. Tome su base de conocimientos (docs, posts de blog, manuales)
  2. Dividir en trozos manejables (párrafos, secciones)
  3. Convertir cada trozo en un vector de incrustación (array de números)
  4. Almacenar vectores en una base de datos optimizada para la búsqueda de similitudes

Concepto clave: Significados similares producen vectores similares, por lo que "contenedor Docker" y "plataforma de containerización" terminan juntos en el espacio vectorial.

Fase 2: Recuperación (cada consulta)

flowchart LR
    A[User Question] --> B[Generate Query Embedding]
    B --> C[Search Vector DB]
    C --> D[Top K Most Similar Chunks]

    style B stroke:#f9f,stroke-width:2px
    style C stroke:#bbf,stroke-width:2px

¿Qué sucede?

  1. El usuario hace una pregunta
  2. Convertir la pregunta a un vector (mismo modelo usado para indexar)
  3. Encontrar la mayoría de vectores similares en la base de datos
  4. Devuelve los trozos K más relevantes (generalmente 3-10)

Por qué funciona: "¿Cómo puedo desplegar contenedores?" (consulta) es semánticamente similar a trozos sobre el despliegue Docker, incluso si las palabras exactas difieren.

Fase 3: Generación (cada consulta)

flowchart TB
    A[User Question] --> B[Build Prompt]
    C[Retrieved Context] --> B
    B --> D[LLM]
    D --> E[Generated Answer with Citations]

    style B stroke:#f9f,stroke-width:2px
    style D stroke:#bbf,stroke-width:2px

¿Qué sucede?

  1. Tome la pregunta del usuario
  2. Tome los trozos de contexto recuperados
  3. Construya un prompt: "Dado este contexto..., responda a esta pregunta..."
  4. Enviar a LLM para la generación
  5. LLM produce respuesta basada en el contexto proporcionado

La magia: El LLM no puede alucinar hechos que no están en el contexto. Sólo puede sintetizar y explicar lo que se proporciona.

Un ejemplo sencillo

Rastreemos una consulta a través del sistema:

El usuario pregunta: "¿Cómo uso Docker Compose?"

Paso 1 - Recuperación:

Query embedding: [0.234, -0.891, 0.567, ...]

Search vector DB for similar embeddings...

Retrieved chunks:
1. "Docker Compose is a tool for defining multi-container applications..." (similarity: 0.92)
2. "To use Docker Compose, create a docker-compose.yml file..." (similarity: 0.87)
3. "The docker-compose up command starts all services..." (similarity: 0.83)

Paso 2 - Generación:

Prompt to LLM:
"Context:
[1] Docker Compose is a tool for defining multi-container applications...
[2] To use Docker Compose, create a docker-compose.yml file...
[3] The docker-compose up command starts all services...

Question: How do I use Docker Compose?

Answer (use the context above):"

LLM Response:
"To use Docker Compose [1], start by creating a docker-compose.yml file [2] that
defines your services. Then run 'docker-compose up' to start all services [3]..."

Resultado: Respuesta exacta con citas implícitas de su documentación.

RAG vs. otros enfoques

Entender cuándo usar RAG (y cuándo no) requiere compararlo con alternativas.

RAG vs. Fine-Tuning

Aspecto # # RAG # # Fine-Tuning # # Fine-Tuning # # Aspecto # # RAG # # Fine-Tuning # # Fine-Tuning # # Aspecto # # Aspecto # # RAG # # Fine-Tuning # # Aspecto # # Aspecto # # RAG # # Fine-Tuning

|--------|-----|-------------| | Actualizaciones de conocimientos Instantánea (sólo actualizar la base de conocimientos) Requiere readiestramiento | Costo Baja (almacenamiento + incrustación) Alta (tiempo de entrenamiento de la GPU) | Precisión Fundamentado en fuentes puede alucinar | Personalización Limitada a la recuperación Adaptación del modelo profundo | Explicabilidad Alto (puede citar fuentes) Bajo (caja negra) | Lo mejor para Tareas intensivas en conocimientos Adaptación de estilo/formato

Cuándo usar Fine-Tuning:

  • Usted necesita el modelo para aprender un específico estilo o formato
  • Tienes un conjunto de datos grande y limpio.
  • Usted necesita el modelo para interiorizar patrones, no los hechos
  • Ejemplo: Hacer que GPT escriba como Shakespeare

Cuándo usar RAG:

  • Necesitas exactitud de los hechos con citas
  • Su base de conocimientos cambia con frecuencia
  • Tiene datos privados/propietarios
  • El coste y la simplicidad importan
  • Ejemplo: Chatbot de atención al cliente (los documentos de mi empresa cambian semanalmente)

¿Puedes combinar ambos? Afinado para el estilo, RAG para los hechos.

RAG vs. Windows de contexto largo

Los LLM modernos cuentan con enormes ventanas de contexto (GPT-4: tokens de 128K, Claude: tokens de 200K).

Problemas con el contexto largo:

  1. Costo: Escalas de precios con tokens - $10-100 por consulta se suma rápidamente
  2. Latencia: Procesar fichas de 100K lleva tiempo
  3. Perdido en el medio: Los LLM luchan por utilizar la información en medio de contextos largos
  4. Dilución: La información relevante se entierra en el ruido
  5. Límites prácticos: Usted no puede encajar toda la documentación de su empresa en el contexto

Cuando el contexto largo tiene sentido:

  • Documento único grande (por ejemplo, análisis de un contrato)
  • Todo es relevante (no es necesario filtrar)
  • El costo no es una preocupación.
  • Bajo volumen de consulta

Cuando RAG tiene sentido:

  • Gran base de conocimientos (millones de documentos)
  • Necesidad de encontrar un subconjunto relevante
  • Alto volumen de consultas (asuntos de costes)
  • Actualizaciones en tiempo real del conocimiento

Mejores prácticas: Utilice RAG para seleccionar el contenido más relevante y luego utilice un contexto largo para ese subconjunto.

RAG vs. Impulsar con ejemplos

Pocas instancias (dando ejemplos en el prompt) es una simple base de referencia.

Ejemplo del prompt:

Examples:
Q: What is Docker?
A: Docker is a containerization platform...

Q: How does Kubernetes work?
A: Kubernetes orchestrates containers...

Q: What is my new question?
A: [LLM generates answer]

Limitaciones:

  • Limitado a lo que cabe en la ventana de contexto
  • Curación manual de ejemplos
  • No escala a grandes bases de conocimiento
  • No hay búsqueda semántica - se seleccionan ejemplos manualmente

Mejora de los GCR:

  • Automáticamente encuentra los mejores ejemplos (mediante búsqueda de similitudes)
  • Escalas a ejemplos ilimitados (sólo K superior enviado a LLM)
  • Se adapta a la consulta (diferentes consultas recuperan diferentes ejemplos)

Se puede pensar en RAG como "incitación automática de pocos disparos a escala".

Búsqueda híbrida: RAG + Búsqueda tradicional

Puede combinar RAG con la búsqueda tradicional de texto completo usando Reciprocal Rank Fusion (RRF).

¿Por qué híbrido?

  • Búsqueda semántica: Ideal para las coincidencias conceptuales ("manipulación de errores" encuentra "gestión de excepciones")
  • Búsqueda de palabras clave: Excelente para términos exactos ("Docker Compose", "Entity Framework")
  • Híbrido: Lo mejor de ambos mundos
public async Task<List<SearchResult>> HybridSearchAsync(string query)
{
    // Run both searches in parallel
    var semanticTask = SemanticSearchAsync(query, limit: 20);
    var keywordTask = KeywordSearchAsync(query, limit: 20);

    await Task.WhenAll(semanticTask, keywordTask);

    var semanticResults = await semanticTask;
    var keywordResults = await keywordTask;

    // Combine using Reciprocal Rank Fusion
    return ApplyRRF(semanticResults, keywordResults);
}

private List<SearchResult> ApplyRRF(
    List<SearchResult> list1,
    List<SearchResult> list2,
    int k = 60)
{
    var scores = new Dictionary<string, double>();

    // Score from first list
    for (int i = 0; i < list1.Count; i++)
    {
        var id = list1[i].Id;
        scores[id] = scores.GetValueOrDefault(id, 0) + 1.0 / (k + i + 1);
    }

    // Score from second list
    for (int i = 0; i < list2.Count; i++)
    {
        var id = list2[i].Id;
        scores[id] = scores.GetValueOrDefault(id, 0) + 1.0 / (k + i + 1);
    }

    // Merge and sort by combined score
    var allResults = list1.Concat(list2)
        .GroupBy(r => r.Id)
        .Select(g => g.First())
        .OrderByDescending(r => scores[r.Id])
        .ToList();

    return allResults;
}

Por qué es importante el GCR

Ahora que entiendes lo que es RAG, de dónde vino, y cómo se compara con las alternativas, he aquí por qué importa:

1. Democratización de la IA

  • Usted no necesita un presupuesto de ajuste de $100K
  • No necesitas un equipo de ingenieros de ML.
  • Cualquier desarrollador puede construir sistemas RAG con herramientas existentes

2. Precisión práctica

  • La alucinación es el problema #1 con los LLM en la producción
  • RAG lo resuelve basando las respuestas en documentos reales
  • Las citas lo hacen auditable y confiable

3. Siempre al día

  • AI tradicional: Entrena una vez, el conocimiento se congela
  • RAG: Actualice sus documentos, actualizaciones de conocimiento al instante
  • Crítico para los dominios de movimiento rápido (tecnología, noticias, regulaciones)

4. Privacidad y control

  • Sus datos permanecen en su infraestructura
  • Puede ejecutarse completamente localmente (incrustaciones locales + LLM local + vector local DB)
  • No se envían datos a OpenAI u otros proveedores de la nube

5. Efectivo en función de los costos

  • El almacenamiento es barato (peniques por GB)
  • Los empotrados son baratos (fracturas de un porcentaje de 1.000 documentos)
  • Mucho más barato que el ajuste fino o ventanas de contexto largas

6. Aplicaciones versátiles

  • Búsqueda semántica (¡no se necesita LLM!)
  • Sistemas de preguntas y respuestas con citas
  • Recomendación sobre el contenido
  • Asistentes de redacción
  • Gestión de los conocimientos
  • Ayudantes de documentación
  • Auxiliares de investigación

Conclusión: De la historia a la implementación

Hemos rastreado la evolución de RAG:

  • Antes de 2010: Búsqueda de palabras clave (caracteres, no significa)
  • 2010s: Comprensión de lectura (necesita el pasaje correcto)
  • 2017-2020: Transformadores e incrustaciones (significado → vectores)
  • 2020: Modern RAG (retroceder + generar)
  • 2023-Present: Norma de producción (alucinación + coste + privacidad)

Perspectivas clave de la Parte 1:

  • Los GCR se separan almacenamiento de conocimientos (vector DB) de razonamiento (LLM)
  • Resuelve el problema de la alucinación basando las respuestas en documentos reales
  • Es más barato y más flexible que el ajuste fino
  • Funciona mejor que un contexto largo para grandes bases de conocimiento
  • Es esencialmente "incitación automática de pocos disparos a escala"

El modelo mental de tres pasos:

  1. Convierta el texto en números (embeddings)
  2. Encontrar números similares (búsqueda de vectores)
  3. Use lo que encontró (display o feed to LLM)

Todo lo demás es optimización.

Continuar a la Parte 2: Arquitectura e Internos

Ahora lo entiendes. ¿Qué? RAG es, ¿Por qué? importa, y donde ¿Pero cómo funciona debajo del capó?

In Parte 2: RAG Arquitectura e Interiores, nos sumergimos profundamente en los detalles técnicos:

Gasoducto RAG completo:

  • Fase 1: Indización (extracción de textos, estrategias de troceado, generación de incrustaciones, almacenamiento de vectores)
  • Fase 2: Recuperación (incrustaciones de la demanda, métricas de similitud, reordenación)
  • Fase 3: Generación (construcción rápida, parámetros LLM, posprocesamiento)

Internos de LLM:

  • ¿Qué son las fichas y por qué importan para RAG?
  • La caché KV: Cómo los LLM recuerdan el contexto
  • Ventanas de contexto y estrategias de gestión de fichas
  • Optimización de los GCR para la eficiencia y el costo token

Inmersiones técnicas profundas:

  • Bases de datos vectoriales y algoritmos de búsqueda de similitudes
  • Incorporación de modelos y normalización
  • Recorte de estrategias que preserven el contexto
  • Ejemplos prácticos de código en C#

Continuar a la Parte 2: Arquitectura e Internos →

Después de la Parte 2, estará listo para la Parte 3, donde construimos sistemas reales, resolvemos desafíos comunes y exploraremos técnicas avanzadas como HyDE, RAG multiconsulta y compresión contextual.

Recursos

Documentos Fundacionales:

Más información:

Siguiente de esta serie:

Continuar a la Parte 2 →

logo

© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.