Inteligencia artificial generativa (IA) Las aplicaciones se construyen comúnmente utilizando una técnica llamada Recuperación de generación aumentada (trapo) Eso proporciona acceso de modelos de base (FMS) a datos adicionales que no tenían durante la capacitación. Estos datos se utilizan para enriquecer el indicador de IA generativo para ofrecer respuestas más específicas y precisas de contexto sin capacitar continuamente el FM, al tiempo que mejora la transparencia y minimiza las alucinaciones.
En esta publicación, demostramos una solución usando Servicio de Kubernetes de Amazon Elastic (EKS) con Roca madre de Amazon Para crear soluciones de RAG escalables y contenedores para sus aplicaciones AI generativas en AWS mientras lleva los datos de sus archivos de usuario no estructurados a Amazon Bedrock de una manera sencilla, rápida y segura.
Amazon EKS proporciona un entorno escalable, seguro y rentable para construir aplicaciones de RAG con el lecho de roca de Amazon y también permite una implementación y monitoreo eficientes de las cargas de trabajo impulsadas por la IA mientras aprovecha los FMS de Bedrock para inferencia. Mejora el rendimiento con instancias de cómputo optimizadas, cargas de trabajo de GPU de escala automática al tiempo que reduce los costos a través de Instancias Spot de Amazon EC2 y AWS Fargate y proporciona seguridad de grado empresarial a través de mecanismos nativos de AWS como Amazon VPC redes y AWS IAM.
Nuestra solución usa Amazon S3 como la fuente de datos no estructurados y poca una Amazon OpenSearch Base de datos vectorial sin servidor mediante el uso de Bases de conocimiento de Amazon Bedrock con los archivos y carpetas existentes del usuario y metadatos asociados. Esto permite un escenario RAG con Amazon Bedrock enriqueciendo el aviso de IA generativo utilizando las API de rock de Amazon con los datos específicos de su empresa recuperados de la base de datos Vector sin servidor OpenSearch.
Descripción general de la solución
La solución utiliza grupos de nodos administrados de Amazon EK para automatizar el aprovisionamiento y la gestión del ciclo de vida de los nodos (instancias de Amazon EC2) para el clúster de Amazon EKS Kubernetes. Cada nodo administrado en el clúster se aprovisiona como parte de un grupo de escala automático de Amazon EC2 que EKS gestionó para usted.
El clúster EKS consiste en una implementación de Kubernetes que se ejecuta en dos zonas de disponibilidad para una alta disponibilidad donde cada nodo en la implementación aloja múltiples réplicas de una imagen de contenedor de trapo de roca madre registrada y extraída de Amazon Elastic Container Registry (ECR). Esta configuración se asegura de que los recursos se usen de manera eficiente, ampliando o bajando según la demanda. El POD horizontal AutoScaler (HPA) está configurado para escalar aún más el número de POD en nuestra implementación en función de la utilización de su CPU.
El contenedor de aplicación de recuperación de RAG utiliza API de bases de conocimiento de roca madre y Anthrope’s Claude 3.5 Sonnet LLM Organizado en Bedrock para implementar un flujo de trabajo de trapo. La solución proporciona al usuario final un punto final escalable para acceder al flujo de trabajo de RAG utilizando un servicio Kubernetes que está liderado por un Amazon Application Load Balancer (Alb) Provisado a través de un controlador de entrada EKS.
El contenedor de aplicación de recuperación RAG orquestado por EKS permite RAG con Bedrock de Amazon en enriquecer el indicador de IA generativo recibido desde el punto final de ALB con datos recuperados de un índice de OpenSearch sin servidor que se sincroniza a través de bases de conocimiento de roca madre de sus datos específicos de la empresa cargados a Amazon S3.
El siguiente diagrama de arquitectura ilustra los diversos componentes de nuestra solución:
Requisitos previos
Complete los siguientes requisitos previos:
- Asegurar Acceso de modelo en Amazon Bedrock. En esta solución, utilizamos el soneto Claude 3.5 de Anthrope en Amazon Bedrock.
- Instalar el Interfaz de línea de comandos de AWS (AWS CLI).
- Instalar Docker.
- Instalar kubectl.
- Instalar Terraform.
Implementar la solución
La solución está disponible para descargar en el Repositorio de Github. La clonación del repositorio y el uso de la plantilla de Terraform provendrá los componentes con sus configuraciones requeridas:
- Clon el repositorio de git:
- Desde
terraformcarpeta, implementa la solución usando Terraform:
Configurar EKS
- Configure un secreto para el registro ECR:
- Navegar al
kubernetes/ingresscarpeta:- Asegúrese de que el
AWS_Regionvariable en elbedrockragconfigmap.yamlArchivo apunta a su región de AWS. - Reemplace la imagen uri en la línea 20 de la
bedrockragdeployment.yamlArchivo con la imagen URI de subedrockragImagen de su repositorio ECR.
- Asegúrese de que el
- Provisión de la implementación, servicio e ingreso de EKS:
Crear una base de conocimiento y cargar datos
Para crear una base de conocimiento y cargar datos, siga estos pasos:
- Cree un cubo S3 y cargue sus datos en el cubo. En nuestra publicación de blog, subimos estos dos archivos, Guía del usuario de Amazon Bedrock y el Guía del usuario de Amazon FSX para ONTAPen nuestro cubo S3.
- Crea una base de conocimiento de Amazon Bedrock. Siga los pasos aquí para crear una base de conocimiento. Acepte todos los valores predeterminados, incluido el uso de Crear rápido una nueva opción de tienda vectorial En el paso 7 de las instrucciones que crean una colección de búsqueda vectorial sin servidor de Amazon OpenSearch como su base de conocimiento.
- En el paso 5c de las instrucciones para crear una base de conocimiento, proporcione el URI S3 del objeto que contiene los archivos para la fuente de datos para la base de conocimiento
- Una vez que se aprovisione la base de conocimiento, obtenga el ID de base de conocimiento desde Consola de bases de conocimiento de roca madre para su base de conocimiento recién creada.
Consulta utilizando el equilibrador de carga de la aplicación
Puede consultar el modelo directamente utilizando la parte delantera API proporcionada por el AWS Alb aprovisionado por el controlador de entrada Kubernetes (EKS). Navegar al Consola AWS Alb y obtener el Nombre de DNS Para que su ALB lo use como API:
Limpieza
Para evitar cargos recurrentes, limpie su cuenta después de probar la solución:
- Desde la carpeta Terraform, elimine la plantilla de Terraform para la solución:
terraform apply --destroy - Elimine la base de conocimiento de Amazon Bedrock. Desde Consola de roca en Amazonseleccione la base de conocimiento que creó en esta solución, seleccione Borrary siga los pasos para eliminar la base de conocimiento.
Conclusión
En esta publicación, demostramos una solución que utiliza Amazon EKS con Amazon Bedrock y le proporciona un marco para construir sus propias aplicaciones de IA generativas contenedores, automatizadas, escalables y altamente disponibles en AWS en AWS. Utilizando las bases de conocimiento de Amazon S3 y Amazon Bedrock, nuestra solución automatiza que lleva los datos de sus archivos de usuario no estructurados a Amazon Bedrock dentro del marco contenedorizado. Puede utilizar el enfoque demostrado en esta solución para automatizar y contener sus cargas de trabajo impulsadas por IA mientras usa FMS de roca madre de Amazon para inferencia con la implementación, escalabilidad y disponibilidad de una implementación contenedor basada en Kubernetes basada en Kubernetes.
Para obtener más información sobre cómo comenzar a construir con Amazon Bedrock y EKS para escenarios de RAG, consulte los siguientes recursos:
Sobre los autores
Kanishk Mahajan es director, arquitectura de soluciones en AWS. Dirige la transformación de la nube y la arquitectura de soluciones para clientes y socios de AWS. Kanishk se especializa en contenedores, operaciones en la nube, migraciones y modernizaciones, IA/ML, resiliencia y seguridad y cumplimiento. Es miembro de la comunidad de campo técnico (TFC) en cada uno de esos dominios en AWS.
Sandeep Batchu Es un arquitecto de seguridad senior en Amazon Web Services, con una amplia experiencia en ingeniería de software, arquitectura de soluciones y ciberseguridad. Apasionado por unir los resultados comerciales con la innovación tecnológica, Sandeep guía a los clientes a través de su viaje en la nube, ayudándoles a diseñar e implementar arquitecturas de nube seguras, escalables, flexibles y resistentes.