Código desenvolvido para explicar RAG para alunos da oficina "Fluxos Inteligentes: Construindo Sistemas Multiagentes com LangChain e LangGraph" no evento Elas@Conectam.
Este repositório apresenta um pipeline RAG (Retrieval-Augmented Generation) multimodal, ideal para quem deseja entender e aplicar fluxos de processamento de documentos que combinam texto e imagens .
- Funcionalidades
- Motivação e Contexto
- Pré-requisitos
- Instalação
- Estrutura do Projeto
- Como Usar
- Arquitetura
- Exemplo de Execução
- Contribuição
- Licença
- Extração de Texto: captura todo o conteúdo textual de cada página do PDF.
- Detecção e Salvamento de Imagens: extrai e armazena todas as imagens embutidas.
- Geração de Descrições Visuais: usa o modelo Gemini-2.0-Flash para criar descrições detalhadas de cada imagem.
- Indexação Semântica: converte textos e descrições em vetores usando MiniLM e armazena em FAISS.
- Pipeline RAG Modular: separa claramente as etapas de retrieve (busca de contexto) e generate (resposta), orquestrado por LangGraph.
- Interação em Tempo Real: usuário faz perguntas sobre o PDF e recebe respostas contextuais, com as imagens relevantes exibidas.
Durante o evento Elas@Conectam, a oficina Fluxos Inteligentes introduziu conceitos de sistemas multiagentes, RAG e arquiteturas de busca aumentada por recuperação. Este código serve como exemplo prático para demonstrar:
- Como combinar LLMs multimodais (texto + imagem) em um único fluxo.
- A modularidade de pipelines com LangChain e LangGraph.
- A construção de um sistema didático que lê, entende e responde perguntas sobre PDFs.
- Python 3.8+
- Conta e API Key do Google Cloud com acesso ao modelo Gemini
- Ambiente Jupyter ou Google Colab (recomendado)
-
Clone o repositório:
git clone https://github.com/seu-usuario/leitor-pdf-multimodal.git cd leitor-pdf-multimodal
-
Instale as dependências:
pip install -U langgraph langchain langchain-google-genai langchain_community faiss-cpu pdf2image PyMuPDF
-
Defina a API Key do Google:
export GOOGLE_API_KEY="SUA_CHAVE_AQUI"
Se usar Colab, a célula de configuração solicitará a chave interativamente.
leitor-pdf-multimodal/
├── notebook.ipynb # Notebook com todo o pipeline e comentários
├── pdf_images/ # Diretório onde as imagens são extraídas
├── README.md # Documentação deste projeto
└── requirements.txt # Lista de dependências pinadas
-
Abra
notebook.ipynb
no Colab ou Jupyter. -
Execute as células na ordem:
- Instalação de pacotes
- Configuração da API Key
- Upload do PDF
- Extração de texto e imagens
- Geração de descrições
- Indexação semântica
- Construção e visualização do grafo RAG
- Loop de perguntas
-
Quando solicitado, digite sua pergunta sobre o PDF e confira:
- Resposta textual baseada no contexto extraído.
- Imagens relevantes exibidas abaixo da resposta.
-
Input: usuário faz upload de um PDF.
-
Extração:
- Texto (PyMuPDF →
Document
). - Imagens (PyMuPDF → arquivos PNG).
- Texto (PyMuPDF →
-
Visão Computacional:
- Envio de cada imagem ao Gemini para descrição detalhada.
- Criação de
Document
para cada descrição.
-
Indexação Semântica:
- Gerar embeddings (MiniLM).
- Construir índice FAISS.
-
RAG (LangGraph):
- retrieve: busca os documentos mais similares.
- generate: gera resposta com o contexto reunido.
-
Output: exibição da resposta + imagens usadas.
Pergunta: "Quais são os principais benefícios apresentados no capítulo 2?"
Resposta:
Os benefícios descritos incluem X, Y e Z...
Este projeto está sob a MIT License.