Aprende RAG y Bases de Datos Vectoriales a Fondo

0 de 31 lecciones completas (0%)

13. Solucionando la Amnesia de RAG: La Recuperación Contextual

En la lección anterior, identificamos el talón de Aquiles de un sistema RAG estándar: la «amnesia contextual» entre chunks. Un fragmento de texto no sabe lo que decía el anterior, lo que provoca que nuestro agente falle al intentar recuperar listas o información que abarca varios chunks.

Hoy, vamos a implementar la solución: una técnica avanzada popularizada por la empresa de IA Anthropic, llamada Recuperación Contextual. Según sus estudios, este método puede reducir las búsquedas fallidas en casi un 50%.

¿Qué es la Recuperación Contextual?

La idea es simple pero increíblemente potente. En lugar de simplemente dividir el documento y convertir cada chunk en un vector, añadimos un paso intermedio: enriquecer cada chunk con el contexto que le rodea antes de guardarlo.

Veamos el ejemplo de Anthropic para entenderlo:

  • Chunk Original (Sin Contexto):«Los ingresos de la compañía crecieron un 3% con respecto al trimestre anterior.»
    • Análisis: Este fragmento es casi inútil por sí solo. ¿De qué compañía hablamos? ¿En qué año? ¿En qué trimestre?
  • Chunk Contextualizado (Enriquecido):«[Contexto del informe de Acme Corp para la SEC, Q2 2023. Los ingresos del trimestre anterior fueron de 314 millones de dólares] Los ingresos de la compañía crecieron un 3% con respecto al trimestre anterior.»
    • Análisis: Ahora, este chunk es una mina de oro. Es autónomo y contiene toda la información necesaria para ser útil. Si un usuario pregunta por los resultados de «Acme Corp en 2023», la búsqueda por similitud encontrará este chunk fácilmente.

El nuevo flujo de Ingesta: Añadiendo un «Contextualizador»

El truco consiste en usar un LLM como un «contextualizador» durante la fase de ingesta. Para cada chunk, le pedimos al LLM que lea el documento completo y genere un breve resumen del contexto circundante para añadirlo al principio del chunk.

Nuestro nuevo flujo de ingesta es así:

Documento -> Chunking -> Enriquecimiento con LLM -> Embedding -> Base de Datos

Implementación Práctica en n8n

Para implementar esto, vamos a duplicar nuestro flujo de ingesta anterior y lo modificaremos. En lugar de usar el divisor de texto integrado en el nodo de Supabase, insertaremos un sub-flujo más inteligente.

Para esto, aprovecharemos el trabajo de la comunidad. El creador Mahmut Kasimoglu, de cuyo canal recomiendo aprender, ha diseñado un ingenioso flujo que implementa esta lógica. Vamos a analizar sus componentes clave:

  1. Divisor Recursivo (Nodo de Código): El flujo comienza con un nodo de código que implementa una lógica de división recursiva. Intenta dividir el texto de forma inteligente por párrafos, luego por frases, etc., para mantener la cohesión.
  2. El LLM «Contextualizador» (Nodo AI): Este es el corazón del proceso. Para cada chunk generado, este nodo ejecuta un prompt muy avanzado que le pide al LLM dos cosas:
    • Añadir Contexto: «Proporciona un contexto breve y sucinto para situar este chunk dentro del documento completo.»
    • Corregir Errores: «Si el chunk corta un número, un porcentaje o una tabla por la mitad, reconstrúyelo usando el documento completo para asegurar la integridad de los datos.» (¡Esto es un añadido brillante que soluciona muchos problemas comunes!).
  3. Formateo y Separación: El flujo prepara el texto enriquecido y añade un separador único (ej: |||SPLIT|||) entre cada chunk.
  4. Carga Final (Nodo Supabase): Finalmente, en nuestro nodo de Supabase, en lugar del divisor recursivo, usamos un Character Text Splitter y le decimos que divida el texto cada vez que encuentre nuestro separador único |||SPLIT|||.

[Diagram of the new n8n workflow showing the «Mamut» snippet between the document source and the Supabase loader]

¿El Resultado? Chunks Inteligentes

Con este nuevo flujo, ya no guardaremos chunks «tontos» y aislados. Cada chunk que se almacene en nuestra base de datos será una unidad de información autónoma, enriquecida con el contexto necesario para ser encontrada y utilizada eficazmente.

Ahora que entendemos la teoría y hemos montado nuestro nuevo y potente flujo de ingesta contextual, es hora de ponerlo a prueba. ¿Será capaz de resolver nuestro problema original con el índice? Vamos a averiguarlo.

Resumen de privacidad
Logo JeroCuevas.com

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.

Cookies estrictamente necesarias

Las cookies estrictamente necesarias tiene que activarse siempre para que podamos guardar tus preferencias de ajustes de cookies.

Analítica

Esta web utiliza Google Analytics para recopilar información anónima tal como el número de visitantes del sitio, o las páginas más populares.

Dejar esta cookie activa nos permite mejorar nuestra web.