[ad_1]
Una de las aplicaciones más comunes de la IA generativa y los modelos de lenguaje grande (LLM) es responder preguntas basadas en un cuerpo de conocimiento externo específico. La generación aumentada de recuperación (RAG) es una técnica popular para crear sistemas de preguntas y respuestas que utilizan una base de conocimiento externa. Para obtener más información, consulte Creación de un potente robot de preguntas y respuestas con Amazon SageMaker, Amazon OpenSearch Service, Streamlit y LangChain.
Los sistemas 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 inútiles como «No sé» o respuestas incorrectas e inventadas de un LLM. En esta publicación, demostramos una solución para mejorar la calidad de la respuesta en tales casos de uso en comparación con los sistemas RAG tradicionales mediante la introducción de un componente de aclaración interactivo utilizando LangChain.
La idea central es permitir que el sistema RAG inicie un diálogo con el usuario cuando la pregunta inicial no está clara. Al hacer preguntas aclaratorias, solicitar al usuario más detalles e incorporar nueva información contextual, el sistema RAG puede capturar el contexto necesario para proporcionar una respuesta precisa y útil, incluso a una consulta inicial ambigua del usuario.
Descripción general de la solución
Para demostrar nuestra solución, configuramos un índice de Amazon Kendra (que consta de la documentación en línea de AWS para Amazon Kendra, Amazon Lex y Amazon SageMaker), un agente LangChain con un LLM de Amazon Bedrock y una sencilla interfaz de usuario Streamlit.
requisitos
Para ejecutar esta demostración en su cuenta de AWS, debe cumplir con los siguientes requisitos:
- Clona el repositorio de GitHub y sigue los pasos explicados en el archivo README.
- Implemente un índice de Amazon Kendra en su cuenta de AWS. Puede utilizar la siguiente plantilla de AWS CloudFormation para crear un nuevo índice o utilizar un índice que ya se esté ejecutando. Proporcionar un nuevo índice puede generar cargos adicionales en su factura. Por lo tanto, recomendamos eliminarlo cuando ya no lo necesites. Tenga en cuenta que los datos del índice se envían al modelo de Amazon Bedrock Foundation (FM) seleccionado.
- El agente LangChain se basa en los FM disponibles en Amazon Bedrock, pero se puede adaptar a cualquier otro LLM que admita LangChain.
- Para experimentar con la interfaz de muestra compartida con el código, puede utilizar Amazon SageMaker Studio para ejecutar una implementación local de la aplicación Streamlit. Tenga en cuenta que existe un costo adicional para ejecutar esta demostración.
Implementar la solución
Los agentes RAG tradicionales suelen diseñarse de la siguiente manera. El agente tiene acceso a una herramienta para recuperar documentos relevantes a la solicitud de un usuario. Luego, los documentos recuperados se insertan en el mensaje de LLM para que el agente pueda proporcionar una respuesta basada en los fragmentos de documentos recuperados.
En esta publicación implementaremos un agente que tiene acceso a KendraRetrievalTool
y deriva documentos relevantes del índice de Amazon Kendra y proporciona la respuesta basada en el contexto recuperado:
El código de implementación completo se puede encontrar en el repositorio de GitHub. Para obtener más información sobre los casos de uso tradicionales de RAG, consulte Respuesta a preguntas mediante recuperación de generación aumentada con modelos base en Amazon SageMaker JumpStart.
Considere el siguiente ejemplo. Un usuario pregunta: «¿Cuántas GPU tiene mi instancia EC2?» Como se muestra en la siguiente captura de pantalla, el agente busca la respuesta usando 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 le proporciona una respuesta útil, lo que genera una mala experiencia para el cliente.
Para resolver este problema, definimos una herramienta personalizada adicional llamada AskHumanTool
y entregárselo al agente. La herramienta le indica a un LLM que lea la pregunta del usuario y, si es necesario, le haga una pregunta de seguimiento. KendraRetrievalTool
No puedo devolver una buena respuesta. Esto significa que el agente ahora tiene dos herramientas a su disposición:
Esto permite al agente refinar la pregunta o proporcionar el contexto adicional necesario para responder la pregunta. Para guiar al agente en su uso. AskHumanTool
para este propósito, Proporcionamos al LLM la siguiente descripción de la herramienta:
Use this tool if you don’t find an answer using the KendraRetrievalTool. Ask the human to clarify the question or provide the missing information. The input should be a question for the human.
Como se muestra en la siguiente captura de pantalla, con AskHumanTool
El agente ahora identifica preguntas vagas de los usuarios y envía una pregunta de seguimiento al usuario indicando qué tipo de instancia EC2 se está utilizando.
Después de que el usuario especifica el tipo de instancia, el agente inserta la respuesta adicional en el contexto de la pregunta original antes de inferir la respuesta correcta.
Tenga en cuenta que el agente ahora puede decidir cómo usarlo. KendraRetrievalTool
para recuperar los documentos pertinentes o hacer una pregunta aclaratoria AskHumanTool
. La decisión del agente se basa en si considera que los fragmentos de documento incluidos en el mensaje son suficientes para proporcionar la respuesta final. Esta flexibilidad permite que el sistema RAG admita diversas solicitudes de un usuario, incluidas preguntas vagas y bien redactadas.
En nuestro ejemplo, el flujo de trabajo completo del agente se ve así:
- El usuario realiza una solicitud a la aplicación RAG y pregunta: «¿Cuántas GPU tiene mi instancia EC2?»
- El agente utiliza el LLM para decidir qué acciones tomar: Encuentre información relevante para responder a la solicitud del usuario llamando
KendraRetrievalTool
. - El agente utiliza la herramienta para recuperar información del índice de Amazon Kendra. Los fragmentos de los documentos recuperados se pegan en el mensaje del agente.
- El LLM (el agente) concluye que los documentos recuperados de Amazon Kendra no son útiles o no contienen suficiente contexto para brindar una respuesta a la consulta del usuario.
- El agente utiliza
AskHumanTool
para formular una pregunta de seguimiento: «¿Qué tipo de instancia EC2 específica está utilizando?» Conocer el tipo de instancia ayudaría a determinar cuántas GPU tiene». El usuario ingresa la respuesta «ml.g5.12xlarge» y el agente llamaKendraRetrievalTool
nuevamente, pero esta vez el tipo de instancia EC2 se agrega a la consulta de búsqueda. - Después de volver a realizar los pasos 2 a 4, el agente obtiene una respuesta útil y la envía de vuelta al usuario.
El siguiente diagrama ilustra este flujo de trabajo.
El ejemplo descrito en esta publicación ilustra cómo se realiza la adición de la costumbre. AskHumanTool
permite al agente solicitar detalles aclaratorios si es necesario. Esto puede mejorar la confiabilidad y precisión de las respuestas y conducir a una mejor experiencia del cliente en un número creciente de aplicaciones RAG en diferentes dominios.
Limpiar
Para evitar costos innecesarios, elimine el índice de Amazon Kendra cuando ya no lo esté usando y cierre la instancia de SageMaker Studio si la usó para ejecutar la demostración.
Diploma
En esta publicación, mostramos cómo podemos brindar a los usuarios del sistema RAG una mejor experiencia de cliente agregando una herramienta personalizada que permite al sistema solicitar a un usuario la información faltante. Este enfoque interactivo y conversacional representa una dirección prometedora para mejorar las arquitecturas RAG tradicionales. La capacidad de resolver ambigüedades a través del diálogo puede dar como resultado respuestas más satisfactorias a partir de una base de conocimientos.
Tenga en cuenta que este enfoque no se limita a los casos de uso de RAG; Puede usarlo en otros casos de uso de IA generativa que, en esencia, dependen de un agente personalizado. AskHumanTool
Puede ser añadido.
Para obtener más información sobre el uso de Amazon Kendra con IA generativa, consulte Cree rápidamente aplicaciones de IA generativa de alta fidelidad en datos empresariales con Amazon Kendra, LangChain y modelos de lenguaje grandes.
Sobre los autores
Antonia Wiebeler es científica de datos en el Centro de innovación de IA generativa de AWS, donde le gusta crear pruebas de conceptos para los clientes. Su pasión es explorar cómo la IA generativa puede resolver problemas del mundo real y crear valor para los clientes. Incluso cuando no está programando, le gusta correr y participar en triatlones.
Nikita Kosadoi es un científico aplicado en el Centro de innovación de IA generativa de AWS, donde desarrolla soluciones de aprendizaje automático para resolver los problemas de los clientes en todas las industrias. En su puesto, se centra en el avance de la IA generativa para abordar los desafíos del mundo real. En su tiempo libre le gusta jugar voleibol de playa y leer.
[ad_2]