Da Teoria à Prática: Modelos de IA Generativa com R e Python

Consultando e Extraindo Informações de PDFs com IA

Magno T. F. Severino

2024-08-07

Ao final deste tutorial, você será capaz

  • De compreender o que são Grandes Modelos de Linguagem (LLM) e suas aplicações práticas;

  • De entender o funcionamento do Retrieval-Augmented Generation (RAG);

  • De aplicar os conceitos aprendidos para implementar um sistema de RAG usando R e um pouco de Python;

  • De criar um chatbot capaz de interagir com o conteúdo de um arquivo PDF.

Conceitos Importantes

Grandes Modelos de Linguagem (LLM)

  • Modelos de IA treinados em grandes volumes de texto.

  • Capazes de entender e gerar linguagem natural de forma semelhante aos humanos.

  • Exemplos incluem GPT-4 e Gemini.

Generative Pre-trained Transformer (GPT)

  • Modelo de linguagem baseado em transformadores.

  • Pré-treinado em grandes quantidades de dados textuais.

  • Possuem milhões (ou bilhões) de parâmetros.

  • Especializado em geração de texto de alta qualidade e coerência.

  • Exemplos incluem GPT-2, GPT-3 e GPT-4.

Prompt

  • Instrução ou conjunto de instruções fornecidas a um modelo de linguagem.

  • Guia a geração de respostas ou execução de tarefas específicas.

  • Essencial para obter resultados desejados de um LLM.

  • Exemplo:

"Esta semana estou em Fortaleza para um evento científico. Me dê dicas do que fazer para aproveitar a cidade no fim do dia."

Engenharia de Prompt

  • “Arte” de criar prompts eficazes para maximizar a qualidade das respostas.

  • Inclui técnicas de ajuste de perguntas, fornecimento de contexto e exemplos.

  • Fundamental para o sucesso em aplicações práticas de LLM.

  • Exemplo: Adicionar contexto específico ao prompt para obter respostas mais precisas.

Fluxo Conceitual do Uso de um LLM


Como adicionar conhecimento específico à esse tipo de modelo?

Fine Tunning

  • Processo de ajuste fino de um LLM em um conjunto de dados específico.

  • Melhora o desempenho em tarefas particulares, como análise de sentimentos ou tradução.

  • Necessário para adaptar modelos pré-treinados a contextos ou setores específicos.

  • Exige um investimento cuidadoso de tempo e esforço.

  • Limitação: Pode ser custoso e demorado.

Geração Aumentada de Recuperação

  • Retrieval-Augmented Generation (RAG).

  • O modelo de linguagem gera respostas com base em documentos recuperados de uma base de dados.

  • Vantagens:

    • Melhora a precisão das respostas ao fornecer contexto relevante.
    • Reduz o risco de gerar respostas incorretas ou desinformadas.
    • Permite atualização fácil de informações ao manter uma base de dados atualizada.

Fluxo Conceitual do Uso de RAG

Embeddings

  • Representação numérica de dados em um espaço vetorial multidimensional.

  • Utilizados para representar semanticamente palavras, frases ou documentos.

  • Facilitam tarefas como busca semântica e análise de similaridade.

Embeddings

Langchain

  • Framework de desenvolvimento para aplicações de IA generativa implementado em Python.

  • Facilita a integração de LLMs com fontes de dados e ferramentas de processamento.

  • Oferece componentes modulares para construção de fluxos de trabalho complexos.

API

  • Interface de Programação de Aplicações (API).

  • Conjunto de definições e protocolos para integração entre softwares.

  • Permite a comunicação e compartilhamento de funcionalidades entre diferentes sistemas.

chatgpt <- function(prompt)
  response <- httr::POST(
    url = "https://api.openai.com/v1/chat/completions", 
    add_headers(Authorization = paste("Bearer",
                                      Sys.getenv("OPENAI_API_KEY"))),
    content_type_json(), encode = "json",
    body = list(model = "gpt-4o-mini",
                messages = list(list(role = "user",  content = prompt)))
  )
  return(respose)

chatgpt("Quais os principais museus de Fortaleza?")

reticulate

Langchain

  • Pacote do R que permite a integração com Python.
  • Facilita a chamada de código Python e uso de suas bibliotecas diretamente do R.
  • Útil para aproveitar ferramentas e modelos de IA disponíveis em Python.
  • Permite a troca de dados e objetos entre R e Python.

ggplot2

Langchain

  • Pacote de Visualização de Dados em R.

  • Baseado na Gramática de Gráficos.

  • Permite criar visualizações complexas a partir de componentes simples.

  • Gráficos como de dispersão, de linhas, de barras, histogramas, etc.

  • Personalização avançada de gráficos, incluindo temas, escalas e layouts.

ggplot2

gglayers

ggplot2

ggplot(dados_brasil, aes(ano, expectativa_de_vida))

ggplot2

ggplot(dados_brasil, aes(ano, expectativa_de_vida)) +
  geom_line()

ggplot2

ggplot(dados_brasil, aes(ano, expectativa_de_vida)) + geom_line() + geom_point() + 
  labs(x = "Ano", y = "População") +
  theme(axis.text = element_text(size = 18), axis.title = element_text(size = 20))

Requisitos Necessários para Reprodução

  • R e RStudio Instalados.

  • Python Instalado.

  • Conta na plataforma OpenAI.

  • Conta na plataforma Pinecone.

Hora de colocar em prática!

gglayers