Blog Post

Desenvolvedores BR
6 MIN READ

Azure Static Web Apps Community: Criação de uma App (RAG) com App Spaces e Azure Static Web Apps

Glaucia_Lemos's avatar
Glaucia_Lemos
Icon for Microsoft rankMicrosoft
Jul 27, 2024

 

No último encontro da Comunidade Azure Static Web Apps através do Canal do Youtube - Microsoft Azure Developers, foi demonstrado como se pode criar uma aplicação de Geração Aumentada por Recuperação (RAG) utilizando o Azure Static Web Apps e o App Spaces.

 

O evento foi conduzido pelo Dheeraj Bandaru, que é Product Manager do Azure Static Web Apps na Microsoft. Dheeraj contou com a participação do Skyler Hardle, que é Senior Manager do Apps Spaces na Microsoft.

 

Skyler, apresentou um guia prático sobre a integração entre esses serviços e a implementação de uma aplicação RAG (Retrieval Augmented Generation). A seguir, compartilharei com vocês o que foi abordado durante o evento, detalhando a arquitetura da aplicação e as etapas de desenvolvimento.

 

Mas, antes precisamos entender esse novo serviço e como ele pode ser útil para a criação de aplicações modernas.

Inclusive, se você deseja assistir ao evento na íntegra, poderá acessar o link abaixo:

 

 

 

O que é o App Spaces?

 

 

App Spaces é um serviço inteligente para desenvolvedores que reduz a complexidade de criar e gerenciar aplicações web. Ele ajuda a identificar os serviços corretos para suas aplicações no Azure e proporciona uma experiência de gerenciamento simplificada para o processo de desenvolvimento.

 

App Spaces também oferece os benefícios de implantar uma aplicação através dos serviços existentes do Azure, como Azure Container Apps e Azure Static Web Apps, com uma experiência focada no desenvolvimento e implantação de forma simplificada e rápida.

 

Resumindo....

 

 

App Spaces é a maneira mais rápida de implantar e gerenciar suas cargas de trabalho de aplicativos inteligentes, sem ser um especialista em nuvem.

 

 

O que é Geração Aumentada de Recuperação (RAG)?

 

Geração Aumentada de Recuperação (RAG) é uma técnica que combina a recuperação de informações externas com a geração de respostas por modelos de linguagem (LLMs).

 

Essa abordagem permite enriquecer o contexto dos modelos de IA, proporcionando respostas mais precisas e relevantes. No caso do nosso aplicativo, utilizamos bancos de dados vetoriais para armazenar documentos e embeddings, permitindo uma recuperação eficiente e contextualizada de informações.

 

Primeiro, alguns conceitos básicos sobre RAG

 

Os grandes modelos de linguagem (LLMs) como o ChatGPT são treinados com dados públicos disponíveis na internet no momento do treinamento. Eles podem responder a perguntas relacionadas aos dados nos quais foram treinados. No entanto, esses dados públicos podem não ser suficientes para atender a todas as suas necessidades.

 

Você pode querer respostas baseadas em seus dados privados ou os dados públicos podem simplesmente estar desatualizados. A solução para esse problema é a Geração Aumentada por Recuperação (RAG), um padrão usado em IA que utiliza um LLM para gerar respostas com base em seus próprios dados.

 

Como o RAG Funciona?

 

RAG é um padrão que usa seus dados com um LLM para gerar respostas específicas aos seus dados. Quando um usuário faz uma pergunta, o armazenamento de dados é pesquisado com base na entrada do usuário. A pergunta do usuário é então combinada com os resultados correspondentes e enviada ao LLM usando um prompt (instruções explícitas para um modelo de IA ou aprendizado de máquina) para gerar a resposta desejada. Isso pode ser ilustrado da seguinte forma.

 

A imagem abaixo representa o fluxo de trabalho do RAG:

 

 

Se você deseja saber mais sobre o RAG, recomendo a leitura do artigo Geração Aumentada por Recuperação (RAG).

 

 

Arquitetura do Aplicativo RAG com App Spaces

 

No evento, Skyler apresentou a arquitetura do aplicativo RAG que seria desenvolvido durante a apresentação. um frontend em React, um backend em FastAPI e um banco de dados vetorial. Esses componentes trabalham juntos para fornecer uma solução completa e integrada. Abaixo, detalho o funcionamento de cada um desses componentes.

 

A seguir, detalharei cada um desses componentes.

 

Frontend com React

 

O frontend do aplicativo é desenvolvido em React e faz chamadas a um backend FastAPI para buscar e armazenar embeddings em um banco de dados vetorial (Qdrant). A interface do usuário permite inserir perguntas e visualizar as respostas geradas pelo sistema.

 

Backend com FastAPI

 

O backend é responsável por duas funcionalidades principais:

 

  1. Gerar e armazenar embeddings: Utiliza a API de embeddings do OpenAI para gerar vetores a partir do texto fornecido e armazená-los no banco de dados vetorial.

  2. Recuperar e gerar respostas: Busca embeddings relevantes no banco de dados vetorial e utiliza o OpenAI GPT-4 para gerar respostas baseadas nesses embeddings.

 

 

Banco de Dados Vetorial

 

Para a aplicação foi utilizado o Qdrant, um banco de dados vetorial que permite armazenar e recuperar embeddings de forma eficiente. O Qdrant é uma solução escalável e de alto desempenho para aplicações que requerem a recuperação de informações relevantes com base em consultas feitas pelo usuário.

 

Implementação da Aplicação RAG

 

Configuração Inicial

 

Para começar, acesse o App Spaces no portal Azure e selecione a opção para criar um novo 'space' de aplicação. Você pode escolher um repositório do GitHub ou utilizar um dos templates fornecidos, como o RAG App. Configure as variáveis de ambiente necessárias, incluindo as chaves da API do OpenAI.

 

 

Implantação do Frontend

 

O frontend da aplicação é uma aplicação React que pode ser implantado no Azure Static Web Apps. Para isso, basta configurar o repositório do GitHub e definir o diretório de saída da aplicação. O Azure Static Web Apps irá criar automaticamente um pipeline de CI/CD para implantar a aplicação.

 

 

Configuração e Implantação do Backend

 

O backend em FastAPI é implantado usando o Azure Container Apps no Azure. Ele manipula as requisições de geração e armazenamento de embeddings, bem como a recuperação e geração de respostas.

 

 

Demonstração da Aplicação RAG

 

  • Inserindo e Armazenando Texto: O usuário insere um texto no frontend, que é enviado ao backend para gerar e armazenar embeddings no banco de dados vetorial.

 

  • Fazendo Perguntas e Recebendo Respostas: O usuário faz perguntas através do frontend, que são processadas pelo backend para buscar embeddings relevantes e gerar respostas utilizando o GPT-4 da OpenAI.

 

 

Se desejar saber mais da aplicação desenvolvida no evento, poderá acessar o repositório do GitHub app-spaces-rag-app

 

Inclusive, Julia Muiruri, que é Developer Advocate na Microsoft, gravou um vídeo sobre a aplicação desenvolvida no evento. Você pode assistir o vídeo abaixo:

 

 

Gerenciamento e Extensibilidade

 

App Spaces facilita a adição de novos componentes a sua aplicação, como novos frontends ou integrações com outros serviços. A interface de gerenciamento permite visualizar logs, métricas e configurar variáveis de ambiente de forma intuitiva.

 

O mais interessante disso tudo é que independente da linguagem de programação no lado do Backend, você pode utilizar o App Spaces para gerenciar e implantar sua aplicação. Seja você um desenvolvedor Python, .NET, Node.js, Java, Go, etc., o App Spaces é uma excelente opção para gerenciar suas aplicações.

 

Se desejar ver outros exemplos de aplicações em diferentes linguagens de programação, poderá acessar o repositório do GitHub app-spaces-samples.

 

 

E, já recomendo em você começar agora a testar o App Spaces! Você pode começar a testar de forma totalmente gratuita. Acesse agora: AQUI ou clicando na imagem abaixo:

 

 

Conclusão

 

No encontro da comunidade Azure Static Web Apps, aprendemos a criar uma aplicação de Geração Aumentada por Recuperação (RAG) utilizando Azure Static Web Apps e App Spaces. Exploramos a arquitetura da aplicação, configuramos os componentes necessários e implementamos uma solução prática que enriquece o contexto dos modelos de IA, proporcionando respostas mais precisas e relevantes.

 

Lembrando que você poder rever o evento na íntegra, acessando o link abaixo:

 

 

Microsoft Reactor YouTube Channel

 

Você sabia que temos uma das maiores comunidades com temas diversos sobre tecnologia, nuvem e desenvolvimento de software? Não! Então, você precisa conhecer o Microsoft Reactor.

 

 

Além disso conta com inúmeros eventos online, presenciais, workshops, meetups e muito mais. Acesse o link da página oficial do Microsoft Reactor e inscreva-se no canal para ficar por dentro de tudo que acontece na comunidade.

 

 

Recursos Adicionais

 

Gostou do App Spaces? Quer saber mais sobre o serviço e como ele pode ajudar a simplificar o desenvolvimento de aplicações web? Ou melhor, quer aprender através de um tutorial prático como criar uma aplicação com App Spaces?

 

Deixarei abaixo alguns links que poderão te ajudar a explorar mais sobre o App Spaces e como ele pode ser útil para o desenvolvimento de aplicações modernas.

 

 

Espero que tenha gostado do artigo e que ele tenha sido útil para você. Se tiver alguma dúvida ou sugestão, não hesite em deixar um comentário abaixo.

 

Até a próxima! :cool:

Updated Aug 19, 2024
Version 3.0
  • Important Note

    App Spaces is now deprecated and will be decommissioned by Dec 2024. The underlying resources provisioned as part of any existing space are not affected by this change and will continue to operate as-is. You can find them under the resource group mentioned in the Info tab for each component.