Mejore las respuestas de LLM en casos de uso de RAG interactuando con el usuario

Mejora las respuestas de LLM en casos de uso de RAG mediante la interacción con el usuario

Una de las aplicaciones más comunes de la IA generativa y los modelos de lenguaje de gran tamaño (LLMs) es responder preguntas basadas en un corpus de conocimiento externo específico. Retrieval-Augmented Generation (RAG) es una técnica popular para construir sistemas de respuesta a preguntas que utilizan una base de conocimiento externa. Para obtener más información, consulta Construye un poderoso bot de respuesta a preguntas con Amazon SageMaker, Amazon OpenSearch Service, Streamlit y LangChain.

Los sistemas de RAG tradicionales a menudo tienen dificultades para proporcionar respuestas satisfactorias cuando los usuarios hacen preguntas vagas o ambiguas sin proporcionar suficiente contexto. Esto lleva a respuestas poco útiles como “No sé” o respuestas incorrectas inventadas por un LLM. En esta publicación, demostramos una solución para mejorar la calidad de las respuestas en tales casos de uso en comparación con los sistemas de RAG tradicionales, mediante la introducción de un componente de aclaración interactivo utilizando LangChain.

La idea principal es permitir que el sistema de RAG se involucre en un diálogo conversacional con el usuario cuando la pregunta inicial no está clara. Al hacer preguntas aclaratorias, solicitando al usuario más detalles e incorporando la nueva información contextual, el sistema de RAG puede recopilar el contexto necesario para proporcionar una respuesta precisa y útil, incluso a partir de una consulta inicial ambigua del usuario.

Descripción general de la solución

Para demostrar nuestra solución, hemos configurado un índice de Amazon Kendra (compuesto por la documentación en línea de AWS para Amazon Kendra, Amazon Lex y Amazon SageMaker), un agente LangChain con un LLM Amazon Bedrock y una interfaz de usuario simple de Streamlit.

Requisitos previos

Para ejecutar esta demostración en tu cuenta de AWS, completa los siguientes requisitos previos:

  1. Clona el repositorio de GitHub y sigue los pasos explicados en el README.
  2. Implementa un índice de Amazon Kendra en tu cuenta de AWS. Puedes utilizar la siguiente plantilla de AWS CloudFormation para crear un nuevo índice o utilizar un índice en funcionamiento. Implementar un nuevo índice puede agregar cargos adicionales a tu factura, por lo tanto, recomendamos eliminarlo si ya no lo necesitas. Ten en cuenta que los datos dentro del índice se enviarán al modelo de base de Amazon Bedrock seleccionado (FM).
  3. El agente LangChain depende de los FM disponibles en Amazon Bedrock, pero esto se puede adaptar a cualquier otro LLM que LangChain admita.
  4. Para experimentar con la interfaz de usuario de muestra compartida con el código, puedes utilizar Amazon SageMaker Studio para ejecutar una implementación local de la aplicación Streamlit. Ten en cuenta que ejecutar esta demostración incurrirá en algunos costos adicionales.

Implementar la solución

Los agentes RAG tradicionales están diseñados a menudo de la siguiente manera. El agente tiene acceso a una herramienta que se utiliza para recuperar documentos relevantes para una consulta del usuario. Los documentos recuperados se insertan en la indicación de LLM, para que el agente pueda proporcionar una respuesta basada en las partes de los documentos recuperados.

En esta publicación, implementamos un agente que tiene acceso a KendraRetrievalTool y deriva documentos relevantes del índice de Amazon Kendra y proporciona la respuesta dada el contexto recuperado:

# herramienta para la recuperación de Kendra
kendra_tool = Tool(
    name="KendraRetrievalTool",
    func=retrieval_qa_chain,
    description="Use esta herramienta primero para responder preguntas de humanos. La entrada para esta herramienta debería ser la pregunta.",
)
# agente tradicional RAG
traditional_agent = initialize_agent(
    agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
    tools=[kendra_tool],
    llm=llm,
    early_stopping_method="generate",
    memory=conversational_memory,
)
# pregunta del usuario
answer = traditional_agent.run("¿Cuántas GPUs tiene mi instancia EC2?")

Consulte el repositorio de GitHub para ver el código de implementación completo. Para obtener más información sobre los casos de uso tradicionales de RAG, consulte Respuesta a preguntas utilizando Generación con Mejora de Recuperación y modelos base en Amazon SageMaker JumpStart.

Considere el siguiente ejemplo. Un usuario pregunta “¿Cuántas GPUs tiene mi instancia EC2?” Como se muestra en la siguiente captura de pantalla, el agente busca la respuesta utilizando KendraRetrievalTool. Sin embargo, el agente se da cuenta de que no sabe a qué tipo de instancia de Amazon Elastic Compute Cloud (Amazon EC2) se refiere el usuario y, por lo tanto, no proporciona una respuesta útil al usuario, lo que resulta en una mala experiencia para el cliente.

Respuesta RAG regular

Para solucionar este problema, definimos una herramienta personalizada adicional llamada AskHumanTool y se la proporcionamos al agente. La herramienta instruye a un LLM para leer la pregunta del usuario y hacer una pregunta de seguimiento al usuario si KendraRetrievalTool no puede encontrar una buena respuesta. Esto implica que el agente ahora tendrá dos herramientas a su disposición:

# herramienta para preguntarle al humano
human_ask_tool = CustomAskHumanTool()
# agente RAG mejorado con dos herramientas
improved_agent = initialize_agent(
    agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
    tools=[kendra_tool, human_ask_tool],
    llm=llm,
    early_stopping_method="generate",
    memory=conversational_memory,
)
# pregunta del usuario
answer = improved_agent.run("¿Cuántas GPUs tiene mi instancia EC2?")

Esto permite que el agente refina la pregunta o proporcione contexto adicional que sea necesario para responder a la instrucción. Para guiar al agente a utilizar AskHumanTool con este propósito, proporcionamos la siguiente descripción de la herramienta al LLM:

Utilice esta herramienta si no encuentra una respuesta utilizando KendraRetrievalTool. Pregunte al humano para aclarar la pregunta o proporcionar la información faltante. La entrada debe ser una pregunta para el humano.

Como se ilustra en la siguiente captura de pantalla, al utilizar AskHumanTool, el agente ahora identifica preguntas ambiguas del usuario y devuelve una pregunta de seguimiento al usuario pidiéndole que especifique qué tipo de instancia EC2 se está utilizando.

Pregunta de seguimiento RAG

Después de que el usuario haya especificado el tipo de instancia, el agente incorpora la respuesta adicional en el contexto de la pregunta original, antes de derivar la respuesta correcta.

Respuesta final mejorada RAG

Tenga en cuenta que el agente ahora puede decidir si utilizar KendraRetrievalTool para recuperar los documentos relevantes o hacer una pregunta aclaratoria utilizando AskHumanTool. La decisión del agente se basa en si encuentra suficiente la información extraída de los fragmentos de documentos insertados en la instrucción para proporcionar la respuesta final. Esta flexibilidad permite que el sistema RAG admita diferentes consultas que un usuario pueda enviar, incluyendo preguntas bien formuladas y vagas.

En nuestro ejemplo, el flujo de trabajo completo del agente es el siguiente:

  1. El usuario realiza una solicitud a la aplicación RAG, preguntando “¿Cuántas GPUs tiene mi instancia de EC2?”
  2. El agente utiliza el LLM para decidir qué acción tomar: Encontrar información relevante para responder la solicitud del usuario llamando a la KendraRetrievalTool.
  3. El agente obtiene información del índice de Amazon Kendra utilizando la herramienta. Los fragmentos de los documentos recuperados se insertan en la indicación del agente.
  4. El LLM (del agente) determina que los documentos obtenidos de Amazon Kendra no son útiles o no contienen suficiente contexto para proporcionar una respuesta a la solicitud del usuario.
  5. El agente utiliza la AskHumanTool para formular una pregunta de seguimiento: “¿Qué tipo de instancia EC2 específica estás utilizando? Saber el tipo de instancia ayudaría a responder cuántas GPUs tiene.” El usuario proporciona la respuesta “ml.g5.12xlarge” y el agente llama a KendraRetrievalTool nuevamente, pero esta vez agrega el tipo de instancia EC2 a la consulta de búsqueda.
  6. Después de repetir los Pasos 2-4 nuevamente, el agente obtiene una respuesta útil y la envía de vuelta al usuario.

El siguiente diagrama ilustra este flujo de trabajo.Arquitectura mejorada de RAG

El ejemplo descrito en esta publicación ilustra cómo la adición de la herramienta personalizada AskHumanTool le permite al agente solicitar detalles aclaratorios cuando sea necesario. Esto puede mejorar la confiabilidad y precisión de las respuestas, lo que lleva a una mejor experiencia del cliente en un número creciente de aplicaciones RAG en diferentes dominios.

Limpieza

Para evitar incurrir en costos innecesarios, elimine el índice de Amazon Kendra si ya no lo está utilizando y cierre la instancia de SageMaker Studio si la utilizó para ejecutar la demostración.

Conclusión

En esta publicación, mostramos cómo habilitar una mejor experiencia del cliente para los usuarios de un sistema RAG al agregar una herramienta personalizada que permite que el sistema solicite al usuario una pieza de información faltante. Este enfoque conversacional interactivo representa una dirección prometedora para mejorar las arquitecturas tradicionales de RAG. La capacidad para resolver ambigüedades a través de un diálogo puede conducir a entregar respuestas más satisfactorias desde una base de conocimientos.

Tenga en cuenta que este enfoque no se limita a los casos de uso de RAG; se puede utilizar en otros casos de uso de IA generativa que dependen de un agente en su núcleo, donde se puede agregar una herramienta personalizada AskHumanTool.

Para obtener más información sobre cómo utilizar Amazon Kendra con IA generativa, consulte Construye rápidamente aplicaciones de IA generativa de alta precisión en datos empresariales utilizando Amazon Kendra, LangChain y modelos de lenguaje grandes.

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Ciencia de Datos

Revelando el Precision@N y Recall@N en un Sistema de Recomendación

Las métricas de precisión son una métrica útil para evaluar el rendimiento general en el aprendizaje automático, ya q...

Inteligencia Artificial

Las métricas pueden engañar, pero los ojos no Este método de IA propone una métrica de calidad perceptual para la interpolación de cuadros de video

El avance en la tecnología de visualización ha hecho que nuestra experiencia de visualización sea más intensa y agrad...

Inteligencia Artificial

Web LLM Trae los Chatbots de LLM al Navegador.

¿No sería genial si pudieras ejecutar LLMs y chatbots de LLM de forma nativa en tu navegador? Aprendamos más sobre el...

Inteligencia Artificial

Persistent Systems moldea el futuro de la ingeniería de software con Amazon CodeWhisperer

Persistent Systems, un proveedor global de ingeniería digital, ha realizado varios pilotos y estudios formales con Am...