fedorthinks

Curso exprés · No. 12

RAG es la forma de darle a un modelo de lenguaje los hechos con los que debe responder, en lugar de confiar en su memoria difusa. Es el patrón más importante de las apps serias con LLM — y cuando algo sale mal, el modelo casi nunca es el culpable. El trabajo, y la calidad, viven en la recuperación: cómo divides, indexas, buscas y ordenas el texto que pones frente al modelo.

22 conceptos · un diagrama para cada uno · hoja de referencia al final

§ 01

Un modelo no conoce tus datos, ni nada posterior a su fecha de corte de entrenamiento. RAG es la forma de darle los hechos con los que responder — así que entiende el problema que resuelve antes que la mecánica.

El mapa: 22 conceptos en siete grupos

Un mapa de metro: primero ves toda la red, luego la recorres estación por estación.

Primero, tres bases — por qué la memoria del modelo no basta, qué es RAG y por qué importa el grounding. Después seis grupos, uno por capítulo: chunking, embeddings y búsqueda, calidad de la recuperación, grounding, evaluación y construirlo bien.

Cada concepto siguiente tiene la misma forma: el nombre en inglés (recuérdalo — es el término), una imagen de la vida real, un diagrama y una tarjeta con campos: qué es o problema, cómo funciona o idea, ejemplo, ojo o coste, y relaciones.

BasicsKnowledge cutoffRAGGroundingChunkingChunkStructure-aware splitMetadataEmbeddings & searchEmbeddingVector searchVector databaseSimilar ≠ relevantRetrieval qualityHybrid searchRerankingPrecision / recallGroundingContext-only answerCitationsRefusalEvaluating RAGRetrieval evalFaithfulnessGolden setBuilding it wellPaste firstIndex freshnessCost & latency
Las bases arriba, seis grupos debajo — los capítulos 2–7 los siguen.

Knowledge Cutoff — la memoria del modelo está congelada

Un graduado brillante que leyó toda la biblioteca hace años — pero no los archivos de tu empresa, ni nada impreso desde que se graduó.

Un LLM solo sabe lo que estaba en sus datos de entrenamiento, congelados en una fecha de corte — su knowledge cutoff. No conoce tus documentos, tu producto, el registro de tu cliente ni las noticias de ayer. Pregúntale igual y responderá desde su memoria difusa o inventará algo plausible. RAG existe precisamente para arreglar esto: dejar de depender de lo que el modelo memorizó y entregarle los hechos relevantes en el momento de la pregunta.

Training dataeverything the model ever readcutoffYour documentsYesterday's newsknown, but frozennever seenask anyway → fuzzy memory or a plausible invention
Lo que viene después del corte, o está dentro de tu empresa, el modelo nunca lo ha visto.
ConceptKnowledge Cutoff· fecha de corte de entrenamiento
Qué es

El modelo solo conoce sus datos de entrenamiento, congelados en una fecha.

Ejemplo

No conoce tus documentos, el registro de un cliente ni las noticias de ayer.

Ojo

El modelo no se calla cuando no sabe — responde desde una memoria difusa o inventa.

Relaciones

RAG cierra esta brecha: los hechos llegan en el momento de la pregunta.

RAG — recupera primero, responde después

Un examen a libro abierto — en lugar de confiar en la memoria, primero buscas las páginas relevantes y luego escribes la respuesta con lo que tienes delante.

Este es el patrón Retrieval-Augmented Generation (RAG). Tres pasos: recuperar — tomas la pregunta del usuario y traes los fragmentos más relevantes de tus documentos; aumentar — los pones en el contexto; generar — le pides al modelo que responda a partir de ellos. Ahora la respuesta sale de tus datos reales, no del recuerdo del modelo. Así es como un asistente responde sobre tus documentos, tus políticas, tu base de conocimiento — con precisión y al día.

1 · retrieveQuestionfrom the userRetrievesearch your docsTop-k chunksthe most relevant passages2 · augmentContextquestion + chunksLLManswers from contextAnswerfrom your data3 · generate
Los tres pasos de RAG: recuperar fragmentos, añadirlos al contexto, generar la respuesta.
PatternRetrieval-Augmented Generation· RAG
Problema
El modelo no conoce tus datos ni nada posterior a su fecha de corte.
Idea

Encontrar los trozos relevantes de tus documentos y hacer que el modelo responda a partir de ellos.

Ejemplo

Un asistente de soporte responde sobre la política de reembolsos con el artículo vigente de la base de conocimiento.

Coste
Todo un sistema de búsqueda: chunking, un índice, frescura, evaluación.
Cuándo usarlo

El conocimiento es grande, cambia a menudo o depende del usuario.

Relaciones

Existe para el grounding; se construye sobre chunking, embeddings y búsqueda vectorial.

Grounding — el verdadero premio

Un periodista que debe citar una fuente para cada afirmación escribe muchas menos invenciones que uno que escribe de memoria.

La razón profunda por la que RAG importa es el grounding (anclaje): como la respuesta se saca de texto recuperado, puedes exigir citas y comprobar que cada afirmación está realmente respaldada por una fuente. No borra del todo la alucinación, pero la reduce mucho y hace que lo que se cuela sea detectable. Una respuesta que puedes rastrear hasta un documento es una en la que puedes confiar — y que puedes defender.

AnswerRetrieved sourcesClaim A [1]Claim B [2]Claim C — no sourceChunk 1policy.md · §2Chunk 2faq.md · §5nothing backs it → catch it
Cada afirmación tiene una fuente. Una afirmación sin ella destaca de inmediato.
ConceptGrounding
Qué es

La respuesta se apoya en texto recuperado, no en la memoria del modelo.

Cómo funciona

Cada afirmación se puede rastrear hasta un fragmento concreto y comprobar.

Ejemplo

"Los reembolsos tardan 14 días [1]", donde [1] es un párrafo de la política de reembolsos.

Ojo
Reduce mucho la alucinación, pero no la lleva a cero.
Relaciones

Se logra con responder solo desde el contexto, citas y rechazo; se mide con la fidelidad.

Retrieval-first — un sistema de búsqueda con un modelo al final

Un asistente de investigación es tan bueno como el archivo en el que busca — dale una gran biblioteca y un mal índice, y aun así te entregará la carpeta equivocada.

El modelo mental que te ahorra meses: RAG es sobre todo un problema de búsqueda, con un modelo de lenguaje al final para redactar la respuesta. El modelo es la parte fácil y casi resuelta. La parte difícil, la que determina la calidad, es todo lo que decide qué texto llega al modelo — y de eso trata el resto de este curso.

Retrieval system — the hard partChunkEmbedSearchRankLLMphrases itdecides which text reaches the modelthe easy part
Chunking, embedding, búsqueda y ranking son la parte difícil. El modelo solo redacta la respuesta.

No le preguntes al modelo lo que sabe. Recupera los hechos relevantes y pídele que responda a partir de ellos — con anclaje, al día y con citas.

§ 02

Antes de poder recuperar, divides tus documentos en trozos. Cómo los cortes decide en silencio la calidad de la recuperación — es el paso menos vistoso y uno de los más importantes.

Chunk — la unidad de calidad

Un libro de consulta solo sirve cortado en entradas que se puedan encontrar — un pergamino gigante sin índice o mil recortes sueltos son igual de inútiles para buscar.

No recuperas documentos enteros; recuperas chunks — pasajes de unos cientos de palabras. El proceso de cortarlos es el chunking. Ese chunk es la unidad que ve la búsqueda y que lee el modelo, así que sus límites importan enormemente. Los buenos chunks son autónomos y tratan un solo tema. Si el chunking sale mal, ninguna búsqueda ingeniosa ni modelo listo lo recupera.

DocumentsplitChunk 1Chunk 2Chunk 3Chunk 4Searchsees chunksLLMreads chunks
Un documento se corta en chunks. La búsqueda ve chunks, el modelo lee chunks — no documentos.
ConceptChunk· pasaje
Qué es

Un pasaje de unos cientos de palabras — la unidad de búsqueda y de lectura.

Cómo funciona

Los documentos se dividen de antemano; la búsqueda devuelve chunks y el modelo responde a partir de ellos.

Tamaño

Muy grande entierra la respuesta, muy pequeño pierde el contexto. El número se encuentra midiendo.

Ojo
Un mal chunking no lo rescata ni la búsqueda ni el modelo.
Relaciones

Se corta con structure-aware chunking, se etiqueta con metadatos, se convierte en un embedding.

Chunk Size — demasiado grande entierra la respuesta, demasiado pequeño pierde el contexto

Dale a alguien un capítulo entero para responder una pregunta de una línea y se hundirá en el ruido; dale una sola frase sin el contexto que la rodea y no sabrá qué significa.

Si el chunk es demasiado grande, cada uno mezcla el hecho relevante con párrafos de texto sin relación — la búsqueda se vuelve difusa y la atención del modelo se diluye. Si es demasiado pequeño, cortas el contexto que daba sentido al hecho. El punto justo contiene una idea coherente con suficiente entorno para sostenerse sola. No existe un chunk size universal; depende de tus documentos y se ajusta midiendo.

Too biganswer buried in noiseJust rightone idea + enough contextToo smallcontext cut off
La barra de color es el hecho que necesitas. A la izquierda se ahoga en ruido; a la derecha perdió su contexto.

Structure-Aware Chunking — corta por significado, no por número de caracteres

Dividir un libro contando caracteres puede partir una frase — o una receta — por la mitad. Dividir por capítulos y secciones mantiene cada pieza entera.

El enfoque ingenuo — fixed-size chunking — corta cada N caracteres, lo que atraviesa frases, tablas e ideas. Mejor es dividir por la estructura natural del documento — títulos, secciones, párrafos — para que cada chunk sea un pensamiento completo. Un poco de solapamiento (overlap) entre chunks vecinos evita que un hecho caiga en la grieta entre dos de ellos. Respeta la forma del documento y la recuperación se vuelve más fácil sin esfuerzo.

Fixed size — cut every N characters§1 Refunds§2 Shipping§3 Warranty✗ slices through sentences, tables and ideasStructure-aware — cut on headings and paragraphs§1 Refunds§2 Shipping§3 Warrantyeach chunk is a whole thought · a small overlap at the seams
Arriba: corta cada N caracteres. Abajo: corta por secciones, con un pequeño solapamiento en las uniones.
PracticeStructure-Aware Chunking· semantic chunking, solapamiento (overlap)
Problema
Dividir por número de caracteres parte frases y tablas por la mitad.
Idea
Dividir por títulos, secciones y párrafos, con un pequeño solapamiento.
Ejemplo
Toda la sección "Plazos de reembolso" se convierte en un solo chunk.
Coste
Hay que interpretar el formato del documento: Markdown, HTML, PDF.
Relaciones
Mejora cada chunk y todo lo que viene después.

Metadata — pon etiquetas a cada chunk

Una ficha de biblioteca no guarda solo el texto — registra el autor, la fecha y la sección, para que puedas filtrar hasta el estante correcto antes incluso de buscar.

Guarda cada chunk con metadatos: documento de origen, título, fecha, sección, permisos. Esto te permite filtrar antes o junto con la búsqueda semántica — solo los documentos de este producto, solo las políticas vigentes, solo lo que este usuario puede ver — y te da la fuente para las citas. Los metadatos son baratos de mantener y convierten un montón plano de texto en algo al que puedes apuntar.

Chunksource: refund-policy.pdfsection: Timelinesdate: 2026-03access: supportFilter before searchthis product · current · allowed for this userCitationthe source behind each claim
Los metadatos te dan dos cosas: un filtro antes de buscar y una fuente para la cita.
PracticeMetadata· metadatos del chunk
Problema

Un montón plano de texto: no puedes acotar la búsqueda y no tienes nada que citar.

Idea
Guardar con cada chunk su fuente, título, fecha, sección y permisos.
Ejemplo
Buscar solo en las políticas vigentes que este usuario puede ver.
Coste
Casi nada — unos pocos campos por chunk.
Relaciones

Da a la búsqueda vectorial un filtro y a las citas una fuente.

Recuperas chunks, no documentos. Corta por significado, mantén cada uno autónomo y etiquétalo — la calidad del chunking limita todo lo que viene después.

§ 03

Para encontrar los chunks que responden a una pregunta, buscas por significado, no por coincidencia de palabras. Los embeddings son el truco que hace posible "encuéntrame cosas parecidas a esto".

Embedding — el significado se vuelve coordenadas

Un mapa donde cada idea tiene una ubicación, y las cosas que significan algo parecido quedan cerca — "perro" junto a "cachorro", ambos lejos de "declaración de impuestos".

Un embedding es una lista de números — un vector — que representa el significado de un texto, situado en un espacio de muchas dimensiones de modo que los significados parecidos quedan cerca. Conviertes cada chunk en embedding una vez y guardas los vectores. Ahora el "significado" tiene coordenadas, y "encontrar texto relacionado" pasa a ser "encontrar puntos cercanos" — un problema que un ordenador resuelve rápido.

ChunktextEmbedding modelreads the text[0.21, −0.83, …]vectorStoreonce per chunkcoordinates of the meaningsimilar meaning → nearby numbers → nearby points
Chunk → modelo de embeddings → vector. Una vez por chunk, y luego al almacén.
ConceptEmbedding· vector
Qué es
Una lista de números que representa el significado de un texto.
Cómo funciona

Un modelo de embeddings produce coordenadas; significado parecido significa puntos cercanos.

Ejemplo

"Perro" y "cachorro" quedan cerca; ambos lejos de "declaración de impuestos".

Relaciones

Hace posible la búsqueda vectorial; los vectores viven en una base de datos vectorial.

Vector Search — encuentra por similitud, no por palabras clave

Un bibliotecario que encuentra libros por de qué tratan — "cosas como esta" — en lugar de solo buscar el título exacto que dijiste.

En el momento de la pregunta conviertes la pregunta en embedding de la misma manera y buscas en el almacén los chunks cuyos vectores estén más cerca. Esto es la búsqueda vectorial, también llamada búsqueda semántica: encuentra un chunk sobre "política de reembolsos" aunque el usuario preguntara por "recuperar mi dinero", porque los significados están cerca. La búsqueda por palabras clave lo perdería; la búsqueda vectorial está hecha para esto.

Vector space (shown in 2D)question: “get my money back”chunk: “refund policy”closeshipping timesoffice hoursfarnearest vectors win — even with zero shared keywords
La pregunta y el chunk de reembolsos no comparten palabras — pero en el espacio de significado están uno al lado del otro.
ConceptVector Search· búsqueda semántica
Qué es

Encontrar los chunks cuyos vectores están más cerca del vector de la pregunta.

Cómo funciona

La pregunta se convierte en embedding con el mismo modelo, y luego se buscan los puntos más cercanos.

Ejemplo
"Recuperar mi dinero" encuentra la sección "Política de reembolsos".
Ojo
Falla con códigos y nombres exactos; cerca no siempre es útil.
Relaciones

Funciona sobre una base de datos vectorial; se completa con búsqueda híbrida y reranking.

Vector Database — el motor de recuperación

Un almacén diseñado para que, dado cualquier artículo, pueda entregarte al instante los cien más parecidos — no leyendo cada estante, sino por cómo está organizado.

Una base de datos vectorial guarda tus embeddings y responde consultas de "lo más cercano a esto" en milisegundos, incluso sobre millones de chunks, usando un índice aproximado (ANN, vecino más cercano aproximado) en lugar de recorrerlo todo. Es el motor de recuperación bajo RAG. No necesitas construirla — pero sí saber que ahí viven tus chunks y cuán rápida y precisa es su búsqueda.

Query vectorVector databaseapproximate index (ANN)Nearest kin millisecondsmillions of chunks storedno full scan — the index knows where to look
Una base de datos vectorial no recorre todo: el índice aproximado va directo a los más cercanos.
ToolVector Database· vector store, ANN index
Qué es
Un almacén de vectores con búsqueda rápida del vecino más cercano.
Cómo funciona
Un índice aproximado (ANN) en lugar de un recorrido completo.
Ejemplo

Millones de chunks — y los más cercanos a la pregunta en milisegundos.

Ojo
No la construyes, pero debes saber cuán rápida y precisa es su búsqueda.
Relaciones
Guarda embeddings; la búsqueda vectorial corre sobre ella.

Similar ≠ Relevant — similitud no es lo mismo que relevancia

Dos pasajes pueden tratar del mismo tema y aun así responder preguntas distintas — "cómo cancelar" y "por qué la gente cancela" quedan cerca, pero solo uno es lo que se preguntó.

La búsqueda vectorial devuelve lo que está semánticamente cerca (similar), que normalmente es relevante pero no siempre. Un chunk puede tratar del tema correcto y aun así no contener la respuesta. Esta brecha — cerca en significado frente a realmente útil — es la razón por la que la búsqueda vectorial en bruto es un buen primer paso pero no la última palabra, y por la que existe la siguiente sección.

“How do I cancel?”“How to cancel”near · answers it ✓“Why people cancel”near · doesn't answer ✗similar ≠ relevant: a strong first pass, not the final word
Ambos chunks están cerca de la pregunta. Solo uno contiene la respuesta.
ConceptSimilar ≠ Relevant· similitud vs relevancia
Qué es

Un chunk cercano en significado no necesariamente contiene la respuesta.

Ejemplo

"Cómo cancelar" y "por qué la gente cancela" quedan cerca; solo el primero responde.

Ojo
La búsqueda vectorial en bruto confunde cercanía con utilidad.
Relaciones
Se arregla con reranking; se mide con la retrieval eval.

Los embeddings dan coordenadas al significado; la búsqueda vectorial encuentra chunks por similitud. Es potente — y "cerca en significado" no es exactamente "responde a la pregunta".

§ 04

Esta es la lección que arregla la mayoría de los sistemas RAG rotos: cuando las respuestas son malas, la causa suele ser la recuperación. Mete los chunks correctos y un modelo decente hace el resto.

Garbage In, Confident Garbage Out — entra basura, sale basura con aplomo

Dale a alguien el archivo equivocado y pídele que lo resuma — te dará un resumen impecable de algo totalmente equivocado, sonando completamente seguro.

Una respuesta RAG es tan buena como los chunks que recibió. Recupera los pasajes equivocados y el modelo responde fielmente desde el contexto equivocado, con toda su seguridad habitual. El fallo parece "el modelo se equivoca", pero el error real ocurrió antes, en la recuperación. Así que cuando las respuestas son malas, mira qué se recuperó antes de tocar el prompt o el modelo.

real failure is herelooks like “the model is wrong”Retrievalwrong chunksLLMfaithful to contextAnswerconfident — and wronginspect what was retrieved before you touch the prompt or the model
El error se ve en la respuesta pero nació en la recuperación. Mira primero los chunks.

Hybrid Search — combina palabras clave y significado

Un buscador que sabe exactamente qué significan las palabras y otro que encuentra nombres y códigos exactos — juntos atrapan lo que cualquiera de los dos dejaría pasar.

La búsqueda vectorial entiende el significado pero puede fallar con términos exactos — códigos de producto, nombres, jerga poco común. La búsqueda por palabras clave acierta con esos, pero no ve las paráfrasis. La búsqueda híbrida ejecuta ambas y fusiona los resultados, cubriendo los puntos ciegos de cada una. Para la mayoría de los corpus reales, la híbrida supera a cualquiera de las dos por separado, porque las preguntas reales mezclan conceptos con nombres concretos.

QueryKeyword searchexact codes, names (BM25)Vector searchmeaning, paraphrasesMergeResultscatches “SKU-4471”catches rephrasings
Dos búsquedas en paralelo: una atrapa los códigos exactos, la otra las reformulaciones. Los resultados se fusionan.
PatternHybrid Search· keyword + vector
Problema

La búsqueda vectorial falla con códigos y nombres exactos; la de palabras clave no ve las paráfrasis.

Idea
Ejecutar ambas búsquedas y fusionar los resultados.
Ejemplo

"Error SKU-4471 en la devolución" — la búsqueda por palabras clave encuentra el código, la vectorial el significado.

Coste
Dos índices y la lógica de fusión.
Cuándo usarlo
Casi siempre, con corpus reales.
Relaciones
El primer paso amplio antes del reranking.

Reranking — reordena la lista corta

Un proceso de contratación: una primera pasada barata saca cincuenta currículos plausibles, y luego un revisor cuidadoso los lee con atención y ordena los cinco mejores de verdad.

La búsqueda de primera pasada es rápida pero tosca. Un reranker toma, digamos, los cincuenta mejores candidatos y puntúa cada uno frente a la pregunta con más cuidado, subiendo a lo alto los chunks realmente relevantes. Recupera de forma amplia y luego reordena hasta unos pocos precisos. Esta forma en dos etapas — recall amplio y barato, luego ranking afinado — es una de las mejoras de mayor impacto para un sistema RAG mediocre.

stage 1 · wide, cheap recallstage 2 · sharp rankingFast searchroughTop 50candidatesRerankerscores vs questionTop 5the precise fewretrieve broadly, then rerank to a precise few
Etapa 1 — reunir rápido 50 candidatos. Etapa 2 — elegir con cuidado los mejores 5.
PatternReranking· two-stage retrieval
Problema

La primera pasada es rápida pero tosca: el chunk correcto puede estar en el puesto 30.

Idea

Tomar los 50 primeros y puntuar con cuidado cada candidato frente a la pregunta.

Ejemplo
De 50 chunks recuperados, el reranker se queda con los 5 más útiles.
Coste
Un paso extra — algo de latencia y dinero en cada pregunta.
Cuándo usarlo
Cuando el RAG es mediocre — una de las mejoras más fuertes.
Relaciones

Arregla similar ≠ relevant; viene después de la búsqueda híbrida.

Precision & Recall — tiran en direcciones opuestas

Una red con agujeros grandes solo atrapa los peces grandes pero deja pasar muchos; una red fina lo atrapa todo, incluidas las algas. Ajustas la malla a la pesca que necesitas.

Si recuperas muy pocos chunks, puedes perder el que tiene la respuesta (recall bajo); si recuperas demasiados, entierras la respuesta en texto irrelevante que diluye al modelo y cuesta tokens (precision baja). El número adecuado de chunks (a menudo llamado k) equilibra ambos, y es específico de tus datos y del tipo de pregunta. No lo adivinas — lo mides, que es la siguiente sección.

Too fewmiss the answer · low recallSweet spotmeasured, not guessedToo manynoise, tokens · low precisionfewmanyk = chunks retrievedthe right k depends on your data and question types
Muy pocos chunks — se pierde la respuesta. Demasiados — se ahoga. El punto medio se encuentra midiendo.
TermPrecision & Recall· top-k
Qué es

Recall — si volvió el chunk correcto; precision — cuánta basura vino con él.

Cómo funciona
Un k mayor sube el recall y baja la precision, y al revés.
Ejemplo
k = 2 pierde la respuesta; k = 40 la entierra y gasta tokens.
Ojo
No puedes adivinar el k correcto — lo mides con tus propios datos.
Relaciones

Se mide con la retrieval eval; condiciona el coste y la latencia.

La mayoría de las malas respuestas de RAG son mala recuperación. Combina palabras clave y semántica, reordena la lista corta y revisa los chunks antes de culpar al modelo.

§ 05

Una vez que los chunks correctos están en el contexto, el trabajo es lograr que el modelo responda estrictamente a partir de ellos — y demostrar que lo hizo. Eso convierte la recuperación en una respuesta digna de confianza.

Context-Only Answering — responder solo desde el texto recuperado

Un testigo al que se le indica declarar solo lo que vio personalmente — no lo que supone, recuerda vagamente u oyó de segunda mano.

Indica al modelo que responda solo a partir de los chunks proporcionados, y que diga que no sabe cuando la respuesta no está ahí. Este es el núcleo del grounding: el texto recuperado es la fuente de verdad permitida, y la memoria del propio modelo queda fuera. No será perfecto — el modelo aún puede desviarse — pero la instrucción más el contexto correcto hacen la mayor parte del trabajo.

Retrieved chunksallowed source of truthModel's memoryoff the table ✗LLMonly from chunksGrounded answer
Los chunks son la fuente permitida. La memoria del modelo no.
PracticeContext-Only Answering· responder desde el contexto
Problema
El modelo mezcla los hechos recuperados con su propia memoria.
Idea

Una instrucción: responde solo a partir de los chunks dados; si no, di "no lo sé".

Ejemplo

"Responde solo con los fragmentos de abajo. Si la respuesta no está ahí, dilo."

Coste
No es perfecto: el modelo aún puede desviarse.
Relaciones

El núcleo del grounding; se comprueba con citas y fidelidad.

Citations — haz que las afirmaciones se puedan comprobar

Un artículo científico con notas al pie permite a cualquier lector rastrear una afirmación hasta su fuente y verificarla — o notar dónde no se sostiene.

Haz que el modelo cite de qué chunk salió cada parte de su respuesta. Las citas hacen dos cosas: permiten al usuario (y a ti) verificar una afirmación contra su fuente, y el simple hecho de anclar cada enunciado en un pasaje recuperado disuade al modelo de alejarse de los hechos. Una respuesta con fuentes rastreables es una que puedes auditar; una respuesta sin fuente es solo una conjetura con aplomo.

AnswerRefunds take 14 days. [1]The return label is free. [2]Sale items are excluded. [2][1] refund-policy.md§ Timelines[2] returns-faq.md§ Labelsevery claim can be checked against its source
Cada frase de la respuesta apunta a su fuente — puedes abrirla y comprobar.
PracticeCitations· atribución de fuentes
Problema

Una respuesta sin fuente no se puede comprobar — es una conjetura con aplomo.

Idea
El modelo dice de qué chunk salió cada afirmación.
Ejemplo

"Los reembolsos tardan 14 días [1]", donde [1] es refund-policy.md, sección "Plazos."

Coste
Cada chunk necesita metadatos con su fuente.
Relaciones

Se apoyan en los metadatos; hacen comprobable el grounding.

Refusal — enséñale a decir no lo sé

El experto en quien más confías es el que dice "eso no está en lo que tengo" en lugar de rellenar el hueco con una conjetura segura de sí misma.

El fallo más peligroso de RAG es responder igualmente cuando la recuperación volvió vacía o desviada. Así que haz del rechazo una salida válida y esperada: si los chunks no contienen la respuesta, el modelo debe decirlo, no improvisar desde la memoria. Un sistema que admite el hueco es mucho más fiable que uno que lo tapa — y además deja ver dónde necesita trabajo tu recuperación.

Retrieved chunksanswerin them?Answer + citations“Not in my sources”valid, expected outputyesno✗ never improvise the gap from memory
Ambas ramas son salidas correctas. Solo una cosa está mal: inventar la respuesta de memoria.
PracticeRefusal· un “no lo sé” honesto
Problema
La recuperación volvió desviada y el modelo responde igualmente.
Idea
"Eso no está en mis fuentes" es una respuesta normal y esperada.
Ejemplo

Una pregunta fuera de la base de conocimiento → "Los documentos no cubren esto."

Coste
A veces el usuario no recibe respuesta — pero nunca una inventada.
Relaciones

Parte del grounding; los rechazos revelan huecos en la recuperación.

Grounding reduce la alucinación — no la elimina

Los cinturones de seguridad reducen mucho las muertes, pero aun así conduces con cuidado. Una buena protección no es motivo para dejar de mirar la carretera.

Incluso con chunks perfectos, el modelo puede leer mal, generalizar de más o mezclar un hecho recuperado con su propia memoria. El grounding reduce mucho la alucinación y la hace detectable; no la elimina. Así que sigues verificando — con citas que el usuario pueda comprobar, y con evals que midan la fidelidad. Trata el grounding como un control potente, no como una garantía.

Grounding significa que la respuesta sale solo del texto recuperado, con citas que lo demuestran — y un "no lo sé" honesto cuando los hechos no están.

§ 06

RAG tiene dos etapas que fallan de forma distinta, así que las mides por separado. Si las mezclas, pasarás semanas ajustando la mitad equivocada. (El curso de Evals profundiza; aquí va la forma específica de RAG.)

Two stages — mide la recuperación y la generación por separado

Un restaurante con un plato malo tiene dos posibles culpables — los ingredientes entregados o el cocinero. Pruebas primero los ingredientes, o reentrenarás a la persona equivocada.

Una respuesta RAG puede fallar porque la recuperación trajo los chunks equivocados, o porque la generación respondió mal a partir de los chunks correctos. Cada caso necesita un arreglo distinto, así que mídelos por separado: ¿volvieron los chunks correctos? y, dados esos chunks, ¿fue la respuesta fiel y completa? La mayoría de los equipos que "no logran mejorar su RAG" solo puntúan la respuesta final y adivinan a qué mitad culpar.

QuestionRetrievalfetch chunksGenerationanswer from chunksRetrieval evalright chunks back?Generation evalfaithful and complete?two meters,two fixes
Cada etapa tiene su propio medidor — y su propio arreglo.

Retrieval Eval — ¿volvieron los chunks correctos?

Antes de juzgar el ensayo, comprueba que al estudiante siquiera le dieron las páginas de referencia correctas — si no, nada de lo que escribió podía ser correcto.

Evalúa la recuperación por sí sola — esto es una retrieval eval: para un conjunto de preguntas con documentos relevantes conocidos, ¿la búsqueda los devolvió entre los primeros resultados? La proporción de aciertos así se suele llamar recall@k. Esto detecta directamente un mal chunking, una búsqueda débil y la falta de reranking — las causas previas de la mayoría de las malas respuestas. Arregla primero la recuperación, porque ninguna mejora del prompt o del modelo puede rescatar una respuesta construida con los chunks equivocados.

PracticeRetrieval Eval· recall@k
Problema
La respuesta final no te dice si la culpa fue de la búsqueda.
Idea

Preguntas con documentos correctos conocidos: ¿volvieron entre los k primeros?

Ejemplo

De 50 preguntas reales, el documento correcto está entre los 5 primeros en 41.

Qué detecta
Mal chunking, búsqueda débil, falta de reranking.
Relaciones
Mide precision & recall; arréglala antes que la fidelidad.

Faithfulness — ¿fue la respuesta fiel a los chunks?

Un verificador de datos lee la respuesta frente a las fuentes citadas y marca cada frase que las fuentes no respaldan realmente.

Cuando la recuperación ya es buena, evalúa la respuesta por su fidelidad (faithfulness): ¿cada afirmación está respaldada por los chunks recuperados, sin nada inventado y sin nada contradicho? Comprueba también que realmente usó lo recuperado y respondió la pregunta. Aquí es donde detectas que el modelo se aparta de un contexto sólido — y es medible, a menudo con otro modelo como evaluador (LLM-as-judge).

Answer sentence 1Answer sentence 2Answer sentence 3Graderoften another LLMsupported ✓supported ✓not in chunks ✗faithfulness = every claim backed by the retrieved chunks
El evaluador revisa cada frase contra los chunks y marca lo que ellos no respaldan.
TermFaithfulness· groundedness
Qué es

Cada afirmación de la respuesta está respaldada por los chunks recuperados.

Cómo funciona

Un evaluador — a menudo otro modelo — compara las frases con los chunks.

Ejemplo
Dos frases están respaldadas, la tercera no: se marca.
Ojo
Una respuesta fiel a los chunks aún tiene que responder la pregunta.
Relaciones

Mide el grounding; tiene sentido tras una buena retrieval eval.

Golden Set — construye la evaluación con preguntas reales

Pruebas un puente con los camiones que realmente lo cruzarán, no con los pesos que te resulten cómodos.

Tu conjunto de evaluación — a menudo llamado golden set — debe ser de preguntas reales que hacen los usuarios, incluidas las desordenadas y las fuera de alcance, cada una emparejada con los chunks que deberían recuperarse y una respuesta correcta conocida. Ejecútalo en cada cambio para ver si una nueva estrategia de chunking o un reranker realmente ayudó. Sin esto, estás ajustando RAG por anécdotas — y las anécdotas mienten.

questionshould retrievegood answerreal, messychunks 4, 9known answerparaphrasedchunk 12known answerout of scope— none“I don't know”Any changechunking · reranker · promptRun the golden setBetter or worse?measure, don't tune by anecdote
Una tabla de preguntas reales con chunks y respuestas esperados — se ejecuta en cada cambio.
PracticeGolden Set· conjunto de evaluación (eval set)
Problema
Ajustar por anécdotas: "parece que ahora va mejor."
Idea

Preguntas reales + los chunks que deberían volver + una respuesta correcta conocida.

Ejemplo

Una pregunta desordenada, una parafraseada y una fuera de alcance que espera "no lo sé."

Coste
Tiempo para construir y mantener el conjunto.
Relaciones
Alimenta tanto la retrieval eval como la fidelidad.

RAG falla en dos sitios. Mide recuperación y generación por separado, arregla primero la recuperación y construye la evaluación con preguntas reales.

§ 07

RAG es potente y a menudo se usa de más. La habilidad está en usarlo cuando se lo gana, mantener los datos frescos y no pagar por una maquinaria que un enfoque más simple habría evitado.

Paste First — no hagas RAG de lo que podrías simplemente pegar

No montas un catálogo de biblioteca para los tres libros que tienes en el escritorio — simplemente los abres.

Si los hechos relevantes son pocos y fijos — unos cuantos documentos, una política corta — simplemente ponlos en el prompt. RAG se gana su complejidad cuando el conocimiento es demasiado grande para el contexto, cambia a menudo o debe filtrarse por usuario. Construir un pipeline de recuperación sobre tres páginas es el equivalente en sobreingeniería a un bucle de agente para una sola llamada. Recurre a él cuando los datos te obliguen.

Your factsPaste into the promptsmall and fixed: a few docs, a short policyRAGtoo big for context · changes often · per-user filtersmallbig
Pequeño y estable — pégalo en el prompt. Grande, cambiante o por usuario — RAG.
PracticePaste First· context stuffing
Problema
Se construye un pipeline de recuperación donde no hace falta.
Idea
Los hechos pequeños y estables van directo al prompt.
Ejemplo
Una política de dos páginas va en el prompt, sin índice.
Cuándo usar RAG

El conocimiento no cabe en el contexto, cambia a menudo o se filtra por usuario.

Relaciones
El peldaño más bajo de la escalera; RAG es el siguiente.

Index Freshness — datos viejos son datos equivocados

Una guía telefónica solo sirve si se reimprime — los números de hace una década son, con total aplomo, inútilmente erróneos.

La promesa de RAG son hechos al día, lo que significa que tu índice tiene que mantenerse al día. Cuando cambian los documentos de origen, hay que actualizar los chunks y los embeddings — reindexar — o el modelo anclará sus respuestas en texto desactualizado y con aplomo. Planifica la reindexación como parte del sistema, no como una ocurrencia tardía — la frescura es una funcionalidad que hay que mantener, no una propiedad que se obtiene una vez.

Source docsedited · addedReindexre-chunk · re-embedIndexcurrent factsno planStale indexlast month's textOutdated answerconfident and wrong
Arriba: los documentos cambian y el índice se reconstruye. Abajo: sin plan, y las respuestas se quedan viejas.
PracticeIndex Freshness· reindexación
Problema

Los documentos cambiaron pero el índice no — las respuestas están desactualizadas con aplomo.

Idea

Volver a dividir y a generar embeddings de los documentos cambiados, según un plan.

Ejemplo
Se actualiza la política — sus chunks se reconstruyen el mismo día.
Coste
Un pipeline de reindexación que hay que mantener.
Relaciones

Mantiene el grounding al día; afecta a chunks y embeddings.

Cost & Latency — vigílalos

Cada paso extra del pipeline — embeber, buscar, reordenar, meter contexto, generar — añade un poco de tiempo y un poco de dinero a cada pregunta.

RAG añade etapas, y cada una cuesta latencia y tokens. Recuperar más chunks, reordenar, un contexto mayor — todo mejora la calidad hasta cierto punto y sube la factura todo el camino. Así que ajusta hacia los menos chunks que respondan bien, usa caché donde puedas y recuerda que una gran respuesta demasiado lenta o demasiado cara no es una gran respuesta en producción.

Embed+ ms · + $Search+ ms · + $Rerank+ ms · + $Stuff context+ ms · + $Generate+ ms · + $every question pays for every stagefewest chunks that answer well · cache where you can
Cada etapa añade tiempo y dinero — y cada pregunta lo paga.
ConceptCost & Latency
Qué es
Cada etapa de RAG añade tiempo y tokens a cada pregunta.
Cómo funciona

Más chunks, reranking, contexto mayor — mejor calidad hasta cierto punto, siempre más caro.

Ejemplo
Bajar k de 20 a 5 tras el reranking — misma respuesta, factura menor.
Ojo
Una gran respuesta demasiado lenta o cara no es grande en producción.
Relaciones
Tira en contra de precision & recall y del reranking.

RAG es un peldaño; el modelo sigue siendo un componente

Una buena cocina tiene despensa, pero la despensa no es el cocinero — es una entrada bien organizada para alguien que aún tiene que preparar el plato.

RAG está en la escalera por encima de un prompt simple y por debajo de las herramientas y los agentes: recurre a él cuando el modelo necesita tus hechos, y mantenlo detrás de una interfaz limpia como cualquier dependencia. La recuperación alimenta al modelo; no reemplaza el criterio que rodea al modelo. La misma disciplina de siempre — usa el peldaño más simple que funcione y mantén el modelo intercambiable.

Tools & agentsact, not just answerRAGthe model needs your factsPlain promptfacts fit in the promptstart low,climb onlywhen forcedcomplexsimple
Prompt simple → RAG → herramientas y agentes. Sube solo cuando la tarea te obligue.

Cómo se conectan los conceptos

Dos turnos en una misma cocina: de noche la preparación — cortar y colocar todo; de día la cocina — encontrar, elegir y servir.

Todo en este curso es una cadena en dos fases. Offline (indexación): los documentos se cortan en chunks con metadatos, se convierten en embeddings y se guardan en una base de datos vectorial — y se reconstruyen cuando los documentos cambian (index freshness). En el momento de la consulta: la búsqueda híbrida encuentra candidatos, el reranking se queda con los mejores, y precision y recall deciden cuántos tomar. Luego el grounding: el modelo responde solo desde el contexto, con citas o un rechazo honesto. Aparte, paste first: si los hechos son pocos, no necesitas la cadena en absoluto. Y las evals — retrieval eval, faithfulness, el golden set — miden cada eslabón.

Indexing — offline, rerun when docs changeDocsChunk+ metadataEmbedVector DBANN indexQuery timeQuestionHybrid searchkeyword + vectorReranktop 50 → top 5Top-k chunksprecision ↔ recallnearestPaste firstskip RAG if facts are smallLLMcontext onlyAnswercited, or refusesgroundingEvals: right chunks? · faithful? · golden set of real questions
Arriba: la indexación. En medio: el camino de una pregunta. Abajo: las evals que miden toda la cadena.
Antes de lanzar una función con RAG
  • ¿Hace falta RAG siquiera — o los hechos son lo bastante pequeños y estables para pegarlos en el prompt?
  • ¿Cómo se dividen los documentos — por significado, autónomos, con metadatos y un poco de solapamiento?
  • ¿La recuperación es híbrida y con reranking, o una búsqueda vectorial en bruto que nunca mediste?
  • ¿El modelo responde solo desde el texto recuperado, cita fuentes y dice "no lo sé"?
  • ¿Cuál es la eval de la recuperación, separada de la generación?
  • ¿Cómo se mantiene fresco el índice, y cuánto cuesta una consulta en tiempo y tokens?
Señales de que el problema es la recuperación
  • Las respuestas son erróneas con aplomo, y nunca miraste los chunks que se recuperaron.
  • Solo búsqueda vectorial en bruto — sin respaldo por palabras clave, sin reranking.
  • Chunks divididos por número de caracteres, cortando frases y tablas.
  • Estás retocando el prompt y el modelo para arreglar lo que en realidad es un fallo de recuperación.
  • El índice no se ha reconstruido desde que cambiaron los documentos de origen.
Señales de que lo construiste bien
  • Los chunks son semánticos y autónomos, etiquetados con metadatos para filtrar y citar.
  • La recuperación es híbrida + reranking, ajustada a los menos chunks que respondan bien.
  • Las respuestas están ancladas y con citas, con un rechazo honesto cuando los hechos no se recuperan.
  • Mides recuperación y generación por separado, y arreglaste primero la recuperación.
  • El índice tiene un plan de frescura, y RAG está detrás de una interfaz que podrías cambiar.

Hoja de referencia: los 22 conceptos

Bases

Knowledge Cutofffecha de corte de entrenamiento

El modelo solo conoce los datos de entrenamiento hasta una fecha — no tus documentos.

RAGRetrieval-Augmented Generation

Recuperar los chunks relevantes, ponerlos en el contexto y responder a partir de ellos.

Groundingresponder desde fuentes

La respuesta se apoya en texto recuperado, y se puede comprobar.

Chunking

Chunkpasaje

Un pasaje de unos cientos de palabras — la unidad de búsqueda; el tamaño se ajusta midiendo.

Structure-Aware Chunkingdividir por estructura

Dividir por títulos y párrafos, con un pequeño solapamiento.

Metadataetiquetas del chunk

Fuente, fecha, sección, permisos — para filtrar y citar.

Embeddings y búsqueda

Embeddingvector

Un vector — las coordenadas del significado de un texto.

Vector Searchbúsqueda semántica

Encontrar los chunks más cercanos a la pregunta en significado.

Vector DatabaseANN index

Guarda vectores y encuentra los más cercanos en milisegundos.

Similar ≠ Relevantsimilitud vs relevancia

Un chunk cercano en significado no necesariamente contiene la respuesta.

Calidad de la recuperación

Hybrid Searchkeyword + vector

Buscar por palabras y por significado a la vez, y fusionar los resultados.

Rerankingtwo-stage retrieval

Reunir candidatos de forma amplia y luego elegir con cuidado los mejores.

Precision & Recalltop-k

Muy pocos chunks — se pierde la respuesta; demasiados — se ahoga. Mide k.

Grounding

Context-Only Answeringresponder desde el contexto

Responder solo desde los chunks recuperados, nunca desde la memoria del modelo.

Citationsatribución de fuentes

Cada afirmación apunta a su chunk y se puede comprobar.

Refusal“no lo sé”

No hay respuesta en los chunks — decirlo con honestidad en lugar de inventar.

Evaluación

Retrieval Evalrecall@k

¿Volvieron los chunks correctos entre los k primeros? Arregla esto primero.

Faithfulnessgroundedness

Cada afirmación de la respuesta está respaldada por los chunks.

Golden Seteval set

Preguntas reales con chunks y respuestas esperados — se ejecuta en cada cambio.

Construirlo bien

Paste Firstcontext stuffing

Unos pocos hechos estables — usa el prompt, no RAG.

Index Freshnessreindexación

Los documentos cambiaron — reindexa, o las respuestas se quedan viejas.

Cost & Latencytiempo y tokens

Cada etapa cuesta tiempo y tokens; toma el k más pequeño que responda bien.

RAG es un sistema de búsqueda con un modelo al final. Acierta con los chunks y la respuesta llega sola — el modelo rara vez era el problema.

Fin del curso exprés · 7 capítulos · 22 conceptos

Lo siguiente es la práctica: construye el RAG real más pequeño sobre un puñado de tus propios documentos — chunking por estructura, embeddings, búsqueda, y que el modelo responda con citas y un "no lo sé" honesto. Luego, antes de ajustar nada, escribe diez preguntas reales y revisa qué se recupera. Pero mantén una idea por encima de las demás: cuando la respuesta está mal, mira primero los chunks. En RAG, el modelo rara vez es el problema — tu recuperación sí, y esa es la mitad que controlas.