“No obligues al modelo a memorizar la biblioteca. Dale las tres páginas que necesita, abiertas en el párrafo correcto.”
Qué es realmente el RAG
El RAG separa lo que el sistema sabe de lo que el sistema dice. El conocimiento vive en un índice que controlas y puedes actualizar cada hora. El modelo solo aporta el lenguaje y el razonamiento sobre lo que le pongas delante. Cuando llega una pregunta, buscas en el índice, recuperas los pasajes más relevantes y los colocas en el prompt como contexto.
Esta es la respuesta correcta a casi todos los problemas de «chatea con nuestros documentos», «asistente de soporte» o «conocimiento interno». Es más barato que el fine-tuning, actualizable en tiempo real y, sobre todo, auditable: puedes mostrar exactamente de qué fuente vino la respuesta.
El pipeline ingenuo, y por qué se rompe
La versión de demo: divide cada documento en fragmentos fijos de 500 tokens, haz embedding de cada uno, guárdalos en una base de datos vectorial, haz embedding de la consulta, toma los cinco fragmentos más cercanos y mételos en el prompt. Funciona en unas FAQ ordenadas y se desmorona en conjuntos de documentos reales. Aquí es donde:
- Mal troceado: la respuesta queda repartida entre dos fragmentos, así que ninguno basta por sí solo.
- Fallo de recuperación: el pasaje relevante no aparece en los primeros resultados porque la consulta y el documento usan palabras distintas.
- Modelo de embedding equivocado: tu dominio (legal, médico, jerga interna) no está bien representado, así que los vectores «similares» no lo son de verdad.
- Contexto ignorado: el modelo tiene el pasaje correcto pero responde igualmente desde sus datos de entrenamiento.
- Índice obsoleto: el documento cambió; el índice no.
El patrón que llega a producción: híbrido + reordenar + citar
Tres añadidos arreglan la mayoría de los RAG en producción. Primero, la búsqueda híbrida: combina la similitud vectorial con la búsqueda por palabras clave a la antigua (BM25). La búsqueda vectorial capta el significado; la búsqueda por palabras clave capta los términos exactos (códigos de error, nombres, referencias) que los vectores difuminan. Ejecuta ambas y fusiona los resultados.
Segundo, el reordenamiento. Recupera con una red amplia (cincuenta candidatos), luego puntúalos con un reordenador más preciso (y más caro), y quédate solo con los cinco mejores para el prompt. Obtienes la cobertura de una búsqueda amplia con la precisión de una minuciosa.
Tercero, las citas. Haz que el modelo cite el id del fragmento que usó para cada afirmación. Esto vuelve auditable la respuesta, te permite mostrar las fuentes en la interfaz y reduce, de forma medible, que el modelo se aleje del texto recuperado.
Cuándo la recuperación es la herramienta equivocada
El RAG responde a preguntas cuya respuesta está escrita en algún sitio. No ayuda con preguntas que requieren razonar sobre todo el corpus («¿cuáles son los tres grandes temas de estos 10 000 tickets?») ni con el cálculo («¿cuál es nuestro tiempo medio de resolución?»). Esas requieren agregación, analítica o herramientas (que se ven en el siguiente capítulo), no recuperación.
Una línea por cada uno
- El RAG separa lo que el sistema sabe (el índice) de lo que dice (el modelo). Actualiza el índice, no el modelo.
- El RAG ingenuo se rompe por el troceado, los fallos de recuperación, los embeddings equivocados, el contexto ignorado y los datos obsoletos; todo invisible sin evaluaciones.
- El patrón que llega a producción: búsqueda híbrida + reordenar + citas.
- El RAG responde a «encuentra el pasaje», no a «razona sobre todo» ni «calcula un número»; esos necesitan herramientas.
Adónde ir ahora