projeto_rag
Este projeto implementa um sistema completo de Geração Aumentada por Recuperação (RAG) que permite conversar com seus próprios documentos PDF.
Chatbot RAG com Documentos PDF usando Gemini e LangChain
Este projeto implementa um sistema completo de Geração Aumentada por Recuperação (RAG) que permite conversar com seus próprios documentos PDF. A solução extrai conteúdo de PDFs, incluindo textos, tabelas e imagens, utiliza a IA do Google (Gemini) para limpar e refinar o conteúdo extraído, o indexa em um banco de dados vetorial e fornece uma interface de chat através de uma API web modular construída com FastAPI.
✨ Principais Funcionalidades
🚀 Fluxo de Trabalho do Projeto
O projeto é estruturado em uma pipeline sequencial de processamento de dados e interação:
🛠️ Tecnologias Utilizadas
- Linguagem: Python 3
- IA e LLMs: Google Gemini (para geração, refinamento e embeddings)
- Framework de Orquestração: LangChain
📂 Estrutura de Pastas
.
├── PDFs/ # 1. Coloque seus PDFs de entrada aqui
├── arquivos_markdown_pdfs/ # 2. Saída intermediária dos Markdowns brutos (ignorado pelo Git)
├── markdown_final_limpo_ia/ # 3. Saída dos Markdowns limpos pela IA (ignorado pelo Git)
├── banco_de_dados_vetorial/ # 4. Banco de dados vetorial ChromaDB (ignorado pelo Git)
├── app/ # Código-fonte da aplicação FastAPI
│ ├── endpoints/ # Módulos com os endpoints da API
│ │ ├── chat.py # Lógica do endpoint /chat
│ │ └── health.py # Lógica do endpoint /health
│ ├── models.py # Modelos Pydantic para a API
│ └── main.py # Ponto de entrada e configuração da API FastAPI
├── 1_converter_pdfs.py # Script para converter PDFs em Markdown
├── 2.5_refinar_markdown_com_ia.py # Script para limpar o Markdown com IA
├── 2_criar_banco_vetorial.py # Script para criar o banco de dados vetorial
├── 3_perguntar_ao_rag.py # Script para fazer perguntas via CLI
├── .env.example # Arquivo de exemplo para variáveis de ambiente
├── .gitignore # Arquivos e pastas a serem ignorados pelo Git
└── README.md # Este arquivo
⚙️ Configuração e Instalação
Pré-requisitos
- Python 3.8 ou superior
- Uma chave de API do Google AI Studio.
- Tesseract OCR: Para processar PDFs escaneados, você precisa instalar o Tesseract em seu sistema.
- Windows: Siga as instruções do e adicione o caminho do executável ao PATH do sistema.
Passos de Instalação
🚀 Como Usar
Execute os scripts na ordem correta para construir e interagir com seu sistema RAG.
Passo 1: Coloque seus PDFs
Adicione todos os arquivos PDF que você deseja processar na pasta PDFs/.
Passo 2: Converta os PDFs para Markdown
python 1_converter_pdfs.py
Isso irá popular a pasta arquivos_markdown_pdfs/.
Passo 3: Refine os arquivos Markdown com IA
python 2.5_refinar_markdown_com_ia.py
Isso usará os arquivos da etapa anterior e salvará as versões limpas em markdown_final_limpo_ia/.
Passo 4: Crie o Banco de Dados Vetorial
python 2_criar_banco_vetorial.py
Este script irá processar os arquivos Markdown limpos e criar o banco de dados vetorial na pasta banco_de_dados_vetorial/.
Passo 5: Converse com seus Documentos
Você tem duas opções:
Opção A: Usar a Interface de Linha de Comando (CLI)
python 3_perguntar_ao_rag.py
Siga as instruções no terminal para fazer perguntas. Digite sair para encerrar.
Opção B: Usar a API Web
📚 Documentação da API
A API expõe dois endpoints principais:
GET /health
Verifica o status da API. Retorna uma resposta de sucesso se a API estiver em execução.
- Resposta de Sucesso (200 OK):
{ "status": "ok", "version": "3.3.0" }
POST /chat
O endpoint principal para interagir com o chatbot RAG. Ele recebe uma pergunta e o histórico da conversa e retorna a resposta, as fontes e o histórico atualizado.
📝 .gitignore
O arquivo .gitignore está configurado para excluir:
- Arquivos de ambiente e de IDE (
.env,.idea,.venv). - Pastas de dados gerados (
arquivos_markdown_pdfs, , , ).
Isso garante que apenas o código-fonte seja versionado, mantendo o repositório limpo e leve.