Desarrollo de una Solución RAG de Extremo a Extremo con Bases de Conocimiento para Amazon Bedrock y AWS CDK

Publicado el 29 agosto 2024 por Lauratuero @incubaweb

Retrieval Augmented Generation (RAG) es una técnica de vanguardia en la creación de sistemas de respuesta a preguntas. Combina las fortalezas de los modelos de recuperación con los modelos generativos de lenguaje, lo que posibilita la recuperación de información relevante de un extenso corpus de texto y su síntesis para generar respuestas precisas.

El desarrollo e implementación de una solución RAG de extremo a extremo es un proceso complejo que incluye varios componentes, como una base de conocimiento, un sistema de recuperación y un modelo generativo de lenguaje. Manejar estos componentes es una tarea difícil y propensa a errores, especialmente cuando se trata de datos y modelos a gran escala.

Este artículo muestra cómo automatizar el despliegue de una solución RAG utilizando Knowledge Bases for Amazon Bedrock y el AWS Cloud Development Kit (CDK). Esto permite a las organizaciones establecer rápidamente un sistema de preguntas y respuestas robusto.

La solución permite desplegar de forma automatizada un flujo de trabajo RAG utilizando Knowledge Bases for Amazon Bedrock. Con AWS CDK, se configuran los recursos necesarios, como un rol de AWS Identity and Access Management (IAM), una colección e índice de Amazon OpenSearch Serverless, y una base de conocimiento con su fuente de datos asociada.

El flujo de trabajo RAG facilita el uso de datos documentales almacenados en un bucket de Amazon S3 e integrarlos con las potentes capacidades de procesamiento de lenguaje natural (NLP) de los modelos de base de Amazon Bedrock. Esta solución simplifica el proceso de configuración mediante la modificación programática de la infraestructura, el despliegue del modelo y el inicio de consultas utilizando el modelo de lenguaje (FM) seleccionado.

Para implementar esta solución, se requiere una cuenta AWS activa y conocimiento sobre modelos de lenguaje, Amazon Bedrock y Amazon OpenSearch Service. Es necesario tener acceso habilitado a los modelos requeridos, el AWS CDK ya configurado, y un bucket S3 que contenga documentos en un formato compatible como .txt, .md, .html, .doc/docx, .csv, .xls/.xlsx, .pdf. Además, se requiere tener el modelo Amazon Titan Embeddings V2 habilitado en Amazon Bedrock.

Una vez completados los prerequisitos, se puede proceder con la configuración de la solución siguiendo estos pasos:

1. Clonar el repositorio de GitHub que contiene los archivos de la solución.
2. Navegar al directorio de la solución.
3. Crear y activar el entorno virtual.
4. Instalar las dependencias necesarias.
5. Exportar las credenciales AWS para un rol o usuario.
6. Crear la dependencia y, en caso de ser la primera vez, desplegar el AWS CDK.
7. Sintetizar la plantilla de CloudFormation y desplegar las pilas en el orden específico requerido.

Tras finalizar el despliegue, es posible ver las pilas desplegadas en la consola de AWS CloudFormation y obtener detalles de la base de conocimiento en la pestaña de recursos.

Para probar la solución, se debe:

1. Seleccionar la base de conocimiento creada en la consola de Amazon Bedrock.
2. Sincronizar para iniciar el trabajo de ingesta de datos.
3. Elegir el modelo FM deseado para recuperación y generación.
4. Iniciar consultas de datos utilizando lenguaje natural.

Finalmente, para evitar costos futuros en la cuenta AWS, se debe:

1. Eliminar todos los archivos del bucket S3 provisionado.
2. Eliminar la pila de CloudFormation provisionada utilizando el comando adecuado en la terminal.

Esta solución no solo simplifica el proceso de despliegue, sino que también ofrece una forma escalable y eficiente de utilizar las capacidades de RAG para sistemas de respuesta a preguntas. La posibilidad de modificar programáticamente la infraestructura permite adaptar rápidamente la solución a las necesidades específicas de la organización, convirtiéndola en una herramienta valiosa para una amplia gama de aplicaciones que requieren una recuperación y generación de información precisa y contextual.