The AI Data Assistant
project is a chatbot where users can inquire about data in a database and receive responses in natural language (human language). The project was developed for learning purposes in the area of Data Engineering, D&A in General, and AWS.
The project was divided into three stages:
- Data ingestion into AWS (via a Docker container)
- Creation of a database from the data stored in AWS
- Creation of an intelligent Data Assistant from a connection to the created database.
The AI Data Assistant
was developed using the LangChain framework and the Claude
LLM (Large Language Model) from Anthropic available on AWS Bedrock platform.
Below you can see a brief demonstration of this project in action:
The data engineering process applied in the project was considerably simplified since the main focus was on working with the AI Data Assistant. However, it would be possible to add more stages to the Data Pipeline to meet the project's needs in cases where: (i) data from various sources (local, API, and other databases in AWS) are to be worked on, (ii) the AI Data Assistant database needs to adhere to a specific business rule, or (iii) unstructured or semi-structured data is involved.
For the aforementioned cases, for example, an AWS Lambda function could be created for data ingestion from an API, and AWS Glue jobs could be created to transform unstructured and semi-structured data into structured data, and then modeled according to the logical model that meets the business rules of the database.
The AWS architecture used preferred AWS Lambda, AWS Glue, AWS Athena, Amazon S3, and Amazon Bedrock serverless services to compose the architecture, as follows:
- Data is ingested via a Docker container to execute the following script in an Amazon S3 bucket.
- Once the data is ingested, it is integrated using the AWS Glue Crawler service, which extracts, transforms, and loads the data into a database (created in AWS Lake Formation and AWS Glue Data Catalog).
- Finally, the end user can interact with a Chatbot, developed by this script, which will create SQL queries based on questions and execute them using Amazon Athena. Upon receiving the query result, the Chatbot will process the result to communicate it in natural language to the end user.
- The ingested file is a
csv
from Kaggle containing video game sales data from 1980 to 2016, follow the File Source - The following references were used for code development:
- Natalie's (nataindata) repository
AI Data Engineering Project
was the main inspiration for coding and the starting point for study direction: click here - Ryan Gomes' repository
Conversational AI LLM's with Amazon Lex and Sagemaker
: click here - Gary A. Stafford's repository
LLM Langchain SQL Demo
: click here - Greg Vinton's article
Generative AI with Amazon Bedrock and Amazon Athena
: click here - Kushal Dulani's article
Mastering Language Models with AWS Bedrock and LangChain Framework for Generative AI Applications Part-1
: click here
- Natalie's (nataindata) repository
- Código Fonte do AI Data Assistant
- Código da Ingestão de Dados
O projeto AI Data Assistant
é um chatbot em que o usuário pode perguntar sobre os dados em um banco de dados e receber resposta em linguagem natural (linguagem humana). O projeto foi desenvolvido para fins de aprendizado na área de Engenharia de Dados, D&A em Geral e AWS.
O projeto foi dividido em três etapas:
- Ingestão dos dados na AWS (por meio de um container Docker)
- Criação de banco de dados a partir dos dados armazenados na AWS
- Criação de um Assistente de Dados inteligente de uma conexão ao banco de dados criado.
O AI Data Assistant
foi desenvolvido usando o framework da LangChain e o LLM (Large Language Model ou Grande Modelo de Linguagem) Claude
da Anthropic disponível no AWS Bedrock
Abaixo você pode ver uma breve apresentação de uma Demonstração do Projeto em ação:
A processo de engenharia de dados aplicado no projeto foi bastante simplificado uma vez que a ideia foi trabalhar majoritariamente o AI Data Assistant
. Entretanto, seria possível adicionar mais fases ao Data Pipeline para atender as necessidades do projeto nos casos em que serão trabalhados: (i) dados de várias origens (locais, de API e outros bancos de dados na AWS), (ii) o banco de dados do AI Data Assistant
precisa atender a uma regra de negócio específica , ou, (iv) dados não-estruturados ou semi-estruturados.
Para os casos acima citados, por exemplo, poderia ser criado uma função AWS Lambda para ingestão dos dados de uma API e criado jobs no AWS Glue para transformar os dados não-estruturados e semi-estruturados em dados estruturados e em seguida modelados de acordo com o modelo lógico que atenda as regras de negócio do banco dde dados.
A arquitetura da AWS usada prezou por serviços serverless AWS Lambda, AWS Glue, AWS Athena, Amazon S3 e Amazon Bedrock, para compor a arquitetura, conforme abaixo:
- Os dados são ingeridos por meio de um container Docker para executar o seguinte script em um bucket do Amazon S3
- Uma vez que os dados são ingeridos eles são integrados usando o serviço AWS Glue Crawler que vai extrair, transformar e carregar os dados em um banco de dados (criado no AWS Lake Formation e AWS Glue Data Catalog).
- Por fim, o usuário final pode interagir com um Chatbot, desenvolvido por esse script, que criará queries SQL com base nas perguntas e as executará usando o Amazon Athena, quando recebido o resultado da query o Chatbot fará um processamento do resultado para comunicá-lo em linguagem natural ao usuário final.
- O arquivo ingerido é um
csv
do Kaggle em que estão registrados os dados de vendas de vídeo-game no período de 1980 a 2016, segue a Fonte do Arquivo - Para o desenvolvimento do código foram usadas as seguintes referências:
- O repositório de Natalie (nataindata)
AI Data Engineering Project
foi a principal inspiração para a codificação e o ponto de começo para o direcionamento do estudo: clique aqui - O repositório de Ryan Gomes
Conversational AI LLM's with Amazon Lex and Sagemaker
: clique aqui - O repositório de Gary A. Stafford
LLM Langchain SQL Demo
: clique aqui - O artigo
Generative AI with Amazon Bedrock and Amazon Athena
do Greg Vinton: clique aqui - O artigo
Mastering Language Models with AWS Bedrock and LangChain Framework for Generative AI Applications Part-1
do Kushal Dulani: clique aqui
- O repositório de Natalie (nataindata)