Screenshot 2024 09 17 At 2.08.41 am.png

La publicación está coescrita con Michael Shaul y Sasha Korman de NetApp.

Inteligencia artificial generativa (IA) Las aplicaciones se construyen comúnmente utilizando una técnica llamada Recuperación de Generación Aumentada (RAG) que proporciona a los modelos de base (FM) acceso a datos adicionales que no tenían durante el entrenamiento. Estos datos se utilizan para enriquecer el mensaje de IA generativa para ofrecer respuestas más precisas y específicas del contexto sin tener que volver a entrenar continuamente al FM, al mismo tiempo que se mejora la transparencia y se minimizan las alucinaciones.

En esta publicación, demostramos una solución utilizando Amazon FSx para NetApp ONTAP con La roca madre del Amazonas Proporcionar una experiencia RAG para sus aplicaciones de IA generativa en AWS al llevar datos de archivos de usuarios no estructurados y específicos de la empresa a Amazon Bedrock de una manera sencilla, rápida y segura.

Nuestra solución utiliza un sistema de archivos FSx para ONTAP como fuente de datos no estructurados y llena continuamente un Amazon OpenSearch sin servidor base de datos de vectores con los archivos y carpetas existentes del usuario y los metadatos asociados. Esto permite un escenario RAG con Amazon Bedrock al enriquecer el mensaje de IA generativa mediante las API de Amazon Bedrock con los datos específicos de su empresa recuperados de la base de datos de vectores de OpenSearch Serverless.

Al desarrollar aplicaciones de IA generativa, como un chatbot de preguntas y respuestas que utiliza RAG, los clientes también se preocupan por mantener sus datos seguros y evitar que los usuarios finales consulten información de fuentes de datos no autorizadas. Nuestra solución también utiliza FSx for ONTAP para permitir que los usuarios amplíen sus mecanismos de acceso y seguridad de datos actuales para aumentar las respuestas del modelo de Amazon Bedrock. Usamos FSx for ONTAP como fuente de metadatos asociados, específicamente las configuraciones de la lista de control de acceso (ACL) de seguridad del usuario adjuntas a sus archivos y carpetas, y completamos esos metadatos en OpenSearch Serverless. Al combinar las operaciones de control de acceso con eventos de archivos que notifican a la aplicación RAG sobre datos nuevos y modificados en el sistema de archivos, nuestra solución demuestra cómo FSx for ONTAP permite que Amazon Bedrock solo use incrustaciones de archivos autorizados para los usuarios específicos que se conectan a nuestra aplicación de IA generativa.

Los servicios sin servidor de AWS facilitan la tarea de centrarse en la creación de aplicaciones de IA generativas al proporcionar escalabilidad automática, alta disponibilidad incorporada y un modelo de facturación de pago por uso. Computación basada en eventos con AWS Lambda es una buena opción para tareas bajo demanda que requieren un uso intensivo de recursos informáticos, como la incrustación de documentos y la orquestación flexible de modelos de lenguaje grandes (LLM), y Puerta de enlace API de Amazon Proporciona una interfaz API que permite interfaces conectables e invocaciones de LLM basadas en eventos. Nuestra solución también demuestra cómo crear una capa de aplicación sin servidor, escalable, automatizada y basada en API sobre Amazon Bedrock y FSx para ONTAP utilizando API Gateway y Lambda.

Descripción general de la solución

La solución prevé una FSx para ONTAP Multi-AZ sistema de archivos con un máquina virtual de almacenamiento (SVM) Unido a un Microsoft AD administrado por AWS dominio. Una colección de búsqueda de vectores sin servidor OpenSearch proporciona una capacidad de búsqueda por similitud escalable y de alto rendimiento. Usamos un Nube de computación elástica de Amazon (Amazon EC2) Servidor Windows como cliente SMB/CIFS para el volumen FSx for ONTAP y configuración del uso compartido de datos y las listas de control de acceso para los recursos compartidos SMB en el volumen. Usamos estos datos y listas de control de acceso para probar el acceso basado en permisos a las incorporaciones en un escenario RAG con Amazon Bedrock.

El componente contenedor de integraciones de nuestra solución se implementa en un servidor EC2 Linux y se monta como un cliente NFS en el volumen FSx for ONTAP. Migra periódicamente los archivos y carpetas existentes junto con sus configuraciones de ACL de seguridad a OpenSearch Serverless. Rellena un índice en la colección de búsqueda vectorial de OpenSearch Serverless con datos específicos de la empresa (y metadatos y ACL asociados) desde el recurso compartido NFS en el sistema de archivos FSx for ONTAP.

La solución implementa una función Lambda de recuperación de RAG que permite RAG con Amazon Bedrock al enriquecer el mensaje de IA generativa mediante las API de Amazon Bedrock con los datos específicos de su empresa y los metadatos asociados (incluidas las ACL) recuperados del índice OpenSearch Serverless que se completó con el componente contenedor de incrustaciones. La función Lambda de recuperación de RAG almacena el historial de conversaciones de la interacción del usuario en un Amazon DynamoDB mesa.

Los usuarios finales interactúan con la solución enviando un mensaje en lenguaje natural, ya sea a través de una aplicación de chatbot o directamente a través de la interfaz API Gateway. El contenedor de la aplicación de chatbot se crea utilizando Agilizart y al frente está un Balanceador de carga de aplicaciones (ALB) de AWSCuando un usuario envía un mensaje en lenguaje natural a la interfaz de usuario del chatbot mediante el ALB, el contenedor del chatbot interactúa con la interfaz de API Gateway que luego invoca la función Lambda de recuperación de RAG para obtener la respuesta para el usuario. El usuario también puede enviar solicitudes de mensajes directamente a API Gateway y obtener una respuesta. Demostramos el acceso basado en permisos a los documentos de RAG recuperando explícitamente el SID de un usuario y luego usando ese SID en la solicitud del chatbot o API Gateway, donde la función Lambda de recuperación de RAG luego hace coincidir el SID con las ACL de Windows configuradas para el documento. Como paso de autenticación adicional en un entorno de producción, es posible que también desee autenticar al usuario con un proveedor de identidad y luego hacer coincidir al usuario con los permisos configurados para los documentos.

El siguiente diagrama ilustra el flujo de extremo a extremo de nuestra solución. Comenzamos configurando el uso compartido de datos y las listas de control de acceso con FSx para ONTAP, y luego el contenedor de incrustaciones los escanea periódicamente. El contenedor de incrustaciones divide los documentos en fragmentos y utiliza el modelo Amazon Titan Embeddings para crear incrustaciones vectoriales a partir de estos fragmentos. Luego, almacena estas incrustaciones vectoriales con metadatos asociados en nuestra base de datos vectorial al completar un índice en una colección vectorial en OpenSearch Serverless. El siguiente diagrama ilustra el flujo de extremo a extremo.

El siguiente diagrama de arquitectura ilustra los distintos componentes de nuestra solución.Diagrama de arquitectura general que describe todos los componentes de la solución.

Prerrequisitos

Complete los siguientes pasos previos:

  1. Asegúrate de tener Acceso a modelos en Amazon BedrockEn esta solución, utilizamos Soneto Claude Antrópico v3 en Amazon Bedrock.
  2. Instalar el Interfaz de línea de comandos de AWS (AWS CLI).
  3. Instalar Docker.
  4. Instalar Terraform.

Implementar la solución

La solución está disponible para descargar en este Repositorio de GitHubAl clonar el repositorio y usar la plantilla Terraform se proporcionarán todos los componentes con las configuraciones necesarias.

  1. Clonar el repositorio para esta solución:
    sudo yum install -y unzip
    git clone https://github.com/aws-samples/genai-bedrock-fsxontap.git
    cd genai-bedrock-fsxontap/terraform

  2. Desde la carpeta Terraform, implemente la solución completa usando Terraform:
    terraform init
    terraform apply -auto-approve

Este proceso puede tardar entre 15 y 20 minutos en completarse. Una vez finalizado, el resultado de los comandos de Terraform debería ser similar al siguiente:

api-invoke-url = "https://9ng1jjn8qi.execute-api.<region>.amazonaws.com/prod"
fsx-management-ip = toset([
"198.19.255.230",])
fsx-secret-id = "arn:aws:secretsmanager:<region>:<account-id>:secret:AmazonBedrock-FSx-NetAPP-ONTAP-a2fZEdIt-0fBcS9"
fsx-svm-smb-dns-name = "BRSVM.BEDROCK-01.COM"
lb-dns-name = "chat-load-balancer-2040177936.<region>.elb.amazonaws.com"

Cargar datos y establecer permisos

Para probar la solución, utilizaremos el servidor EC2 de Windows (ad_host) montado como un cliente SMB/CIFS en el volumen FSx for ONTAP para compartir datos de muestra y establecer permisos de usuario que luego se utilizarán para completar el índice de OpenSearch Serverless mediante el componente de contenedor de incrustación de la solución. Realice los siguientes pasos para montar su volumen de datos SVM FSx for ONTAP como una unidad de red, cargar datos en esta unidad de red compartida y establecer permisos según las listas de control de acceso de Windows:

  1. Obtener el ad_host instancia DNS de la salida de su plantilla Terraform.
  2. Navegar a AWS Systems Manager Fleet Manager en su consola de AWSlocalizar el ad_host instancia y Siga las instrucciones aquí para iniciar sesión con Escritorio remotoUtilice el usuario administrador del dominio bedrock-01\Admin y obtener la contraseña de Administrador de secretos de AWSPuedes encontrar la contraseña usando el Administrador de secretos fsx-secret-id identificación secreta de la salida de su plantilla Terraform.
  3. Para montar un volumen de datos de FSx para ONTAP como una unidad de red, en Esta PCseleccione (clic derecho) Red y luego elige Mapa de la unidad de red.
  4. Elija la letra de la unidad y utilice la ruta compartida de FSx para ONTAP para el montaje
    (\\<svm>.<domain >\c$\<volume-name>):
    Mapa de unidad de red
  5. Subir el Guía del usuario de Amazon Bedrock a la unidad de red compartida y establezca permisos solo para el usuario administrador (asegúrese de deshabilitar la herencia en Avanzado):Cargue la guía del usuario de Amazon Bedrock
  6. Subir el Guía del usuario de Amazon FSx para ONTAP a la unidad compartida y asegúrese de que los permisos estén configurados en Todos:Cargue la guía multimedia de Amazon FSX OnTap
  7. En el ad_host servidor, abra el símbolo del sistema e ingrese el siguiente comando para obtener el SID del usuario administrador:
    wmic useraccount where name="Admin" get sid

Pruebe los permisos usando el chatbot

Para probar los permisos usando el chatbot, obtenga la lb-dns-name URL de la salida de su plantilla Terraform y acceda a ella a través de su navegador web:

Prueba con el chatbot e ingresa el mensaje

Para la consulta rápida, haga cualquier pregunta general en la guía del usuario de FSx for ONTAP a la que todos pueden acceder. En nuestro escenario, preguntamos «¿Cómo puedo crear un sistema de archivos de FSx for ONTAP?» y el modelo respondió con pasos detallados y atribución de la fuente en la ventana de chat para crear un sistema de archivos de FSx for ONTAP mediante la consola de administración de AWS, la CLI de AWS o la API de FSx:

Pruebe con el chatbot e ingrese un mensaje relacionado con la guía de Bedrock

Ahora, hagamos una pregunta sobre la guía del usuario de Amazon Bedrock que está disponible solo para acceso de administrador. En nuestro escenario, preguntamos «¿Cómo uso los modelos básicos con Amazon Bedrock?» y el modelo respondió que no tiene suficiente información para brindar una respuesta detallada a la pregunta:

Utilice el SID de administrador en la búsqueda de filtros de usuario (SID) en la interfaz de usuario del chat y haga la misma pregunta en el mensaje. Esta vez, el modelo debe responder con los pasos que detallan cómo usar los FM con Amazon Bedrock y proporcionar la atribución de la fuente utilizada por el modelo para la respuesta:

Permisos de prueba mediante API Gateway

También puede consultar el modelo directamente mediante API Gateway. Obtenga el api-invoke-url parámetro de la salida de su plantilla Terraform.

curl -v '<api-invoke-url>/bedrock_rag_retreival' -X POST -H 'content-type: application/json' -d '{"session_id": "1","prompt": "What is an FSxN ONTAP filesystem?", "bedrock_model_id": "anthropic.claude-3-sonnet-20240229-v1:0", "model_kwargs": {"temperature": 1.0, "top_p": 1.0, "top_k": 500}, "metadata": "NA", "memory_window": 10}'

A continuación, invoque la puerta de enlace API con Todos acceso a una consulta relacionada con la guía del usuario de FSx para ONTAP configurando el valor del parámetro de metadatos en NA para indicar Todos acceso:

curl -v '<api-invoke-url>/bedrock_rag_retreival' -X POST -H 'content-type: application/json' -d '{"session_id": "1","prompt": "what is bedrock?", "bedrock_model_id": "anthropic.claude-3-sonnet-20240229-v1:0", "model_kwargs": {"temperature": 1.0, "top_p": 1.0, "top_k": 500}, "metadata": "S-1-5-21-4037439088-1296877785-2872080499-1112", "memory_window": 10}'

Limpieza

Para evitar cargos recurrentes, limpie su cuenta después de probar la solución. Desde la carpeta Terraform, elimine la plantilla Terraform para la solución:

terraform apply --destroy

Conclusión

En esta publicación, demostramos una solución que utiliza FSx for ONTAP con Amazon Bedrock y utiliza el soporte de FSx for ONTAP para la propiedad de archivos y las listas de control de acceso (ACL) para proporcionar acceso basado en permisos en un escenario de RAG para aplicaciones de IA generativa. Nuestra solución le permite crear aplicaciones de IA generativa con Amazon Bedrock, donde puede enriquecer el mensaje de IA generativa en Amazon Bedrock con los datos de archivos de usuario no estructurados y específicos de su empresa desde un sistema de archivos de FSx for ONTAP. Esta solución le permite brindar respuestas más relevantes, específicas del contexto y precisas, al mismo tiempo que garantiza que solo los usuarios autorizados tengan acceso a esos datos. Por último, la solución demuestra el uso de los servicios sin servidor de AWS con FSx for ONTAP y Amazon Bedrock que permiten el escalado automático, el procesamiento basado en eventos y las interfaces API para sus aplicaciones de IA generativa en AWS.

Para obtener más información sobre cómo comenzar a compilar con Amazon Bedrock y FSx para ONTAP, consulte los siguientes recursos:


Acerca de los autores

Kanishk Mahajan Kanishk es director de arquitectura de soluciones en AWS. Lidera la transformación de la nube y la arquitectura de soluciones para clientes y socios ISV en AWS. Kanishk se especializa en contenedores, operaciones en la nube, migraciones y modernizaciones, IA/ML, resiliencia, seguridad y cumplimiento normativo. Es miembro de la Comunidad de campo técnico (TFC) en cada uno de esos dominios en AWS.

Michael Shaul es arquitecto principal en la oficina del director de tecnología de NetApp. Tiene más de 20 años de experiencia en la creación de sistemas de gestión de datos, aplicaciones y soluciones de infraestructura. Tiene una perspectiva única y profunda sobre las tecnologías de la nube, los desarrolladores y las soluciones de inteligencia artificial.

Sasha Korman es un visionario tecnológico que lidera equipos dinámicos de desarrollo y control de calidad en Israel y la India. Con 14 años de experiencia en NetApp, comenzando como programador, su experiencia práctica y liderazgo han sido fundamentales para dirigir proyectos complejos hacia el éxito, con un enfoque en la innovación, la escalabilidad y la confiabilidad.