Reasoning-Augmented Generation (ReAG) es un enfoque emergente en IA que integra el proceso de razonamiento de un modelo de lenguaje directamente en el flujo de generación de contenido, especialmente para tareas intensivas en conocimiento. En un esquema tradicional de Retrieval-Augmented Generation (RAG), una consulta se responde en dos etapas: primero, recuperando documentos (a menudo mediante una búsqueda basada en similitud semántica) y luego generando una respuesta a partir de esos documentos. Aunque efectivo, este enfoque RAG puede fallar en capturar vínculos contextuales más profundos: puede recuperar texto que parece similar a la consulta pero que omite información relevante.
ReAG se introdujo para superar estas limitaciones al omitir esencialmente el paso de recuperación separado. En lugar de depender de fragmentos preindexados o coincidencias superficiales, ReAG alimenta materiales fuente en bruto (por ejemplo, archivos de texto completos, páginas web u hojas de cálculo) directamente en un modelo de lenguaje de gran tamaño (LLM), permitiendo que el propio modelo determine qué información es útil y por qué. El LLM evalúa el contenido de manera holística y luego sintetiza una respuesta en un solo paso, tratando la recuperación de información como parte de su proceso de razonamiento.
Este enfoque marca un cambio significativo en la forma en que los sistemas de IA manejan el conocimiento externo. El propósito de ReAG es hacer que las respuestas generadas por IA sean más conscientes del contexto, precisas y lógicamente consistentes al aprovechar la capacidad de inferencia del LLM en tiempo real. El modelo puede inferir conexiones sutiles a lo largo de documentos completos en lugar de estar limitado a lo que un índice de búsqueda considera relevante. Esto es especialmente importante en tareas complejas de procesamiento del lenguaje natural, donde la respuesta relevante puede ser implícita o estar dispersa en diferentes secciones del texto.
Al alinear el proceso más estrechamente con la forma en que un investigador humano trabajaría (ojeando fuentes, descartando irrelevancias y enfocándose en detalles significativos), ReAG busca producir resultados que no solo estén fundamentados en hechos, sino que también reflejen una comprensión matizada. En el contexto de la IA moderna, ReAG representa un paso hacia hacer que los modelos generativos “piensen antes de hablar”, inyectando un paso de razonamiento que mejora la fiabilidad y la profundidad. Tiene importancia en NLP e IA como un método para reducir alucinaciones, mantenerse actualizado con el conocimiento dinámico y, en última instancia, generar resultados que reflejen mejor la información del mundo real y sus relaciones lógicas.
Tabla de contenidos
Detalles de la aplicación

ReAG (Retrieval-Augmented Generation with Relevancy Assessment) analiza una pregunta del usuario y escanea los documentos proporcionados para extraer solo la información relevante necesaria para responderla. Emplea dos modelos de lenguaje distintos: uno que evalúa la relevancia de los documentos examinando cada documento individualmente en relación con la pregunta y devolviendo salidas estructuradas en formato JSON que indican si el contenido es relevante. Luego, los segmentos relevantes se recopilan y se pasan al segundo modelo de lenguaje, que genera una respuesta concisa y contextualmente precisa. Este enfoque garantiza que las respuestas sean precisas y fundamentadas en el contexto al filtrar sistemáticamente los datos irrelevantes antes de generar las respuestas.
# ------------------------------ # 1. Package Installation (if needed) # ------------------------------ #!pip install langchain langchain_community pymupdf pypdf openai langchain_openai # ------------------------------ # 2. Imports # ------------------------------ import os import concurrent.futures from pydantic import BaseModel, Field from typing import List from langchain_openai import ChatOpenAI from langchain_core.output_parsers import JsonOutputParser from langchain_community.document_loaders import PyMuPDFLoader from langchain.schema import Document from langchain_core.prompts import PromptTemplate # Load environment variables from a .env file. from dotenv import load_dotenv # ------------------------------ # 3. Environment and Model Initialization # ------------------------------ load_dotenv() # Set your OpenAI API key as an environment variable. #os.environ["OPENAI_API_KEY"] = "sk-<your-openai-api-key>" # Initialize the general language model for question-answering. llm = ChatOpenAI( model="gpt-4o-mini", temperature=0, ) # Initialize a second language model specifically for assessing document relevancy. llm_relevancy = ChatOpenAI( model="o3-mini", reasoning_effort="medium", max_tokens=3000, ) # ------------------------------ # 4. Prompt Templates # ------------------------------ # System prompt to guide the relevancy extraction process. REAG_SYSTEM_PROMPT = """ # Role and Objective You are an intelligent knowledge retrieval assistant. Your task is to analyze provided documents or URLs to extract the most relevant information for user queries. # Instructions 1. Analyze the user's query carefully to identify key concepts and requirements. 2. Search through the provided sources for relevant information and output the relevant parts in the 'content' field. 3. If you cannot find the necessary information in the documents, return 'isIrrelevant: true', otherwise return 'isIrrelevant: false'. # Constraints - Do not make assumptions beyond available data - Clearly indicate if relevant information is not found - Maintain objectivity in source selection """ # Prompt template for the retrieval-augmented generation (RAG) chain. rag_prompt = """You are an assistant for question-answering tasks. Use the following pieces of retrieved context to answer the question. If you don't know the answer, just say that you don't know. Use three sentences maximum and keep the answer concise. Question: {question} Context: {context} Answer: """ # ------------------------------ # 5. Schema Definitions and JSON Parser Setup # ------------------------------ # Define a schema for the expected JSON response from the relevancy analysis. class ResponseSchema(BaseModel): content: str = Field(..., description="The page content of the document that is relevant or sufficient to answer the question asked") reasoning: str = Field(..., description="The reasoning for selecting the page content with respect to the question asked") is_irrelevant: bool = Field(..., description="True if the document content is not sufficient or relevant to answer the question, otherwise False") # Wrapper model for the relevancy response. class RelevancySchemaMessage(BaseModel): source: ResponseSchema # Create a JSON output parser using the defined schema. relevancy_parser = JsonOutputParser(pydantic_object=RelevancySchemaMessage) # ------------------------------ # 6. Helper Functions # ------------------------------ # Format a Document into a human-readable string that includes metadata. def format_doc(doc: Document) -> str: return f"Document_Title: {doc.metadata['title']}\nPage: {doc.metadata['page']}\nContent: {doc.page_content}" # Define a helper function to process a single document. def process_doc(doc: Document, question: str): # Format the document details. formatted_document = format_doc(doc) # Combine the system prompt with the document details. system = f"{REAG_SYSTEM_PROMPT}\n\n# Available source\n\n{formatted_document}" # Create a prompt instructing the model to determine the relevancy. prompt = f"""Determine if the 'Avaiable source' content supplied is sufficient and relevant to ANSWER the QUESTION asked. QUESTION: {question} #INSTRUCTIONS TO FOLLOW 1. Analyze the context provided thoroughly to check its relevancy to help formulize a response for the QUESTION asked. 2. STRICTLY PROVIDE THE RESPONSE IN A JSON STRUCTURE AS DESCRIBED BELOW: ```json {{"content":<<The page content of the document that is relevant or sufficient to answer the question asked>>, "reasoning":<<The reasoning for selecting the page content with respect to the question asked>>, "is_irrelevant":<<Specify 'True' if the content in the document is not sufficient or relevant. Specify 'False' if the page content is sufficient to answer the QUESTION>> }} ``` """ messages = [ {"role": "system", "content": system}, {"role": "user", "content": prompt}, ] # Invoke the relevancy language model. response = llm_relevancy.invoke(messages) #print(response.content) # Debug output to review model's response. # Parse the JSON response. formatted_response = relevancy_parser.parse(response.content) return formatted_response # Extract relevant context from the provided documents given a question, using parallel execution. def extract_relevant_context(question, documents): results = [] with concurrent.futures.ThreadPoolExecutor() as executor: # Submit all document processing tasks concurrently. futures = [executor.submit(process_doc, doc, question) for doc in documents] for future in concurrent.futures.as_completed(futures): try: result = future.result() results.append(result) except Exception as e: print(f"Error processing document: {e}") # Collect content from documents that are relevant. final_context = [ item['content'] for item in results if str(item['is_irrelevant']).lower() == 'false' ] return final_context # Generate the final answer using the RAG approach. def generate_response(question, final_context): # Create the prompt using the provided question and the retrieved context. prompt = PromptTemplate(template=rag_prompt, input_variables=["question", "context"]) # Chain the prompt with the general language model. chain = prompt | llm # Invoke the chain to get the answer. response = chain.invoke({"question": question, "context": final_context}) answer = response.content.split("\n\n")[-1] return answer # ------------------------------ # 7. Main Execution Block # ------------------------------ if __name__ == "__main__": # Load the document from the given PDF URL. file_path = "https://www.binasss.sa.cr/int23/8.pdf" loader = PyMuPDFLoader(file_path) docs = loader.load() print(f"Loaded {len(docs)} documents.") #print("Metadata of the first document:", docs[0].metadata) # Example 1: Answer the question "What is Fibromyalgia?" question1 = "What is Fibromyalgia?" context1 = extract_relevant_context(question1, docs) print(f"Extracted {len(context1)} relevant context segments for the first question.") answer1 = generate_response(question1, context1) # Print the results. print("\n\nQuestion 1:", question1) print("Answer to the first question:", answer1) # Example 2: Answer the question "What are the causes of Fibromyalgia?" question2 = "What are the causes of Fibromyalgia?" context2 = extract_relevant_context(question2, docs) answer2 = generate_response(question2, context2) # Print the results. print("\nQuestion 2:", question2) print("Answer to the second question:", answer2)
El campo is_irrelevant es un indicador booleano que señala explícitamente si un documento (o segmento) contiene suficiente y relevante información para responder a la pregunta del usuario. Cuando is_irrelevant se establece en True, significa que el documento analizado no proporciona contexto adecuado o contenido relevante, lo que hace que sea excluido de la respuesta final. Por el contrario, cuando se establece en False, indica que el documento sí incluye contenido valioso que aborda directamente la consulta del usuario, lo que provoca su inclusión en el contexto que informará la respuesta final generada por el modelo.
He creado un repositorio en GitHub con todo el código que necesitas.
Aquí tienes un enlace a un cuaderno de Google Colab donde puedes hacer pruebas tú mismo.
Superagent también ha desarrollado un ReAG SDK que puedes utilizar, disponible en GitHub.
También escribí un pequeño script en Python para probar el SDK que se menciona a continuación:
""" This module demonstrates how to use the ReagClient to perform a query on a set of documents. It sets up an asynchronous client with the model "ollama/deepseek-r1:7b" and queries it with a document. """ import asyncio from reag.client import ReagClient, Document async def main(): """ Main asynchronous function that: - Initializes a ReagClient with specified model parameters. - Creates a list of Document instances to be used in the query. - Sends a query ("Deep Research?") along with the documents. - Prints the response received from the query. The ReagClient is configured to use: - model: "ollama/deepseek-r1:7b" - model_kwargs: {"api_base": "http://localhost:11434"} """ # Create an asynchronous context for the ReagClient async with ReagClient( model="ollama/deepseek-r1:7b", model_kwargs={"api_base": "http://localhost:11434"} ) as client: # Define a list of documents to be used in the query. docs = [ Document( name="Deep Research", content=( "The Future of Research Workflows: AI Deep Research Agents Bridging " "Proprietary and Open-Source Solutions." ), metadata={ "url": "https://lawrence.eti.br/2025/02/08/the-future-of-research-workflows-ai-deep-research-agents-bridging-proprietary-and-open-source-solutions/", "source": "web", }, ), ] # Perform the query using the client, passing in the document list. response = await client.query("Deep Research?", documents=docs) # Output the query response. print(response) if __name__ == "__main__": # Run the main asynchronous function using asyncio's event loop. asyncio.run(main())
Aplicaciones de ReAG
La capacidad de ReAG para combinar la recuperación de conocimiento en tiempo real con razonamiento lo hace potente para aplicaciones del mundo real. A continuación, se presentan varios dominios y escenarios donde ReAG puede ser particularmente impactante:
- Escritura asistida por IA y generación de contenido: La escritura creativa y técnica puede beneficiarse de ReAG a través de co-pilotos de IA que redactan texto y extraen información relevante mientras escriben. Por ejemplo, considera a un redactor de contenido preparando un artículo sobre el cambio climático. Un asistente impulsado por ReAG podría aceptar el borrador o esquema del artículo y automáticamente buscar informes completos, estudios científicos y artículos de noticias relacionados con cada sección. A medida que el modelo genera párrafos, puede razonar sobre estos documentos fuente para incluir hechos precisos o incluso citas directas, todo dentro del proceso de generación. Esto conduce a un contenido más fundamentado en hechos. En la práctica, herramientas para bloggers o periodistas podrían usar ReAG para generar borradores iniciales de artículos que vengan con citas en línea al material fuente (similar a una entrada bien investigada en Wikipedia). Esto va más allá de la escritura típica de IA (que podría regurgitar conocimiento genérico) al garantizar que el contenido esté respaldado por referencias específicas y actualizadas. Es como tener un asistente de investigación integrado. Por ejemplo, una IA que escriba un ensayo sobre energía renovable podría leer internamente informes recientes sobre energía e incorporar datos sobre el crecimiento de la capacidad solar o cambios en políticas, atribuyéndolos correctamente. Tal sistema reduce el tiempo que los humanos pasan buscando información y verificando la precisión, acelerando así la creación de contenido mientras mantiene la calidad.
- Soporte a la toma de decisiones y sistemas analíticos: En entornos empresariales – desde finanzas hasta derecho y salud – los responsables de tomar decisiones a menudo consultan grandes volúmenes de documentos para llegar a conclusiones. ReAG puede impulsar asistentes de toma de decisiones que, dada una pregunta compleja, escaneen informes financieros de la empresa, análisis de mercado en formato PDF o documentos de políticas y produzcan una respuesta o recomendación bien razonada. Por ejemplo, un analista financiero podría preguntar: «¿Cuáles fueron los principales factores que afectaron nuestros beneficios del cuarto trimestre según nuestros informes internos?» En lugar de solo buscar por palabras clave “beneficios del cuarto trimestre” en una base de datos, un sistema ReAG leería todos los informes trimestrales, transcripciones de llamadas de ganancias y noticias relevantes, luego sintetizaría un resumen coherente (tal vez señalando: «Los costos de materias primas aumentaron un 20% (ver ProcurementReport.pdf) y las ventas en Europa cayeron (ver SalesAnalysis.xlsx)», con esas referencias incrustadas). La ventaja aquí es que la IA no está limitada a datos preetiquetados; puede captar puntos sutiles en el texto, como una discusión sobre un problema que no menciona explícitamente “beneficios” pero es contextualmente crítico. En el ámbito legal, un asistente impulsado por ReAG podría leer jurisprudencia y escritos legales para responder a una consulta como, «¿En qué fundamentos los tribunales han fallado típicamente sobre X en la última década?» proporcionando una respuesta y extractos de los juicios. Esta aplicación muestra cómo ReAG puede asistir en la toma de decisiones de alto riesgo proporcionando una forma de debida diligencia automatizada: razona sobre los mismos materiales en bruto que un experto humano usaría, potencialmente descubriendo insights que una búsqueda más directa podría pasar por alto. Las empresas están explorando esta IA para gestión interna del conocimiento: imagina hacerle a la IA de tu empresa una pregunta estratégica, y ella lee todos los memorandos, correos electrónicos e informes relevantes para darte una respuesta coherente con razonamiento.
- Investigación científica y revisión de literatura: En la ciencia y la academia, el volumen de literatura es masivo y crece a diario. Los investigadores pueden usar ReAG para realizar revisiones de literatura o responder preguntas científicas leyendo múltiples artículos o investigaciones y sintetizando los hallazgos. Por ejemplo, un investigador biomédico podría preguntar, «¿Cuáles son los avances recientes en los métodos de entrega de vacunas de ARNm?» Un sistema ReAG podría recuperar docenas de artículos de investigación recientes y actas de conferencias (sin necesidad de una base de datos preconstruida de ellos), hacer que el LLM analice cada uno en términos de relevancia (tal vez encuentre cinco artículos que realmente aborden nuevos mecanismos de entrega), extraer los resultados clave experimentales o conclusiones de esos artículos, y luego generar un resumen de los avances. De manera crucial, como el modelo lee artículos completos, puede conectar ideas: tal vez el artículo A presenta un nuevo portador de nanopartículas, y el artículo B discute una mejor respuesta inmune con una determinada formulación; la IA podría correlacionar estos puntos y resaltar que ambos mejoraron la estabilidad y la respuesta inmune que están siendo objetivos en los nuevos métodos de entrega. Tal síntesis integral sería difícil para un sistema de búsqueda basado solo en palabras clave. Ya vemos versiones tempranas de esto en herramientas como Elicit o Semantic Scholar’s AI, que intentan responder preguntas a partir de artículos. Avanzando, adoptar ReAG significa que estas herramientas no solo se basarán en coincidencias de títulos/resúmenes, sino que analizarán el contenido de los artículos.
- Gestión del conocimiento en dominios dinámicos: Algunas industrias, como los medios de comunicación o el cumplimiento normativo, lidian con información que cambia continuamente. ReAG brilla en escenarios de datos dinámicos porque no requiere volver a indexar los documentos cuando cambian: procesa lo que esté actual al momento de la consulta. Una aplicación aquí es en la monitorización de medios o inteligencia en tiempo real. Supón que un analista necesita saber, «¿Cómo se mencionó el país X en las noticias globales respecto a inversiones en energía renovable la semana pasada?» Un sistema impulsado por ReAG podría recuperar todos los artículos de noticias relevantes de esa semana (tal vez mediante un feed RSS o API), luego dejaría que el LLM revisara cada artículo, seleccionara las menciones pertinentes de país X y proyectos renovables, y generara un informe conciso. El beneficio es que incluso si la forma en que se expresa la noticia varía (un artículo puede no decir explícitamente «inversión» pero habla de «financiar una planta solar»), el razonamiento del LLM puede capturar la conexión. De manera similar, para cumplimiento, un asistente de IA podría leer todas las nuevas regulaciones o documentos de políticas y responder, «¿Hubo alguna nueva regla esta semana que afectara las medidas de privacidad de datos?» leyendo el texto de esas regulaciones para ver si tocan la privacidad de datos. Esta capacidad de adaptarse a la última información sin necesidad de un reprocesamiento manual es crucial en campos de ritmo rápido.
- Análisis de datos multimodales: Aunque la mayoría de las discusiones actuales sobre ReAG involucran texto, el concepto puede extenderse a otros tipos de datos si el LLM o las herramientas asociadas pueden manejarlos. Por ejemplo, si un LLM puede interpretar imágenes o tablas (con la ayuda de modelos de visión o herramientas de análisis), ReAG podría alimentar texto, figuras o hojas de cálculo en el modelo. Imagina un asistente de inteligencia empresarial que, dada una consulta, vea presentaciones (con gráficos), PDFs (con tablas) e informes de texto – todo junto – y razone sobre ellos. Un AI de Analista de Negocios podría usar esto: preguntar, «¿Cuáles fueron los principales impulsores del rendimiento de este mes según todos los informes de departamento?» la IA podría extraer una tendencia de un gráfico de ventas, un número de una tabla de finanzas de Excel y una declaración del memorando de RRHH, y sintetizar una respuesta combinando las tres modalidades. Aunque el ReAG multimodal verdadero aún está en la vanguardia, los cimientos se están poniendo con los LLMs multimodales (como las funciones de visión de GPT-4 o PaLM-E). Lo significativo es que ReAG no está limitado al texto puro; cualquier información representada en el modelo puede ser razonada. Las primeras demostraciones muestran promesas al combinar texto y tablas para mejores respuestas – por ejemplo, un asistente de IA leyendo el texto de un artículo académico y su gráfico incrustado para responder completamente una pregunta sobre el artículo.
Ventajas y Desafíos de ReAG
Al igual que cualquier enfoque innovador, ReAG tiene ventajas poderosas y desafíos notables. Es importante comprender ambos lados al evaluar ReAG para su uso en sistemas de IA.
Ventajas
- Mayor comprensión contextual: Debido a que ReAG implica que el LLM lea documentos completos, puede captar matices y referencias indirectas que la recuperación basada en palabras clave podría pasar por alto. El modelo considera el contexto completo de cada fuente, lo que permite respuestas que realmente abordan la intención de la consulta. Esto significa que para consultas complejas o abiertas, ReAG tiene más probabilidades de encontrar la aguja en el pajar – por ejemplo, identificando un párrafo relevante enterrado en un informe largo, incluso si no utiliza la frase exacta de la pregunta. Esto conduce a respuestas más precisas y matizadas. Las respuestas pueden incorporar conexiones sutiles (como en el ejemplo anterior del oso polar, donde un documento sobre hielo marino se reconoció como relevante para una pregunta sobre el declive de los osos polares porque el modelo infirió la relación). Esta comprensión holística refleja un análisis a nivel humano y, a menudo, proporciona una mejor cobertura del tema en la respuesta final.
- Reducción de la necesidad de infraestructura compleja: Los pipelines tradicionales de RAG involucran muchas partes móviles – fragmentadores de documentos, generadores de incrustaciones, bases de datos vectoriales, algoritmos de recuperación, recategorizadores, etc. ReAG simplifica drásticamente la arquitectura al transferir la mayor parte de este trabajo al LLM. No es necesario mantener un índice externo o base de datos de incrustaciones, lo que elimina clases de errores como errores de indexación o datos desactualizados. Para los desarrolladores, menos componentes significa mantenimiento e integración más fáciles. Básicamente, solo se necesita el LLM y una manera de alimentar los datos, lo que acelera el desarrollo de características basadas en conocimiento. Como se menciona en un análisis, ReAG reemplaza sistemas de recuperación frágiles con un proceso más ágil y, por lo tanto, evita problemas de desajuste de incrustacioneso peculiaridades en la búsqueda vectorial, permitiendo que «los usuarios consulten documentos en crudo sin luchar con bases de datos vectoriales» (ReAG: Reasoning-Augmented Generation – Superagent). En resumen, ReAG cambia la complejidad del sistema por un enfoque casi directo pero simple: deja que el modelo lo haga. Esto también simplifica las actualizaciones: solo necesitas proporcionar nuevos documentos al modelo en lugar de volver a codificar e indexar todo.
- Información oportuna y actualizada: ReAG trabaja inherentemente con los documentos más recientes disponibles al momento de la consulta, por lo que maneja las actualizaciones de conocimiento dinámicas de manera más eficiente. En dominios donde la información cambia con frecuencia (noticias, informes financieros, descubrimientos científicos), ReAG puede obtener los datos más recientes sin sobrecarga adicional. El RAG tradicional podría requerir el reprocesamiento periódico de un corpus para mantenerse al día, lo cual, si no se hace, resultaría en que el modelo utilice información desactualizada. Con ReAG, si un documento existe, se puede considerar en la respuesta a la consulta. Esto lo hace atractivo para aplicaciones como respuestas a preguntas en vivo, monitoreo de eventos o cualquier escenario donde desees que la base de conocimientos de la IA esté tan actualizada como tus datos. Por ejemplo, un asistente de IA para una revista médica podría responder una pregunta sobre un estudio muy reciente tan pronto como el texto de ese estudio esté disponible, sin esperar a que se ejecute un pipeline de indexación.
- Mejora en la consistencia lógica y el uso de evidencia: Al estructurar la tarea de manera que el modelo deba extraer contenido de apoyo antes de responder, ReAG fomenta que el modelo se adhiera a la evidencia y mantenga la consistencia lógica. Los pasos intermedios del razonamiento del modelo (decidir la relevancia, extraer hechos) actúan como una forma de cadena de pensamiento que fundamenta la salida final. Esto tiende a reducir las alucinaciones y las afirmaciones no respaldadas, uno de los problemas de los modelos generativos puros. Las técnicas que combinan razonamiento y recuperación (como el enfoque ReAct) han demostrado tasas significativamente más bajas de alucinaciones porque el modelo «se verifica» a sí mismo contra datos reales. ReAG cae en esta categoría – dado que la respuesta se basa explícitamente en fragmentos de fuentes, la probabilidad de que introduzca una afirmación completamente infundada es más baja. Además, las respuestas finales pueden ir acompañadas de referencias a los documentos fuente (como se hace con frecuencia en RAG y también posible en ReAG), lo que añade transparencia. Los usuarios pueden ver qué documento y pasaje respalda una parte de la respuesta, aumentando la confianza. Esta explicabilidad – el modelo puede señalar por qué respondió de una determinada manera – es un beneficio directo del diseño centrado en el razonamiento.
- Manejo de consultas de múltiples pasos y relaciones indirectas: ReAG es particularmente poderoso para consultas que requieren sintetizar información de múltiples fuentes o seguir una línea de razonamiento a través de diferentes piezas de datos. Debido a que el LLM realiza un análisis personalizado de cada documento, puede encontrar y unir piezas de información que una simple recuperación no podría conectar. Por ejemplo, una consulta podría requerir información del Documento A y del Documento B combinados – un sistema ReAG puede leer ambos completos y notar la conexión. El RAG tradicional podría extraer esos documentos, pero el modelo los vería solo de forma aislada, como se proporcionan en el contexto. En ReAG, el modelo puede inferir relaciones («El hallazgo X del Documento A podría estar relacionado con la declaración Y del Documento B») durante su etapa de razonamiento, llevando a una respuesta más coherente de múltiples pasos. Esto lo hace adecuado para tareas complejas de preguntas y respuestas y soporte a decisiones donde se requiere razonamiento a través de fuentes.
- Flexibilidad con modalidades de datos: Otra ventaja es que ReAG no depende de un único espacio de incrustación uniforme, por lo que puedes introducir varios tipos de datos siempre que el modelo (o una herramienta adjunta) pueda manejarlos. Podrías alimentar directamente texto OCR de imágenes, transcripciones de audio o datos de hojas de cálculo. Un LLM con habilidades de visión o herramientas de análisis de tablas podría procesar esos formatos como parte del razonamiento. Esta flexibilidad es más difícil en pipelines estándar, que generalmente manejan una única modalidad a la vez (o requieren índices separados por modalidad). En ReAG, el trabajo del desarrollador es obtener los datos crudosantes del modelo. Esto abre la puerta a preguntas y respuestas multimodales ricas sin la necesidad de un índice multimodal elaborado. Por ejemplo, sin un código especial, un sistema ReAG podría considerar el texto de la leyenda de una imagen y el texto que la rodea en un documento para responder a una pregunta sobre el contenido de la imagen – todo es solo “texto del documento” para el modelo.
Desafíos de Implementar ReAG
Aunque ReAG tiene varias ventajas poderosas, también enfrenta desafíos que deben considerarse antes de su implementación. A continuación, se detallan algunos de los principales obstáculos asociados con el uso de ReAG:
- Alto costo computacional: Uno de los inconvenientes más citados de ReAG es su alto costo computacional y financiero en comparación con métodos tradicionales. Hacer que un modelo de lenguaje grande (LLM) lea cada documento para cada consulta es una carga pesada. Si tienes 100 documentos y haces una sola pregunta, el modelo podría ser invocado 101 veces (100 para análisis + 1 para síntesis). En contraste, usar incrustaciones precomputadas y una base de datos vectorial podría recuperar fragmentos relevantes en milisegundos. Por ejemplo, analizar 100 artículos de investigación mediante ReAG significa 100 llamadas separadas al LLM, mientras que RAG podría escanear un índice casi instantáneamente para extraer algunos pasajes. Esta diferencia puede traducirse en un costo significativo (si se utilizan API de pago) y en latencia. Incluso con paralelización, el cálculo total es proporcional al número de documentos multiplicado por el costo por inferencia del modelo. Para implementaciones grandes, esto no escala bien. Ejecutar ReAG en corpus muy grandes(miles o millones de documentos) es actualmente poco práctico sin introducir algunos atajos. Se espera que este desafío de costos se mitigue con el tiempo a medida que mejore la eficiencia de los modelos, pero por ahora, el costo sigue siendo una barrera. Los desarrolladores deben decidir cuidadosamente cuándo la mejora en la calidad de las respuestasjustifica el cómputo adicional. Algunos podrían optar por habilitar ReAG solo para consultas que realmente lo necesiten (consultas complejas), mientras que utilizan métodos de recuperación más baratos para preguntas más sencillas.
- Tiempo de respuesta más lento: Relacionado con el costo está el problema de la velocidad. Incluso si se ejecuta en paralelo, alimentar y procesar documentos grandes tiene una latencia inherente. Si cada documento tarda un segundo en ser procesado por el modelo (lo cual podría ser conservador dependiendo del tamaño del modelo y la longitud del documento), procesar 100 documentos en paralelo aún toma aproximadamente un segundo más algunos sobrecostos. Esto es mucho más lento que una búsqueda típica en motores de búsqueda. Los usuarios podrían notar este retraso en aplicaciones interactivas como chatbots si el sistema está conectado a muchos documentos. Esto podría ser un inconveniente en escenarios donde el tiempo es crítico (como asistencia en tiempo real). A medida que crece el conjunto de datos, ReAG tiene dificultades: “Incluso con paralelización, ReAG podría sufrir con conjuntos de datos masivos. Si necesitas respuestas en tiempo real a través de millones de documentos, un enfoque híbrido podría ser mejor, usando RAG para el filtrado inicial y ReAG para el análisis final”. Esto resalta que ReAG puro no escala de manera fluida en entornos de grandes datos donde se espera una recuperación en subsegundos; se necesita un compromiso. El almacenamiento en caché puede aliviar esto hasta cierto punto (por ejemplo, si se pregunta repetidamente por el mismo documento, se podría almacenar en caché su resumen extraído), pero el almacenamiento en caché es más difícil aquí que en RAG porque lo que se extrae es dependiente de la consulta.
- Limitaciones en la ventana de contexto: Aunque ReAG aprovecha las grandes ventanas de contexto, sigue estando limitado por ellas. El paso final de generación de respuestas podría alcanzar los límites de contexto si la información relevante se encuentra distribuida a través de demasiados documentos o si los documentos individuales son muy grandes. Los modelos actuales de vanguardia tienen tamaños de contexto de hasta 100k tokens (GPT-4 32K o Claude 100K, con experimentos hasta 1M). Estos son enormes, pero no infinitos; si una consulta realmente necesita contenido de docenas de documentos largos, el modelo podría no ser capaz de considerar todo al mismo tiempo al formular una respuesta. Esto podría obligar al sistema a descartar fragmentos menos relevantes o resumirlos más, perdiendo potencialmente detalles. Además, el paso de análisis de documentos está limitado por el contexto. Si un solo documento excede lo que el modelo puede leer de una vez, tendrás que fragmentarlo y posiblemente perder algo de razonamiento entre fragmentos. Esto vuelve a introducir algunos de los problemas de fragmentación que ReAG intentó evitar (aunque dentro de un solo documento, uno podría fragmentarlo con superposición o particionarlo inteligentemente). Hasta que los modelos puedan manejar textos arbitrariamente largos (o se estandarice un enfoque de ventana deslizante), ReAG podría enfrentar desafíos con entradas extremadamente grandes.
- Fiabilidad del modelo y alucinaciones: ReAG generalmente reduce las alucinaciones al estar anclado en los documentos, pero no es una solución mágica. El enfoque aún depende en gran medida del juicio del modelo. Si el modelo no está bien alineado o malinterpreta las instrucciones, podría marcar un documento irrelevante como relevante (detectando una señal falsa) o viceversa. Podría extraer un pasaje que cree que responde a la pregunta pero que no es completamente correcto o está fuera de contexto. Durante la síntesis final, también existe el riesgo de que el modelo pueda introducir información que “conecte” huecos entre las fuentes, pero que no esté presente (una forma de alucinación). Por ejemplo, si ninguno de los documentos establece explícitamente una respuesta, el modelo podría intentar deducir una y presentarla con confianza, lo cual podría ser incorrecto. En RAG, la separación entre recuperación y generación a veces facilita identificar cuando el modelo está fuera de los límites (ya que solo se le dan ciertos pasajes; si dice algo no relacionado, sabes que está alucinando). En ReAG, el modelo tiene más libertad, lo que es una ventaja pero también un riesgo. Asegurar que los prompts sean precisos (como instruir “usar solo el contenido dado”) es importante, pero no infalible. Por lo tanto, el control de calidadsigue siendo un desafío; es posible que se necesiten pasos de verificación adicionales o un enfoque humano-en-el-buclepara aplicaciones críticas.
- Escalabilidad y mantenimiento: Un enfoque puro de ReAG podría volverse inmanejable para bases de conocimiento grandes. Si una organización tiene un millón de documentos, ejecutarlos a través de un LLM para cada consulta simplemente no es factible. Esto lleva a la necesidad probable de sistemas híbridos, donde algún procesamiento previo o recuperación liviana reduzca el alcance antes de usar ReAG. Diseñar tales sistemas híbridos introduce complejidad que parcialmente niega la ventaja de simplicidad. Se vuelve un desafío encontrar el equilibrio óptimo: demasiado pre-filtrado podría reintroducir el riesgo de perder información relevante (lo cual ReAG busca evitar), mientras que demasiado poco lo hace lento. En términos de mantenimiento, aunque es agradable no gestionar un índice, uno tiene que mantener las configuraciones de los promptsy posiblemente actualizarlas conforme el modelo cambia. Si se cambia a un modelo nuevo con un estilo diferente, podría ser necesario ajustar cómo se extrae el contenido o cómo se le instruye para razonar.
- Requerimientos de recursos: Debido a que ReAG a menudo requiere ejecutar modelos grandes muchas veces, demanda recursos computacionales robustos (GPUs, memoria para contextos significativos, etc.). Implementar ReAG a gran escala podría ser prohibitivopara organizaciones sin acceso a estos recursos. Incluso con APIs en la nube, alcanzar límites de tasa o presupuesto podría ser un problema. En cambio, una búsqueda vectorial bien optimizada y un modelo más pequeño podrían ejecutarse en un solo servidor. Por lo tanto, adoptar ReAG podría requerir una inversión en infraestructura de IA de alto nivel.
Comparaciones con otros modelos de IA Generativa
ReAG introduce un paradigma distinto, y es útil compararlo con otros modelos y enfoques destacados en el ámbito de la IA generativa, como los modelos de lenguaje grande estándar como GPT y T5, y el tradicional pipeline de Generación Aumentada por Recuperación (RAG). A continuación, destacamos las principales diferencias y características:
Versus GPT (Transformadores Preentrenados Generativos):
Los modelos GPT (como GPT-3 y GPT-4 de OpenAI) son ejemplos de modelos de lenguaje grande entrenados con texto de internet, lo que les permite generar respuestas fluidas. Por sí solos, los modelos GPT no utilizan documentos externos en el momento de la consulta; dependen del conocimiento almacenado en los parámetros del modelo. GPT puede responder en función de lo que recuerda de los datos de entrenamiento, pero no puede obtener nueva información después de ese entrenamiento. En la práctica, GPT-4 tiene una impresionante capacidad de razonamiento y puede seguir instrucciones, pero si se le pregunta sobre eventos recientes o hechos poco conocidos que no están en su conjunto de entrenamiento, puede inventar respuestas (lo que se conoce como «alucinación»).
ReAG aborda esta limitación siempre fundamentando las respuestas en fuentes proporcionadas, extendiendo efectivamente las capacidades de GPT mediante la recuperación de datos basada en razonamiento. Otra diferencia es la complejidad del pipeline: GPT es directo (entrada de prompt, salida de respuesta), mientras que ReAG orquesta múltiples llamadas a GPT (u otros LLMs similares) y agrega lógica para gestionar los documentos. En esencia, ReAG puede considerarse como un uso más inteligente de GPT. No es una nueva arquitectura de modelo, sino una metodología que se aplica sobre modelos como GPT.
En términos de resultados, un sistema ReAG bien ejecutado será más factual y específico que un GPT convencional, ya que tiene el texto relevante a mano. GPT podría dar una respuesta muy fluida basada en su conocimiento general, pero esa respuesta podría carecer de detalles recientes o cifras específicas que ReAG podría incluir al haber leído una fuente.
Por otro lado, GPT por sí solo es generalmente más rápido y más barato por consulta, ya que solo requiere una ejecución de modelo. Distinción en el uso: GPT (sin recuperación) es bueno para tareas de propósito general, escritura creativa o dominios de conocimiento conocidos; ReAG destaca cuando se necesita información actualizada o específica de una fuente con alta fidelidad. Es importante señalar que se puede combinar GPT con recuperación (lo que esencialmente se convierte en un sistema RAG). ReAG va un paso más allá: en lugar de recuperar pequeños fragmentos para GPT, hace que GPT (o cualquier LLM) realice el razonamiento de recuperación. Así que, se podría decir que ReAG no compite contra GPT, sino que aprovecha GPT de manera diferente. Por ejemplo, se podría usar GPT-4 como el motor dentro de un pipeline ReAG.
Versus T5 (Transformador de Transferencia de Texto a Texto):
T5 es otro modelo de lenguaje (de Google, introducido por Colin Raffel y colaboradores) que trata cada tarea de NLP como un problema de texto a texto. Al igual que GPT, el modelo base de T5 no incorpora datos externos durante la inferencia, a menos que se haya aumentado. T5 (especialmente en versiones grandes o variantes como Flan-T5, que está ajustado a instrucciones) también puede generar y proporcionar algo de razonamiento cuando se le solicita. Sin embargo, el conocimiento de T5 está limitado a sus datos de entrenamiento (por ejemplo, hasta 2019 para el T5 original). El uso de T5 en un entorno como la respuesta a preguntas a menudo requería un ajuste fino con datos específicos de la tarea o utilizarlo como el generador en un sistema RAG.
ReAG, en contraste, puede usar un modelo como T5 de manera cero-shot para responder preguntas sobre documentos nuevos al proporcionar esos documentos junto con la consulta. Se podría imaginar una implementación en la que se le solicite a Flan-T5 que realice los pasos de ReAG (aunque no sea tan capaz como GPT-4, el método es similar).
Las diferencias clave: T5 tiene una arquitectura de codificador-decodificador, lo que podría manejar entradas largas de manera diferente (el codificador puede leer mucho texto, pero aún hay un límite). GPT es solo decodificador, pero tiene ventanas de contexto más grandes en versiones más recientes. Desde la perspectiva del usuario, GPT y T5 sin recuperación son similares, ya que no obtienen información externa activamente. Así, el contraste entre ReAG y T5 es similar al de GPT: ReAG asegura la integración del conocimiento externo mediante razonamiento, mientras que T5 por sí solo quedaría atrapado con un conocimiento estático o requeriría una recuperación explícita.
En comparación con ReAG, GPT y T5 pueden generar respuestas menos lógicamente consistentes en tareas de conocimiento complejas, ya que no tienen un mecanismo incorporado para verificar contra fuentes. Por ejemplo, un GPT/T5 no aumentado podría producir una respuesta plausible pero inconsistente o parcialmente incorrecta si se le plantea una pregunta complicada de múltiples partes.
En contraste, ReAG intentaría validar cada parte leyendo los documentos. Otro punto es que T5 fue diseñado para ser ajustado a tareas específicas, mientras que ReAG es una estrategia de prompting que puede funcionar de manera cero-shot o few-shot. Por lo tanto, ReAG es inherentemente más flexible: no requiere entrenar al modelo para usar la recuperación, utiliza el prompting para lograr el efecto. Esto lo hace relativamente agnóstico al modelo (se podría usar GPT-4, T5, Llama-2, etc., siempre que sean fuertes en comprensión).
Versus RAG (Generación Aumentada por Recuperación):
RAG es el predecesor más directo de ReAG. En los sistemas RAG (formulados por Lewis y colaboradores, 2020), se utiliza un recuperador externo (a menudo un recuperador de vectores densos utilizando incrustaciones) para obtener algunos pasajes relevantes de un corpus grande, y luego esos pasajes se dan al modelo generativo para componer una respuesta. La diferencia clave es cómo se obtiene la información relevante: RAG depende de la búsqueda por similitud (el «secretario judicial» que recupera documentos mediante palabras clave, en una analogía). En cambio, ReAG depende del razonamiento del LLM para evaluar el contenido (actuando como un «académico» que lee todo y subraya las partes útiles). Como resultado, ReAG puede superar algunas limitaciones de RAG. RAG podría pasar por alto documentos relevantes que no comparten un vocabulario obvio con la consulta.
En cambio, ReAG puede captar esos casos porque el modelo lee y puede inferir la relevancia (por ejemplo, identificando un estudio sobre «tendencias en enfermedades pulmonares» como relevante para los impactos de la contaminación del aire, lo cual podría ser omitido por una búsqueda semántica pura). Además, los fragmentos recuperados por RAG suelen ser limitados en tamaño (para ajustarse a la entrada del modelo), lo que puede llevar a perder contexto (el problema de «perderse en el medio», donde información crucial no está en ningún fragmento). ReAG evita esto permitiendo que el modelo vea documentos completos, preservando así el contexto y reduciendo la posibilidad de pasar por alto partes intermedias.
Sin embargo, RAG tiene fortalezas en eficiencia: recuperar vectores y generar rápidamente suele ser más rápido y barato que leer todo. Otra diferencia es la complejidad del sistema: RAG requiere mantener un índice y, a veces, entrenar un modelo recuperador. ReAG simplifica esa configuración a costa de una mayor complejidad de tiempo de ejecución. También hay una diferencia en cómo se generan las respuestas: una vez que se recuperan los pasajes, el modelo genera una respuesta (posiblemente utilizando atención sobre esos pasajes) en RAG. En ReAG, la generación está estrechamente vinculada con el razonamiento que identificó los pasajes. Se puede pensar en ReAG como haciendo gran parte de lo que RAG hace, pero implícitamente a través del trabajo interno del modelo en lugar de pasos externos explícitos.
Enfoque | Uso de Conocimiento Externo | Mecanismo para Recuperación/Integración | Fortalezas | Limitaciones |
---|---|---|---|---|
GPT/T5 (LLM Base) | Sí, usa datos externos mediante un recuperador (por ejemplo, índice de búsqueda o base de datos de vectores) | N/A – genera directamente desde el prompt y su conocimiento interno | – Generación fluida y de propósito general– Respuesta rápida (un solo paso)– No se necesita configurar una base de conocimiento | – El conocimiento puede estar desactualizado o ser incompleto– Propenso a errores factuales/hallucinations con datos específicos– No puede citar fuentes ni actualizar el conocimiento sin reentrenamiento |
RAG (Generación Aumentada por Recuperación) | Razonamiento unificado + generación: el LLM lee documentos completos, determina la relevancia y extrae la información clave, luego sintetiza las respuestas en un solo flujo de trabajo | Dos pasos: recuperar fragmentos de texto relevantes (mediante embeddings o búsqueda por palabras clave), luego alimentar esos fragmentos al LLM para la generación de respuestas | – Puede proporcionar información actualizada y específica– Más factual y puede citar fuentes | – Requiere un sistema de recuperación separado (por ejemplo, un índice o base de datos)– Puede ser menos eficiente al manejar grandes volúmenes de documentos |
ReAG (Generación Aumentada por Razonamiento) | Sí, usa datos externos alimentando directamente documentos crudos al LLM | Razonamiento unificado + generación: el LLM lee documentos completos, determina la relevancia y extrae la información clave, luego sintetiza las respuestas en un solo flujo de trabajo | – Comprensión profunda del contexto (lee documentos completos)– Puede captar evidencia sutil o indirecta (el modelo infiere relevancia)– Arquitectura simplificada (sin índice de búsqueda separado)– Las respuestas reflejan detalles matizados de las fuentes | – Alto costo computacional (muchas llamadas al LLM)– Más lento con grandes conjuntos de documentos– Requiere grandes ventanas de contexto y una gestión cuidadosa de los prompts– El razonamiento del modelo debe ser confiable (difícil de depurar errores) |
Tabla: Comparación del LLM estándar con la generación mejorada por recuperación (RAG) y la generación mejorada por razonamiento (ReAG).
Para resumir las diferencias en el flujo de trabajo y el diseño, la siguiente tabla contrasta RAG y ReAG en aspectos arquitectónicos clave:
Aquí tienes la tabla traducida:
Aspecto | Generación Aumentada por Recuperación (RAG) | Generación Aumentada por Razonamiento (ReAG) |
---|---|---|
Acceso a Conocimiento | Siempre utiliza fuentes de datos actualizadas y es dinámico; cualquier nuevo documento puede ser ingresado en tiempo real sin necesidad de reprocesamiento. | Arquitectura simplificada con menos componentes que depende principalmente del ciclo de razonamiento del LLM (menos elementos en movimiento). |
Preparación de Datos | Requiere preprocesamiento: los documentos se dividen en fragmentos e indexan en una base de datos vectorial con incrustaciones. | Siempre utiliza fuentes de datos actualizadas y es dinámico; cualquier nuevo documento puede ser ingresado en tiempo real sin necesidad de reprocesamiento. |
Alcance del Contexto | El LLM solo ve los fragmentos recuperados (una vista parcial de cada documento) y puede perder contexto entre fragmentos si la información está dividida. | El LLM puede interpretar cualquier modalidad; por ejemplo, puede incluir texto, tablas o imágenes directamente utilizando un LLM multimodal. |
Complejidad del Pipeline | Siempre utiliza fuentes de datos actualizadas y es dinámico; cualquier nuevo documento puede ser ingresado en tiempo real sin necesidad de reprocesamiento. | Siempre utiliza fuentes de datos actualizadas y es dinámico; cualquier nuevo documento puede ser ingresado en tiempo real sin necesidad de reprocesamiento. |
Escalabilidad | Altamente escalable a grandes corpus (millones de documentos) ya que la recuperación es rápida e independiente del tamaño del LLM. | El LLM puede interpretar cualquier modalidad; por ejemplo, puede incluir texto, tablas o imágenes directamente utilizando un LLM multimodal. |
Frescura de los Datos | El LLM puede interpretar cualquier modalidad; por ejemplo, si se usa un LLM multimodal, puede incluir texto, tablas o imágenes directamente. | El LLM puede interpretar cualquier modalidad; por ejemplo, puede incluir texto, tablas o imágenes directamente utilizando un LLM multimodal. |
Criterio de Relevancia | Siempre utiliza fuentes de datos actualizadas y es dinámico; cualquier nuevo documento puede ser ingresado en tiempo real sin necesidad de reprocesamiento. | La recuperación por similitud puede devolver «fragmentos similares» en lugar de la información relevante, basándose en coincidencias superficiales. |
Modalidades Soportadas | Principalmente texto (recuperación estructurada de texto). El manejo de imágenes o tablas requiere pipelines separados o incrustaciones por modalidad. | El LLM puede interpretar cualquier modalidad; por ejemplo, puede incluir texto, tablas o imágenes directamente si se usa un LLM multimodal. |
Tabla 1: Comparación arquitectónica entre RAG y ReAG. RAG utiliza la recuperación explícita (con incrustaciones y búsqueda vectorial) para proporcionar al LLM fragmentos relevantes. En cambio, ReAG aprovecha el LLM para evaluar documentos completos y extraer información relevante mediante el razonamiento. Estas diferencias dan lugar a distintos compromisos en el diseño y las capacidades del sistema.
Conclusión
El futuro de ReAG se ve prometedor, con muchos desarrollos complementarios que abordan sus desafíos actuales y expanden sus capacidades. Un resumen adecuado del blog de Superagent es: «ReAG no se trata de reemplazar a RAG, sino de repensar cómo los modelos de lenguaje interactúan con el conocimiento». Este repensar es un proceso en curso. Es probable que veamos a ReAG evolucionar de un enfoque novedoso a una práctica estándar para la construcción de sistemas de IA que requieren información extensa. Como los investigadores de IA suelen encontrar, las ideas que comienzan como separadas (recuperación vs razonamiento) eventualmente se fusionan en sistemas unificados para la eficiencia y el rendimiento. ReAG es un paso en esa dirección: unificando la recuperación con el razonamiento. El «santo grial» serían modelos que inherentemente sepan cuándo y cómo recuperar información y cómo razonar sobre ella, todo como parte de su comportamiento aprendido. Estamos avanzando hacia eso con cada uno de estos avances futuros. En términos prácticos, se puede esperar que los futuros asistentes de IA sean mucho más hábiles para manejar consultas complejas y ricas en información, proporcionando respuestas correctas y explicando claramente el proceso de pensamiento y las fuentes detrás de ellas. En un mundo cada vez más saturado de datos, una IA aumentada por razonamiento será invaluable para dar sentido a todo.
ReAG: Reasoning-Augmented Generation – Superagent
GitHub – superagent-ai/reag: Reasoning Augmented Generation
[2005.11401] Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks
What Is Retrieval-Augmented Generation aka RAG | NVIDIA Blog
NeedleBench: Can LLMs Do Retrieval and Reasoning in 1 Million Context Window
https://medium.com/nerd-for-tech/fixing-rag-with-reasoning-augmented-generation-919939045789