La IA conversacional ha recorrido un largo camino en los últimos años gracias a los rápidos avances en la IA generativa, especialmente las mejoras en el rendimiento de los grandes modelos de lenguaje (LLM) introducidas por técnicas de capacitación como el ajuste fino de la instrucción y el aprendizaje reforzado a partir de la retroalimentación humana. Cuando se les solicita correctamente, estos modelos pueden mantener conversaciones coherentes sin datos de entrenamiento específicos de la tarea. Sin embargo, no pueden generalizar bien a preguntas específicas de la empresa porque, para generar una respuesta, dependen de los datos públicos a los que estuvieron expuestos durante la capacitación previa. Estos datos a menudo carecen del conocimiento especializado contenido en los documentos internos disponibles en las empresas modernas, que normalmente se necesita para obtener respuestas precisas en ámbitos como la investigación farmacéutica, la investigación financiera y la atención al cliente.
Para crear asistentes de IA que sean capaces de mantener debates basados en conocimientos empresariales especializados, necesitamos conectar estos LLM potentes pero genéricos a bases de conocimiento internas de documentos. Este método de enriquecer el contexto de generación de LLM con información recuperada de sus fuentes de datos internas se llama Generación Aumentada de Recuperación (RAG) y produce asistentes que son específicos del dominio y más confiables, como lo muestra Generación aumentada de recuperación para tareas de PNL intensivas en conocimientos. Otro factor detrás de la popularidad de RAG es su facilidad de implementación y la existencia de soluciones maduras de búsqueda vectorial, como las que ofrece amazona kendra (consulta: Amazon Kendra lanza API de recuperación) y Servicio Amazon OpenSearch (consulta: Búsqueda de k-vecino más cercano (k-NN) en Amazon OpenSearch Service), entre otros.
Sin embargo, el popular patrón de diseño RAG con búsqueda semántica no puede responder todos los tipos de preguntas posibles sobre documentos. Esto es especialmente cierto para preguntas que requieren razonamiento analítico en varios documentos. Por ejemplo, imagine que está planificando la estrategia del próximo año de una empresa de inversión. Un paso esencial sería analizar y comparar los resultados financieros y los riesgos potenciales de las empresas candidatas. Esta tarea implica responder preguntas de razonamiento analítico. Por ejemplo, la consulta "Dame las 5 empresas con mayores ingresos en los últimos 2 años e identifica sus principales riesgos" requiere múltiples pasos de razonamiento, algunos de los cuales pueden utilizar la recuperación de búsqueda semántica, mientras que otros requieren capacidades analíticas.
En esta publicación, mostramos cómo diseñar un asistente de documentos inteligente capaz de responder preguntas analíticas y de razonamiento de varios pasos en tres partes. En la Parte 1, revisamos el patrón de diseño RAG y sus limitaciones en cuestiones analíticas. Luego le presentamos una arquitectura más versátil que supera estas limitaciones. La Parte 2 le ayuda a profundizar en el proceso de extracción de entidades utilizado para preparar datos estructurados, que es un ingrediente clave para responder preguntas analíticas. La parte 3 le explica cómo utilizar lecho rocoso del amazonas LLM para consultar esos datos y crear un agente LLM que mejore RAG con capacidades analíticas, lo que le permitirá crear asistentes de documentos inteligentes que puedan responder preguntas complejas específicas de un dominio en múltiples documentos.
Parte 1: limitaciones de RAG y descripción general de la solución
En esta sección, revisamos el patrón de diseño RAG y discutimos sus limitaciones en cuestiones analíticas. También presentamos una arquitectura más versátil que supera estas limitaciones.
Descripción general de RAG
Las soluciones RAG están inspiradas en aprendizaje de representación y búsqueda semántica ideas que se han adoptado gradualmente en problemas de clasificación (por ejemplo, recomendación y búsqueda) y tareas de procesamiento del lenguaje natural (PNL) desde 2010.
El enfoque popular que se utiliza hoy en día se compone de tres pasos:
- Un trabajo de procesamiento por lotes fuera de línea ingiere documentos de una base de conocimientos de entrada, los divide en fragmentos y crea una incrustación para cada fragmento para representar su semántica utilizando un modelo de incrustación previamente entrenado, como Titán Amazonas incorpora modelos y luego utiliza estas incorporaciones como entrada para crear un índice de búsqueda semántica.
- Al responder una nueva pregunta en tiempo real, la pregunta de entrada se convierte en una incrustación, que se utiliza para buscar y extraer los fragmentos de documentos más similares utilizando una métrica de similitud, como la similitud de coseno, y un algoritmo de vecinos más cercanos aproximados. La precisión de la búsqueda también se puede mejorar con el filtrado de metadatos.
- Un mensaje se construye a partir de la concatenación de un mensaje del sistema con un contexto formado por los fragmentos relevantes de documentos extraídos en el paso 2 y la pregunta de entrada misma. Luego, este mensaje se presenta a un modelo LLM para generar la respuesta final a la pregunta a partir del contexto.
Con el modelo de incrustación subyacente adecuado, capaz de producir representaciones semánticas precisas de los fragmentos de documentos de entrada y las preguntas de entrada, y un módulo de búsqueda semántica eficiente, esta solución es capaz de responder preguntas que requieren recuperar información existente en una base de datos de documentos. Por ejemplo, si tiene un servicio o producto, puede comenzar indexando su sección de preguntas frecuentes o su documentación y tener una IA conversacional inicial adaptada a su oferta específica.
Limitaciones de RAG basadas en búsqueda semántica
Aunque RAG es un componente esencial en los asistentes de IA modernos de dominios específicos y un punto de partida sensato para construir una IA conversacional en torno a una base de conocimientos especializada, no puede responder preguntas que requieran escanear, comparar y razonar en todos los documentos de su base de conocimientos. simultáneamente, especialmente cuando el aumento se basa únicamente en la búsqueda semántica.
Para comprender estas limitaciones, consideremos nuevamente el ejemplo de decidir dónde invertir basándose en informes financieros. Si usáramos RAG para conversar con estos informes, podríamos hacer preguntas como "¿Cuáles son los riesgos que enfrentó la empresa X en 2022" o "¿Cuáles son los ingresos netos de la empresa Y en 2022?" Para cada una de estas preguntas, el vector de incrustación correspondiente, que codifica el significado semántico de la pregunta, se utiliza para recuperar los K fragmentos semánticamente similares de documentos disponibles en el índice de búsqueda. Esto generalmente se logra empleando una solución aproximada de vecinos más cercanos, como FAISS, NMSLIB, pgvector u otros, que se esfuerzan por lograr un equilibrio entre la velocidad de recuperación y la recuperación para lograr un rendimiento en tiempo real manteniendo una precisión satisfactoria.
Sin embargo, el enfoque anterior no puede responder con precisión a preguntas analíticas en todos los documentos, como "¿Cuáles son las cinco empresas con mayores ingresos netos en 5?"
Esto se debe a que la recuperación de búsqueda semántica intenta encontrar los K fragmentos de documentos más similares a la pregunta de entrada. Pero como ninguno de los documentos contiene resúmenes completos de los ingresos, devolverá fragmentos de documentos que simplemente contienen menciones de “ingresos netos” y posiblemente “2022”, sin cumplir la condición esencial de centrarse en las empresas con mayores ingresos. Si presentamos estos resultados de recuperación a un LLM como contexto para responder la pregunta de entrada, puede formular una respuesta engañosa o negarse a responder, porque falta la información correcta requerida.
Estas limitaciones surgen por diseño porque la búsqueda semántica no realiza un escaneo exhaustivo de todos los vectores de incrustación para encontrar documentos relevantes. En cambio, utiliza métodos aproximados del vecino más cercano para mantener una velocidad de recuperación razonable. Una estrategia clave para la eficiencia de estos métodos es segmentar el espacio de incrustación en grupos durante la indexación. Esto permite identificar rápidamente qué grupos pueden contener incrustaciones relevantes durante la recuperación, sin la necesidad de realizar comparaciones por pares. Además, incluso las técnicas tradicionales de vecinos más cercanos como KNN, que escanean todos los documentos, solo calculan métricas de distancia básicas y no son adecuadas para las comparaciones complejas necesarias para el razonamiento analítico. Por lo tanto, RAG con búsqueda semántica no está diseñado para responder preguntas que impliquen razonamiento analítico en todos los documentos.
Para superar estas limitaciones, proponemos una solución que combina RAG con extracción de entidades y metadatos, consultas SQL y agentes LLM, como se describe en las siguientes secciones.
Superar las limitaciones de RAG con agentes de metadatos, SQL y LLM
Examinemos más profundamente una pregunta en la que RAG falla, para que podamos rastrear el razonamiento necesario para responderla de manera efectiva. Este análisis debería orientarnos hacia el enfoque correcto que podría complementar a RAG en la solución general.
Considere la pregunta: "¿Cuáles son las 5 empresas con mayores ingresos en 2022?"
Para poder responder a esta pregunta, necesitaríamos:
- Identificar los ingresos de cada empresa.
- Filtrar para mantener los ingresos de 2022 para cada uno de ellos.
- Ordene los ingresos en orden descendente.
- Separe los cinco ingresos principales junto con los nombres de las empresas.
Normalmente, estas operaciones analíticas se realizan sobre datos estructurados, utilizando herramientas como pandas o motores SQL. Si tuviéramos acceso a una tabla SQL que contiene las columnas company
, revenue
y year
, podríamos responder fácilmente a nuestra pregunta ejecutando una consulta SQL, similar al siguiente ejemplo:
SELECT company, revenue FROM table_name WHERE year = 2022 ORDER BY revenue DESC LIMIT 5;
Almacenar metadatos estructurados en una tabla SQL que contiene información sobre entidades relevantes le permite responder muchos tipos de preguntas analíticas escribiendo la consulta SQL correcta. Es por eso que complementamos RAG en nuestra solución con un módulo de consulta SQL en tiempo real contra una tabla SQL, poblada por metadatos extraídos en un proceso fuera de línea.
Pero, ¿cómo podemos implementar e integrar este enfoque en una IA conversacional basada en un LLM?
Hay tres pasos para poder agregar razonamiento analítico SQL:
- Extracción de metadatos – Extraer metadatos de documentos no estructurados en una tabla SQL
- Texto a SQL – Formule consultas SQL a partir de preguntas de entrada con precisión utilizando un LLM
- Selección de herramientas – Identificar si una pregunta debe responderse mediante RAG o una consulta SQL
Para implementar estos pasos, primero reconocemos que la extracción de información de documentos no estructurados es una tarea tradicional de PNL para la cual los LLM son prometedores para lograr una alta precisión a través del aprendizaje de pocas o cero oportunidades. En segundo lugar, la capacidad de estos modelos para generar consultas SQL a partir de lenguaje natural ha sido probada durante años, como se ve en el 2020 liberación of Amazon QuickSightQ. Finalmente, seleccionar automáticamente la herramienta adecuada para una pregunta específica mejora la experiencia del usuario y permite responder preguntas complejas mediante un razonamiento de varios pasos. Para implementar esta función, profundizaremos en los agentes LLM en una sección posterior.
En resumen, la solución que proponemos se compone de los siguientes componentes principales:
- Recuperación de búsqueda semántica para aumentar el contexto de generación
- Extracción y consulta de metadatos estructurados con SQL
- Un agente capaz de utilizar las herramientas adecuadas para responder una pregunta.
Resumen de la solución
El siguiente diagrama muestra una arquitectura simplificada de la solución. Le ayuda a identificar y comprender la función de los componentes principales y cómo interactúan para implementar el comportamiento completo del asistente LLM. La numeración se alinea con el orden de las operaciones al implementar esta solución.
En la práctica, implementamos esta solución como se describe en la siguiente arquitectura detallada.
Para esta arquitectura, proponemos una implementación en GitHub, con componentes débilmente acoplados donde el backend (5), los canales de datos (1, 2, 3) y el front-end (4) pueden evolucionar por separado. Esto tiene como objetivo simplificar la colaboración entre competencias al personalizar y mejorar la solución para la producción.
Implementar la solución
Para instalar esta solución en su cuenta de AWS, complete los siguientes pasos:
- Clona el repositorio en GitHub.
- Instalar el servidor Kit de desarrollo en la nube de AWS (CDK de AWS) applicación:
- Abra la
backend
carpeta. - Ejecutar
npm install
para instalar las dependencias. - Si nunca ha utilizado AWS CDK en la cuenta y región actuales, ejecute bootstrapping
npx cdk bootstrap
. - Ejecutar
npx cdk deploy
para desplegar la pila.
- Abra la
- Opcionalmente, ejecute el
streamlit-ui
como sigue:- Recomendamos clonar este repositorio en un Estudio Amazon SageMaker ambiente. Para obtener más información, consulte Incorporación al dominio de Amazon SageMaker mediante la configuración rápida.
- Dentro del
frontend/streamlit-ui
carpeta, ejecutarbash run-streamlit-ui.sh
. - Elija el enlace con el siguiente formato para abrir la demostración:
https://{domain_id}.studio.{region}.sagemaker.aws/jupyter/default/proxy/{port_number}/
.
- Finalmente, puedes ejecutar el Amazon SageMaker tubería definida en el
data-pipelines/04-sagemaker-pipeline-for-documents-processing.ipynb
notebook para procesar los documentos PDF de entrada y preparar la tabla SQL y el índice de búsqueda semántica utilizado por el asistente LLM.
En el resto de esta publicación, nos centramos en explicar los componentes y las opciones de diseño más importantes, para, con suerte, inspirarte a la hora de diseñar tu propio asistente de IA sobre una base de conocimiento interna. Suponemos que los componentes 1 y 4 son fáciles de entender y nos centramos en los componentes principales 2, 3 y 5.
Parte 2: proceso de extracción de entidades
En esta sección, profundizamos en el proceso de extracción de entidades utilizado para preparar datos estructurados, que es un ingrediente clave para responder preguntas analíticas.
Extracción de texto
Los documentos normalmente se almacenan en formato PDF o como imágenes escaneadas. Pueden estar formados por diseños de párrafos simples o tablas complejas y contener texto digital o escrito a mano. Para extraer información correctamente, necesitamos transformar estos documentos sin formato en texto plano, conservando su estructura original. Para hacer esto, puedes usar Amazon Textil, que es un servicio de aprendizaje automático (ML) que proporciona API maduras para la extracción de texto, tablas y formularios a partir de entradas digitales y escritas a mano.
En el componente 2, extraemos texto y tablas de la siguiente manera:
- Para cada documento, llamamos a Amazon Textract para extraer el texto y las tablas.
- Usamos lo siguiente Script de Python para recrear tablas como pandas DataFrames.
- Consolidamos los resultados en un solo documento e insertamos tablas como rebajas.
Este proceso se describe en el siguiente diagrama de flujo y se demuestra concretamente en notebooks/03-pdf-document-processing.ipynb
.
Extracción y consulta de entidades mediante LLM
Para responder preguntas analíticas de manera efectiva, necesita extraer metadatos y entidades relevantes de la base de conocimientos de su documento a un formato de datos estructurados accesible. Sugerimos utilizar SQL para almacenar esta información y recuperar respuestas debido a su popularidad, facilidad de uso y escalabilidad. Esta elección también se beneficia de la capacidad de los modelos de lenguaje probados para generar consultas SQL a partir de lenguaje natural.
En esta sección, profundizamos en los siguientes componentes que permiten preguntas analíticas:
- Un proceso por lotes que extrae datos estructurados de datos no estructurados mediante LLM
- Un módulo en tiempo real que convierte preguntas en lenguaje natural en consultas SQL y recupera resultados de una base de datos SQL.
Puede extraer los metadatos relevantes para respaldar las preguntas analíticas de la siguiente manera:
- Defina un esquema JSON para la información que necesita extraer, que contenga una descripción de cada campo y su tipo de datos, e incluya ejemplos de los valores esperados.
- Para cada documento, solicite un LLM con el esquema JSON y pídale que extraiga los datos relevantes con precisión.
- Cuando la longitud del documento supera la longitud del contexto, y para reducir el costo de extracción con los LLM, puede utilizar la búsqueda semántica para recuperar y presentar los fragmentos relevantes de documentos al LLM durante la extracción.
- Analice la salida JSON y valide la extracción LLM.
- Opcionalmente, haga una copia de seguridad de los resultados en Amazon S3 como archivos CSV.
- Cargue en la base de datos SQL para realizar consultas posteriores.
Este proceso es administrado por la siguiente arquitectura, donde los documentos en formato texto se cargan con un script Python que se ejecuta en un Procesamiento de Amazon SageMaker trabajo para realizar la extracción.
Para cada grupo de entidades, construimos dinámicamente un mensaje que incluye una descripción clara de la tarea de extracción de información e incluye un esquema JSON que define el resultado esperado e incluye los fragmentos de documentos relevantes como contexto. También agregamos algunos ejemplos de entrada y salida correcta para mejorar el rendimiento de la extracción con un aprendizaje de pocas tomas. Esto se demuestra en notebooks/05-entities-extraction-to-structured-metadata.ipynb
.
Parte 3: Cree un asistente de documentos agente con Amazon Bedrock
En esta sección, demostramos cómo utilizar los LLM de Amazon Bedrock para consultar datos y crear un agente LLM que mejore RAG con capacidades analíticas, lo que le permite crear asistentes de documentos inteligentes que pueden responder preguntas complejas específicas de un dominio en múltiples documentos. Puedes consultar el Función Lambda en GitHub para la implementación concreta del agente y herramientas descritos en esta parte.
Formule consultas SQL y responda preguntas analíticas.
Ahora que tenemos un almacén de metadatos estructurado con las entidades relevantes extraídas y cargadas en una base de datos SQL que podemos consultar, la pregunta que queda es ¿cómo generar la consulta SQL correcta a partir de las preguntas de entrada en lenguaje natural?
Los LLM modernos son buenos para generar SQL. Por ejemplo, si solicita a Anthropic Claude LLM a través de lecho rocoso del amazonas para generar una consulta SQL, verá respuestas plausibles. Sin embargo, debemos cumplir con algunas reglas al escribir el mensaje para lograr consultas SQL más precisas. Estas reglas son especialmente importantes para consultas complejas para reducir las alucinaciones y los errores de sintaxis:
- Describe la tarea con precisión dentro del mensaje.
- Incluya el esquema de las tablas SQL dentro del mensaje, mientras describe cada columna de la tabla y especifica su tipo de datos.
- Indique explícitamente al LLM que solo use nombres de columnas y tipos de datos existentes
- Agregue algunas filas de las tablas SQL.
También puede posprocesar la consulta SQL generada utilizando un linter como sqlfluff para corregir el formato, o un analizador como sqlglot para detectar errores de sintaxis y optimizar la consulta. Además, cuando el rendimiento no cumple con el requisito, puede proporcionar algunos ejemplos dentro del mensaje para dirigir el modelo con un aprendizaje breve hacia la generación de consultas SQL más precisas.
Desde una perspectiva de implementación, utilizamos un AWS Lambda función para orquestar el siguiente proceso:
- Llame a un modelo de Anthropic Claude en Amazon Bedrock con la pregunta de entrada para obtener la consulta SQL correspondiente. Aquí utilizamos el Base de datos SQL clase de LangChain para agregar descripciones de esquema de tablas SQL relevantes y usar un mensaje personalizado.
- Analizar, validar y ejecutar la consulta SQL contra el Edición compatible con Amazon Aurora PostgreSQL base de datos.
La arquitectura de esta parte de la solución se destaca en el siguiente diagrama.
Consideraciones de seguridad para prevenir ataques de inyección SQL
A medida que permitimos que el asistente de IA consulte una base de datos SQL, debemos asegurarnos de que esto no introduzca vulnerabilidades de seguridad. Para conseguirlo proponemos las siguientes medidas de seguridad para prevenir ataques de inyección SQL:
- Aplicar permisos de IAM con privilegios mínimos – Limitar el permiso de la función Lambda que ejecuta las consultas SQL utilizando un Gestión de identidades y accesos de AWS (IAM) política y rol que sigue el principio de privilegio mínimo. En este caso, otorgamos acceso de solo lectura.
- Limitar el acceso a los datos – Proporcione acceso únicamente al mínimo de tablas y columnas para evitar ataques de divulgación de información.
- Agregar una capa de moderación – Introducir una capa de moderación que detecte los intentos de inyección rápidos desde el principio y evite que se propaguen al resto del sistema. Puede tomar la forma de filtros basados en reglas, comparación de similitudes con una base de datos de ejemplos conocidos de inyección rápida o un clasificador de ML.
Recuperación de búsqueda semántica para aumentar el contexto de generación
La solución que proponemos utiliza RAG con búsqueda semántica en el componente 3. Puede implementar este módulo usando bases de conocimiento para Amazon Bedrock. Además, existe una variedad de otras opciones para implementar RAG, como la API de recuperación de Amazon Kendra, Base de datos vectorial de Amazon OpenSearchy Amazon Aurora PostgreSQL con pgvector, entre otros. El paquete de código abierto aws-genai-llm-chatbot demuestra cómo utilizar muchas de estas opciones de búsqueda vectorial para implementar un chatbot con tecnología LLM.
En esta solución, debido a que necesitamos consultas SQL y búsqueda vectorial, decidimos usar Amazon Aurora PostgreSQL con la pgvector extensión, que admite ambas funciones. Por lo tanto, implementamos el componente RAG de búsqueda semántica con la siguiente arquitectura.
El proceso de responder preguntas utilizando la arquitectura anterior se realiza en dos etapas principales.
Primero, un proceso por lotes fuera de línea, ejecutado como un trabajo de procesamiento de SageMaker, crea el índice de búsqueda semántica de la siguiente manera:
- Ya sea periódicamente o al recibir nuevos documentos, se ejecuta un trabajo de SageMaker.
- Carga los documentos de texto de Amazon S3 y los divide en partes superpuestas.
- Para cada fragmento, utiliza un modelo de incrustación de Amazon Titan para generar un vector de incrustación.
- Utiliza el PGVector clase de LangChain para ingerir las incrustaciones, con sus fragmentos de documentos y metadatos, en Amazon Aurora PostgreSQL y crear un índice de búsqueda semántica en todos los vectores de incrustación.
En segundo lugar, en tiempo real y para cada nueva pregunta, construimos una respuesta de la siguiente manera:
- La pregunta la recibe el orquestador que se ejecuta en una función Lambda.
- El orquestador incorpora la pregunta con el mismo modelo de incorporación.
- Recupera los fragmentos de documentos más relevantes del índice de búsqueda semántica de PostgreSQL. Opcionalmente utiliza filtrado de metadatos para mejorar la precisión.
- Estos fragmentos se insertan dinámicamente en un mensaje de LLM junto con la pregunta de entrada.
- El mensaje se presenta a Anthropic Claude en Amazon Bedrock, para indicarle que responda la pregunta de entrada según el contexto disponible.
- Finalmente, la respuesta generada se envía de vuelta al orquestador.
Un agente capaz de utilizar herramientas para razonar y actuar.
Hasta ahora, en esta publicación, hemos discutido el tratamiento de preguntas que requieren RAG o razonamiento analítico por separado. Sin embargo, muchas preguntas del mundo real exigen ambas capacidades, a veces a través de múltiples pasos de razonamiento, para llegar a una respuesta final. Para respaldar estas preguntas más complejas, necesitamos introducir la noción de agente.
Agentes de LLM, como el agentes para Amazon Bedrock, han surgido recientemente como una solución prometedora capaz de utilizar LLM para razonar y adaptarse utilizando el contexto actual y elegir acciones apropiadas de una lista de opciones, que presenta un marco general de resolución de problemas. Como se discutió en Agentes autónomos impulsados por LLM, existen múltiples estrategias de motivación y patrones de diseño para agentes de LLM que respaldan el razonamiento complejo.
Uno de esos patrones de diseño es Reason and Act (ReAct), introducido en ReAct: sinergizando el razonamiento y la actuación en modelos de lenguaje. En ReAct, el agente toma como entrada un objetivo que puede ser una pregunta, identifica la información que falta para responderla y propone de forma iterativa la herramienta adecuada para recopilar información basándose en las descripciones de las herramientas disponibles. Después de recibir la respuesta de una herramienta determinada, el LLM reevalúa si tiene toda la información que necesita para responder completamente la pregunta. Si no, da otro paso de razonamiento y utiliza la misma u otra herramienta para recopilar más información, hasta que esté lista una respuesta final o se alcance un límite.
El siguiente diagrama de secuencia explica cómo trabaja un agente de ReAct para responder la pregunta "Dame las 5 empresas principales con mayores ingresos en los últimos 2 años e identifica los riesgos asociados con la principal".
Los detalles de la implementación de este enfoque en Python se describen en Agente LLM personalizado. En nuestra solución, el agente y las herramientas se implementan con la siguiente arquitectura parcial resaltada.
Para responder una pregunta de entrada, utilizamos los servicios de AWS de la siguiente manera:
- Un usuario ingresa su pregunta a través de una interfaz de usuario, que llama a una API en Puerta de enlace API de Amazon.
- API Gateway envía la pregunta a una función Lambda que implementa el agente ejecutor.
- El agente llama al LLM con un mensaje que contiene una descripción de las herramientas disponibles, el formato de instrucción ReAct y la pregunta de entrada, y luego analiza la siguiente acción para completar.
- La acción contiene a qué herramienta llamar y cuál es la entrada de la acción.
- Si la herramienta a utilizar es SQL, el agente ejecutor llama a SQLQA para convertir la pregunta a SQL y ejecutarla. Luego agrega el resultado al mensaje y llama nuevamente al LLM para ver si puede responder la pregunta original o si se necesitan más acciones.
- De manera similar, si la herramienta a utilizar es la búsqueda semántica, entonces la entrada de la acción se analiza y se utiliza para recuperarla del índice de búsqueda semántica de PostgreSQL. Agrega los resultados al mensaje y verifica si el LLM puede responder o necesita otra acción.
- Una vez que toda la información para responder una pregunta está disponible, el agente de LLM formula una respuesta final y se la envía al usuario.
Puede ampliar el agente con más herramientas. En la implementación disponible en GitHub, demostramos cómo se puede agregar un motor de búsqueda y una calculadora como herramientas adicionales al motor SQL y a las herramientas de búsqueda semántica antes mencionados. Para almacenar el historial de conversaciones en curso, utilizamos un Amazon DynamoDB mesa.
Según nuestra experiencia hasta ahora, hemos visto que las siguientes son claves para un agente exitoso:
- Un LLM subyacente capaz de razonar con el formato ReAct
- Una descripción clara de las herramientas disponibles, cuándo usarlas y una descripción de sus argumentos de entrada con, potencialmente, un ejemplo de la entrada y el resultado esperado.
- Un esquema claro del formato ReAct que debe seguir el LLM
- Las herramientas adecuadas para resolver la pregunta comercial puestas a disposición del agente de LLM para su uso.
- Analizar correctamente los resultados de las respuestas del agente de LLM según sus motivos.
Para optimizar costos, recomendamos almacenar en caché las preguntas más comunes con sus respuestas y actualizar este caché periódicamente para reducir las llamadas al LLM subyacente. Por ejemplo, puede crear un índice de búsqueda semántica con las preguntas más comunes como se explicó anteriormente y hacer coincidir la pregunta del nuevo usuario con el índice primero antes de llamar al LLM. Para explorar otras opciones de almacenamiento en caché, consulte Integraciones de almacenamiento en caché de LLM.
Admite otros formatos como video, imagen, audio y archivos 3D
Puede aplicar la misma solución a varios tipos de información, como imágenes, vídeos, audio y archivos de diseño 3D como archivos CAD o de malla. Esto implica el uso de técnicas de aprendizaje automático establecidas para describir el contenido del archivo en texto, que luego se puede incorporar a la solución que exploramos anteriormente. Este enfoque le permite llevar a cabo conversaciones de control de calidad sobre estos diversos tipos de datos. Por ejemplo, puede ampliar su base de datos de documentos creando descripciones textuales de imágenes, videos o contenido de audio. También puede mejorar la tabla de metadatos identificando propiedades mediante clasificación o detección de objetos en elementos dentro de estos formatos. Una vez que los datos extraídos se indexan en el almacén de metadatos o en el índice de búsqueda semántica de documentos, la arquitectura general del sistema propuesto sigue siendo en gran medida consistente.
Conclusión
En esta publicación, mostramos cómo el uso de LLM con el patrón de diseño RAG es necesario para crear un asistente de IA específico de un dominio, pero no es suficiente para alcanzar el nivel requerido de confiabilidad para generar valor comercial. Debido a esto, propusimos ampliar el popular patrón de diseño RAG con los conceptos de agentes y herramientas, donde la flexibilidad de las herramientas nos permite usar tanto técnicas tradicionales de PNL como capacidades modernas de LLM para permitir que un asistente de IA tenga más opciones para buscar información y ayudar. usuarios a resolver problemas empresariales de manera eficiente.
La solución demuestra el proceso de diseño hacia un asistente de LLM capaz de responder varios tipos de preguntas de recuperación, razonamiento analítico y razonamiento de varios pasos en toda su base de conocimientos. También destacamos la importancia de pensar en retrospectiva a partir de los tipos de preguntas y tareas con las que se espera que su asistente de LLM ayude a los usuarios. En este caso, el viaje de diseño nos llevó a una arquitectura con tres componentes: búsqueda semántica, extracción de metadatos y consulta SQL, y agente y herramientas LLM, que creemos que es lo suficientemente genérica y flexible para múltiples casos de uso. También creemos que al inspirarse en esta solución y profundizar en las necesidades de sus usuarios, podrá ampliar esta solución hacia lo que funcione mejor para usted.
Sobre los autores
Mohamed Ali Jamaoui es un arquitecto senior de prototipos de ML con 10 años de experiencia en aprendizaje automático de producción. Le gusta resolver problemas comerciales con aprendizaje automático e ingeniería de software, y ayudar a los clientes a extraer valor comercial con ML. Como parte de AWS EMEA Prototyping and Cloud Engineering, ayuda a los clientes a crear soluciones comerciales que aprovechan las innovaciones en MLOP, NLP, CV y LLM.
Giuseppe Hannen es un consultor asociado de ProServe. Giuseppe aplica sus habilidades analíticas en combinación con AI&ML para desarrollar soluciones claras y efectivas para sus clientes. Le encanta encontrar soluciones simples a problemas complicados, especialmente aquellos que involucran los últimos desarrollos tecnológicos e investigaciones.
Laurens ten Cate es un científico de datos senior. Laurens trabaja con clientes empresariales en EMEA ayudándoles a acelerar sus resultados comerciales utilizando las tecnologías de IA/ML de AWS. Se especializa en soluciones de PNL y se enfoca en la industria de la cadena de suministro y la logística. En su tiempo libre le gusta la lectura y el arte.
Irina Radu es un gerente de participación en la creación de prototipos, parte de AWS EMEA Prototyping and Cloud Engineering. Ella está ayudando a los clientes a aprovechar al máximo la última tecnología, innovar más rápido y pensar en grande.
- Distribución de relaciones públicas y contenido potenciado por SEO. Consiga amplificado hoy.
- PlatoData.Network Vertical Generativo Ai. Empodérate. Accede Aquí.
- PlatoAiStream. Inteligencia Web3. Conocimiento amplificado. Accede Aquí.
- PlatoESG. Carbón, tecnología limpia, Energía, Ambiente, Solar, Gestión de residuos. Accede Aquí.
- PlatoSalud. Inteligencia en Biotecnología y Ensayos Clínicos. Accede Aquí.
- Fuente: https://aws.amazon.com/blogs/machine-learning/boosting-rag-based-intelligent-document-assistants-using-entity-extraction-sql-querying-and-agents-with-amazon-bedrock/
- :posee
- :es
- :no
- :dónde
- $ UP
- 1
- 10
- 100
- 2022
- 3d
- 7
- a
- capacidad
- Poder
- Nuestra Empresa
- acelerar
- de la máquina
- accesible
- logrado
- Mi Cuenta
- la exactitud
- preciso
- precisamente
- Lograr
- el logro de
- a través de
- Actúe
- interino
- la columna Acción
- acciones
- adaptar
- add
- Adicionalmente
- Añade
- adoptado
- Después
- de nuevo
- en contra
- Agente
- agentes
- AI
- Asistente de inteligencia
- AI / ML
- algoritmo
- Alinea
- Todos
- permite
- junto al
- también
- Amazon
- Amazon SageMaker
- Amazon Textil
- Amazon Web Services
- entre
- an
- análisis
- Pruebas analíticas
- analizar
- y
- Otra
- https://www.youtube.com/watch?v=xB-eutXNUMXJtA&feature=youtu.be
- respuestas
- Antrópico
- cualquier
- abejas
- API
- se aplica
- Aplicá
- enfoque
- adecuado
- aproximado
- arquitectura
- somos
- argumentos
- en torno a
- Arte
- AS
- contacta
- ayudar
- Legal
- asistentes
- Consejos
- asociado
- asumir
- At
- ataques
- Los intentos
- audio
- aumentar
- aumentado
- Aurora
- automáticamente
- autónomo
- Hoy Disponibles
- AWS
- Atrás
- Backend
- Balance
- bases
- basado
- básica
- BE
- porque
- esto
- antes
- comportamiento
- detrás de
- CREEMOS
- beneficios
- MEJOR
- entre
- Más allá de
- más grande
- impulsar
- ambas
- build
- Construir la
- negocios
- pero
- by
- cache
- CAD
- llamar al
- , que son
- llamar
- Calls
- PUEDEN
- candidato
- capacidades
- capaz
- llevar
- case
- cases
- cadena
- chatterbot
- Cheques
- manera?
- opciones
- Elige
- clase
- clasificación
- limpiar
- Soluciones
- COHERENTE
- colaboración
- Columna
- Columnas
- combinación
- combina
- cómo
- Algunos
- Empresas
- compañía
- comparar
- comparar
- comparaciones
- Complemento
- completar
- integraciones
- Complicado
- componente
- componentes
- compuesto
- exhaustivo
- Calcular
- conceptos
- hormigón
- condición
- Conducir
- Contacto
- Considerar
- consideraciones
- consistente
- consolidar
- construir
- consultor
- que no contengo
- contenida
- contiene
- contenido
- contexto
- Conversación
- conversacional
- AI conversacional
- conversaciones
- convertir
- convertido
- Core
- correcta
- correctamente
- Correspondiente
- Cost
- Precio
- podría
- acoplado
- Para crear
- crea
- Creamos
- Current
- personalizado
- cliente
- Atención al cliente
- Clientes
- datos
- acceso a los datos
- científico de datos
- Base de datos
- decidido
- Decidir
- profundo
- más profundo
- se define
- Define
- ahondar
- Demanda
- manifestación
- demostrar
- demostrado
- demuestra
- dependencias
- desplegar
- describir
- descrito
- describiendo
- descripción
- Diseño
- patrones de diseño
- proceso de diseño
- diseño
- detallado
- detalles
- detectar
- Detección
- desarrollar
- Desarrollo
- desarrollos
- digital
- revelación
- discutir
- discutido
- discusiones
- distancia
- inmersión
- diverso
- Cursos de Buceo
- do
- documento
- documentación
- documentos
- sí
- No
- dominio
- dominios
- hecho
- DE INSCRIPCIÓN
- conductor
- dos
- durante
- dinamicamente
- cada una
- Más temprano
- Temprano en la
- facilidad
- facilidad de uso
- pasan fácilmente
- Eficaz
- de manera eficaz
- eficiencia
- eficiente
- eficiente.
- ya sea
- elementos
- incrustación
- EMEA
- surgido
- empleando
- habilitar
- permite
- permitiendo
- final
- de su negocio.
- Motor
- Ingeniería
- motores
- mejorar
- Mejora
- suficientes
- enriquecedor
- Empresa
- entidades
- entidad
- Entorno
- Errores
- especialmente
- esencial
- se establece
- Incluso
- evoluciona
- examinar
- ejemplo
- ejemplos
- existencia
- existente
- Expandir
- esperado
- experience
- explicado
- explicando
- Explica
- explorar
- explorado
- expuesto
- ampliar
- extensión
- extensión
- extra
- extraerlos
- Extracción
- Extractos
- enfrentado
- falla
- Preguntas Frecuentes
- muchos
- más rápida
- Feature
- Caracteristicas
- realimentación
- pocos
- campo
- Archive
- archivos
- filtración
- filtros
- final
- Finalmente
- financiero
- Encuentre
- Nombre
- Flexibilidad
- flexible
- de tus señales
- Focus
- enfoque
- siguiendo
- siguiente
- formulario
- formato
- formado
- Formularios
- Marco conceptual
- Gratis
- Desde
- frontal o trasero
- Interfaz
- el cumplimiento de
- ser completados
- completamente
- función
- promover
- puerta
- reunir
- General
- generar
- generado
- la generación de
- generación de AHSS
- generativo
- IA generativa
- obtener
- conseguir
- GitHub
- dado
- objetivo
- candidato
- gradualmente
- conceder
- Grupo procesos
- Grupo
- tenido
- Tienen
- es
- he
- ayuda
- ayudando
- ayuda
- esta página
- Alta
- más alto
- Destacado
- su
- historia
- Con optimismo
- Cómo
- Como Hacer
- Sin embargo
- HTML
- HTTPS
- humana
- ideas
- identifica
- Identifique
- identificar
- Identidad
- if
- imagen
- imágenes
- imagen
- implementar
- implementación
- implementado
- implementación
- importancia
- importante
- mejorar
- mejorado
- mejoras
- la mejora de
- in
- incluye
- índice
- indexado
- energético
- información
- extracción de información
- inicial
- innovar
- innovaciones
- Las opciones de entrada
- entradas
- Inspiración
- inspiren
- inspirado
- instalar
- ejemplo
- integrar
- De Operación
- interactuar
- interno
- dentro
- introducir
- Introducido
- Invertir
- investigación
- inversión extranjera
- involucrar
- IT
- SUS
- sí mismo
- Trabajos
- jpg
- json
- Guardar
- Clave
- claves
- especialistas
- conocido
- idioma
- large
- principalmente
- Apellidos
- luego
- más reciente
- pone en marcha
- .
- aprendizaje
- menos
- LED
- Longitud Mínima
- Nivel
- Apalancamiento
- como
- LIMITE LAS
- limitaciones
- LINK
- Etiqueta LinkedIn
- Lista
- LLM
- cargas
- Logística
- industria logistica
- Largo
- ama
- máquina
- máquina de aprendizaje
- hecho
- Inicio
- mantener
- Mantener los
- para lograr
- gestionado
- gerente
- muchos
- Match
- pareo
- un estudiante adulto
- Puede..
- me
- sentido
- medidas
- Conoce a
- menciona
- simplemente
- malla
- mensaje
- metadatos
- Método
- métodos
- métrico
- Métrica
- mínimo
- engañoso
- que falta
- ML
- MLOps
- modelo
- modelos
- moderación
- Moderno
- Módulo
- más,
- Por otra parte
- MEJOR DE TU
- múltiples
- debe
- nombres
- Natural
- Procesamiento natural del lenguaje
- necesario
- ¿ Necesita ayuda
- vecinos
- red
- ingresos netos
- nunca
- Nuevo
- Next
- nlp
- Ninguna
- cuaderno
- Noción
- objeto
- Detección de objetos
- of
- Ofrecido
- que ofrece
- digital fuera de línea.
- a menudo
- on
- ONE
- en marcha
- , solamente
- habiertos
- de código abierto
- Operaciones
- Optimización
- Opciones
- or
- solicite
- reconocida por
- Otro
- Otros
- "nuestr
- salir
- resultados
- contorno
- esbozado
- salida
- salidas
- Más de
- total
- Superar
- EL DESARROLLADOR
- paquete
- Los pandas
- parte
- partes
- Patrón de Costura
- .
- (PDF)
- Realizar
- actuación
- permiso
- la perspectiva
- Farmacéutica
- piezas
- industrial
- Natural
- planificar
- Platón
- Inteligencia de datos de Platón
- PlatónDatos
- plausible
- punto
- política
- Popular
- popularidad
- poblado
- posible
- posiblemente
- Publicación
- Postgresql
- posible
- la posibilidad
- alimentado
- poderoso
- Precisión
- Preparar
- presente
- presentó
- regalos
- conservación
- evitar
- evita
- previamente
- privilegio
- la resolución de problemas
- problemas
- tratamiento
- produce
- productor
- Producto
- Producción
- PROMETEMOS
- prometedor
- propiedades
- ofrece
- propuesto
- propone
- prototipado
- probado
- proporcionar
- proporciona un
- público
- Python
- Q&A
- consultas
- pregunta
- Preguntas
- Búsqueda
- con rapidez
- Clasificación
- rápido
- Crudo
- en comunicarse
- alcanzado
- Reaccionar
- Reading
- ready
- real
- mundo real
- en tiempo real
- razón
- mejor
- recibido
- aprovecha
- reciente
- recientemente
- reconocer
- recomiendan
- Recomendación
- reducir
- remitir
- región
- fiabilidad
- confiar
- permanece
- Informes
- repositorio
- representar
- solicita
- exigir
- Requisitos
- requisito
- requiere
- la investigación
- respuesta
- respuestas
- RESTO
- resultado
- Resultados
- volvemos
- ingresos
- ingresos
- una estrategia SEO para aparecer en las búsquedas de Google.
- Derecho
- riesgos
- Función
- reglas
- Ejecutar
- correr
- corre
- sabio
- mismo
- Escalabilidad
- escanear
- exploración
- Científico
- guión
- Buscar
- motor de búsqueda
- Segundo
- Sección
- (secciones)
- EN LINEA
- Medidas de Seguridad
- ver
- EL EQUIPO
- visto
- seleccionar
- selección
- semántica
- envía
- mayor
- expedido
- Secuencia
- de coches
- Servicios
- ella
- tienes
- Mostrar
- mostró
- mostrado
- similares
- sencillos
- simplificado
- simplificar
- simultáneamente
- desde
- soltero
- habilidades
- So
- hasta aquí
- Software
- Ingeniería de software
- únicamente
- a medida
- Soluciones
- Resolver
- algo
- a veces
- Fuente
- Fuentes
- Espacio
- especializado
- se especializa
- soluciones y
- velocidad
- escisiones
- montón
- etapas
- comienzo
- Comience a
- dirigir
- paso
- pasos
- tienda
- almacenados
- sencillo
- estrategias
- Estrategia
- strike
- esforzarse
- estructura
- estructurado
- estudio
- exitosos
- tal
- sugieren
- adecuado
- resumir
- suministro
- cadena de suministro
- SOPORTE
- soportes
- seguro
- sintaxis
- te
- mesa
- adaptado
- ¡Prepárate!
- toma
- Tarea
- tareas
- tecnología
- técnicas
- tecnológico
- Tecnologías
- les digas
- diez
- texto
- textual
- Muchas Gracias
- esa
- La
- la información
- su
- Les
- luego
- Ahí.
- de este modo
- por lo tanto
- Estas
- ellos
- pensar
- Ideas
- así
- aquellos
- Tres
- A través de esta formación, el personal docente y administrativo de escuelas y universidades estará preparado para manejar los recursos disponibles que derivan de la diversidad cultural de sus estudiantes. Además, un mejor y mayor entendimiento sobre estas diferencias y similitudes culturales permitirá alcanzar los objetivos de inclusión previstos.
- equipo
- titán
- a
- hoy
- del IRS
- parte superior
- top 5
- hacia
- hacia
- Trace
- tradicional
- Formación
- Transformar
- tratar
- verdadero
- digno de confianza
- dos
- tipo
- tipos
- típicamente
- ui
- subyacente
- entender
- hasta
- actualización
- a
- us
- utilizan el
- usado
- Usuario
- experiencia como usuario
- usuarios
- usos
- usando
- VALIDAR
- propuesta de
- Valores
- variedad
- diversos
- versátil
- Video
- Videos
- Vulnerabilidades
- camina
- Camino..
- we
- web
- servicios web
- WELL
- tuvieron
- ¿
- cuando
- mientras
- sean
- que
- mientras
- porque
- Wikipedia
- seguirá
- dentro de
- sin
- funciona
- se
- la escritura
- X
- año
- años
- Usted
- tú
- zephyrnet