Crie Apps Inteligentes com JavaScript - Integração de RAG, Azure OpenAI e LangChain.js
Published Jul 01 2024 07:25 PM 2,904 Views
Microsoft

logo-braziljs.png

 

No último dia 25 e 26 de Abril aconteceu o maior evento de JavaScript do planeta: a BrazilJs Conference 2024. E, o evento foi um grande sucesso, como sempre! Contando com os maiores nomes do mercado e especilistas em JavaScript. E, depois de cinco anos, o evento voltou a ser presencial, com a presença de 4 mil pessoas nos dois dias de evento.

 

E, fui uma das palestrantes do evento, a qual tive a oportunidade de falar sobre como Criar Aplicações Inteligentes com Javascript: Integrando RAG, Azure OpenAI & LangChain.js.

 

glau-palestra.png

 

A partir de agora, compartilharei com vocês um pouco do que foi apresentado na minha palestra!

 

Se você deseja assistir a palestra na íntegra, acesse:

 

 

 

Vamos lá!

 

O que é RAG (Retrieval Augmented Generation)?

 

Logo no início da palestra, procurei explicar o que é RAG e porque esse tipo de modelo é tão importante para a criação de aplicações inteligentes.

 

RAG, ou Retrieval Augmented Generation, é uma arquitetura que combina a recuperação de informações externas com geração de respostas por grandes modelos de linguagem (LLMs). Assim sendo, esse tipo de abordagem permite pesquisar em Banco de Dados externos além das informações pré-treinadas nos modelos de linguagem, proporcionando respostas mais precisas e contextualizadas. Essa arquitetura é particularmente útil para empresas que desejam utilizar dados específicos e relevantes, sem comprometer informações sensíveis.

 

Por mais que vejamos muitos exemplos baseados em textos, esse tipo de arquitetura pode ser aplicado em diferentes tipos de dados, como: imagens vetorizadas, documentos e até mesmo áudios.

 

rag-explanation.png

 

Simplificando: "A arquitetura RAG permite que empresas utilizem IA para analisar e gerar informações a partir de seus dados específicos, como textos e imagens relacionadas ao seu negócio, de forma controlada e direcionada".

 

Se deseja saber mais sobre RAG, recomendo a leitura da documentação oficial da Microsoft que fala sobre o assunto: Retrieval Augmented Generation (RAG) in Azure AI Search

 

Arquitetura RAG (Retrieval Augmented Generation)

 

Na palestra, mostrei uma arquitetura padrão RAG, a qual é composta por três componentes principais e segue o seguinte fluxo de execução:

 

arq-rag.png

 

fonte da image: LangChain.js presentation

 

  • Indexing (Indexação): esse é um processo de indexação que organiza os dados numa base de dados vetorial de forma a tornar mais fácil e pesquisáveis. Este recurso acaba sendo crítico porque prepara o terreno para que o RAG acesse as informações relevantes rapidamente quando for responder a uma consulta.

    • Mecanismos: a partir daí, se inicia com a coleta de documentos, que são divididos em pedaços menores por um 'splitter'. A qual, cada pedaço de texto é transformado num vetor de incorporação por algoritmos complexos. Estes vetores são armazenados na base de dados, permitindo a recuperação eficiente de informações semelhantes.
  • Retrieval (Recuperação): aqui se utiliza técnicas de similaridade de vetores para encontrar documentos ou passagens mais relevantes para responder a uma consulta.

    • Mecanismos: são usadas técnicas/algoritmos tais como: Representações vetoriais esparsas, Incorporações vetoriais densas, Busca Híbrida
  • Generation (Geração): por fim, com as passagens mais relevantes recuperadas, a tarefa do gerador é produzir uma resposta final, sintetizando e expressando essa informação em linguagem natural.

    • Mecanismos: a forma de mecanismos serão os modelos de linguagem, como: GPT, BERT, Claude ou T5. Assim, eles utilizarão a consulta quanto os documentos relevantes identificados pelo recuperador para gerar a sua resposta.

 

O que é LangChain.js?

 

Prosseguindo com a palestra, apresentei o LangChain.js, um framework open-source para desenvolver aplicações alimentadas por modelos de linguagem.

 

O LangChain.js nos possibilita:

 

1. Facilidade de Uso: com uma API simples e intuitiva, tornando a biblioteca acessível tanto para desenvolvedores experientes quanto para iniciantes no desenvolvimento de aplicações inteligentes com uso de modelos de linguagem.

 

2. Desenvolvimento Modular: com componentes e estruturas modulares que permite aos desenvolvedores adicionar e remover componentes conforme necessário, facilitando a customização e a manutenção do código.

 

3. Suporte para Diferentes Modelos de Linguagem: compatível com vários modelos de linguagem, como: GPT-3, GPT-4, GPT-4o, BERT, Claude, Phi-3 e muitos outros.

 

4. Componentes: ferramentas combináveis e integrações para trabalhar com modelos de linguagem. Os componentes são modulares e fáceis de usar, esteja você usando a estrutura do LangChain.js ou não.

 

5. Composição de cadeias (os famosos chains): permite a criação uma sequências de operações ou 'cadeias' onde a saída de um modelo de linguagem que pode ser usada como entrada para outro, possibilitando fluxos de trabalho complexos.

 

6. Memória: há também suporte de memória às cadeias (chains) para que se possa manter o contexto das interações. O que permite um diálogo mais natural e coerente com os modelos de linguagem.

 

langchainjs.png

 

Há muitas outras vantagens ao fazer uso do LangChain.js. Recomendo a leitura da documentação oficial para saber mais sobre o framework: LangChain.js Documentation

 

Integrando RAG, Azure OpenAI & LangChain.js

 

Por fim, mostrei como podemos integrar o RAG, Azure OpenAI e LangChain.js para criar aplicações inteligentes com JavaScript com um exemplo prático:

 

app-presentation.png

 

O exemplo prático consiste numa aplicação Serverless AI Chat com RAG usando LangChain.js.

 

E, conta com as seguintes tecnologias:

 

 

arq-chat-rag.png

 

Vamos entender um pouco sobre a arquitetura da aplicação:

 

1. Azure Blob Storage:

 

  • Função: armazenar os documentos PDF. Poderia ser qualquer tipo de arquivo, mas para este exemplo, optamos por PDFs.
  • Fluxo de dados: os PDFs são enviados para o Azure Blob Storage via a API documents-get.ts

2. Serverless API:

 

  • Função: atua como intermediário entre diversos serviços e a aplicação web, que nesse caso está usando o Azure Static Web Apps com Lit.
  • Fluxo de Dados: recebe os uploads de documentos PDF do Blob Storage. Armazena e recupera chunks de texto vetorizados no Azure CosmosDB. Depois, envia os chunks de texto vetorizados para o Azure OpenAI Service para geração de respostas.

3. Azure CosmosDB for MongoDB vCore:

 

  • Função: armazena e recupera os chunks de texto vetorizados.
  • Fluxo de Dados: armazena os chunks de texto processados pela Serverless API. Facilitando assim a busca vetorial para recuperação de dados relevantes.

4. Azure OpenAI Service:

 

  • Função: os Embbedings (transforma em vetores) os chunks de texto e gera respostas.
  • Fluxo de Dados: recebe chunks de texto da Serverless API. Gera respostas baseadas nos dados recuperados e nos modelos de linguagem pré-treinados.

5. Web App:

 

  • Função: interface de usuário que permite interação com o chat. Nesse caso estamos usando o Azure Static Web Apps com Lit
  • Fluxo de Dados: envia chamadas HTTP para a Serverless API para fazer perguntas e receber respostas no chat em tempo real.

6. PDF:

 

  • Função: documentos que contêm informações relevantes e que são armazenados no Azure Blob Storage.
  • Fluxo de Dados: são enviados via upload HTTP para o Azure Blob Storage.

Abaixo, podemos ver a aplicação em execução:

 

demo.gif

 

 

Recomendo que todos vocês acessem o repositório do projeto para saber mais sobre a aplicação e como você pode criar a sua própria aplicação inteligente com JavaScript. 

 

Link repositório da Aplicação: Serverless AI Chat with RAG using LangChain.js - branch mongodb-vcore.

 

Aproveite também deixe a sua estrela no repositório! Pois, isso ajuda a comunidade a encontrar o projeto.

 

Conclusão

 

Novamente, se você não assistiu a palestra na íntegra, acesse:

 

 

Nesse artigo, compartilhei um pouco de como foi a palestra dada. Aprendemos sobre o que é RAG, a arquitetura RAG, o que é LangChain.js e como integrar RAG, Azure OpenAI e LangChain.js para criar aplicações inteligentes com JavaScript.

 

Estamos preparando uma sequencia de vídeos explicando com mais detalhes o código desenvolvido para a aplicação. E, sem contar com um workshop baseado nessa aplicação. Então, fique ligado nas novidades futuras!

 

Recursos Adicionais

 

Sempre é bom ter mais recursos para aprender mais sobre o assunto. Aqui estão alguns links que podem te ajudar:

 

 

E, se você gostou do artigo, compartilhe com seus amigos e colegas de trabalho. E, se tiver alguma dúvida ou sugestão, deixe nos comentários. Ficarei feliz em responder!

 

E, no próximo artigo, estarei explicando detalhadamente como usar essa aplicação passo a passo! Nos vemos! :cool:

Co-Authors
Version history
Last update:
‎Jul 01 2024 12:25 PM
Updated by: