- Remover conflitos de merge - Adicionar badges - Organizar seções de documentação - Melhorar estrutura de headings - Adicionar links para documentação adicional - Melhorar seção de troubleshooting Versão 1.0.0 - Production Ready
9.4 KiB
9.4 KiB
Sistema RAG Espiritismo
Sistema de consulta assistida por IA para livros de espiritismo em PDF, com interface web rica e bot do Telegram.
🚀 Visão Geral
Este projeto implementa um Sistema RAG (Retrieval-Augmented Generation) completo para consultar e analisar livros de espiritismo usando inteligência artificial. O sistema permite:
- 🔍 Chat Inteligente: Pergunte sobre espiritismo e receba respostas baseadas nos livros
- 📄 Upload de PDFs: Adicione novos livros facilmente
- 📱 Bot Telegram: Receba conteúdo agendado no Telegram
- 🌐 Interface Web: Interface amigável e responsiva
- 🤖 IA Local: Modelos em CPU-only (Llama 3.2 3B)
📋 Stack Tecnológica
IA & Machine Learning
- GPT4All: Framework para modelos LLM local
- Llama 3.2 3B: Modelo quantizado em 4-bit (aprox. 2GB)
- LangChain: Framework para aplicações RAG
- Sentence Transformers: Geração de embeddings
- Qdrant: Banco de dados vetorial
Backend & API
- FastAPI: Framework web moderno e rápido
- Pydantic: Validação de dados
- Celery: Processamento assíncrono
- Redis: Broker para Celery
Frontend
- HTML5/CSS3: Estrutura e estilização
- Vanilla JavaScript: Interatividade
Deployment
- Docker: Containerização
- Docker Compose: Orquestração de serviços
- Gitea: Hospedagem do código
📋 Funcionalidades
1. Chat com IA
- Interface de chat intuitiva
- Respostas baseadas nos livros indexados
- Citações de fontes com referências
2. Upload de PDFs
- Upload de novos livros PDF
- Processamento automático de texto
- Indexação em Qdrant
3. Bot Telegram
- /start: Apresentação do sistema
- /help: Lista de comandos disponíveis
- /status: Verificar status do sistema
- /books: Listar livros disponíveis
- Comando de pergunta: Enviar perguntas diretamente ao bot
4. Agendamento de Mensagens
- Criar agendamentos via interface web
- Escolher data/hora específica
- Especificar livro ou "todos os livros"
5. Conteúdo Diário
- Geração automática de conteúdo diário
- Enviado às 8:00 todos os dias
📁 Estrutura do Projeto
espiritismo-rag-system/
├── backend/
│ ├── app/
│ │ ├── main.py # FastAPI com todas as rotas
│ │ ├── models.py # Pydantic models
│ │ ├── services/
│ │ │ ├── rag_service.py # RAGService (Qdrant + LLM)
│ │ │ ├── pdf_processor.py # PDFProcessor
│ │ │ └── bot_service.py # Telegram Bot
│ │ ├── utils/
│ │ │ ├── embeddings.py # EmbeddingService
│ │ │ └── schedule_manager.py # CRUD de agendamentos
│ │ ├── templates/
│ │ │ └── index.html # Interface web
│ │ └── tasks/
│ │ └── celery_tasks.py # Celery tasks
│ ├── scripts/
│ │ └── index_books.py # Script de indexação
│ ├── Dockerfile # Container backend
│ └── requirements.txt # Dependências Python
├── frontend/
│ └── static/
│ ├── css/style.css # Estilos
│ └── js/script.js # JavaScript funcional
├── docs/
│ └── superpowers/
│ ├── plans/
│ │ └── 2025-11-01-espiritismo-rag-system.md
│ └── specs/
│ └── 2025-11-01-espiritismo-rag-system-design.md
├── PDF/ # Livros PDF (6 livros)
├── docker-compose.yml # Orquestração de serviços
├── .env # Variáveis de ambiente
├── .env.example # Template de .env
├── BUILD.md # Instruções de build
├── README.md # Este arquivo
├── IMPLEMENTATION_COMPLETE.md # Resumo da implementação
└── LICENSE # MIT License
🔧 Pré-requisitos
- Docker e Docker Compose instalados
- ~5GB de espaço em disco
- 8GB de RAM (recomendado)
- CPU para inferência de modelo
📦 Instalação e Deploy
1. Clone o Repositório
git clone https://git.labexposed.com/lgcosta/espiritismo-rag-system.git
cd espiritismo-rag-system
2. Download do Modelo (Aprox. 2GB)
cd backend
mkdir -p models
# Baixe o modelo Llama 3.2 3B quantizado
wget https://huggingface.co/MaziyarPanahi/Llama-3.2-3B-Instruct-GGUF/resolve/main/llama-3.2-3b-instruct-q4_0.gguf
mv llama-3.2-3b-instruct-q4_0.gguf models/
# Ou use o GPT4All para baixar automaticamente
3. Configurar Variáveis de Ambiente
cp backend/.env.example .env
Edite o arquivo .env:
GPT4ALL_MODEL=models/llama-3.2-3b-instruct-q4_0.gguf
QDRANT_URL=http://localhost:6333
TELEGRAM_BOT_TOKEN=seu_token_aqui
TELEGRAM_CHAT_ID=seu_chat_id_aqui
CELERY_BROKER_URL=redis://localhost:6379/0
CELERY_RESULT_BACKEND=redis://localhost:6379/0
UPLOAD_DIR=/app/uploads
INDEX_DIR=/app/index
Para obter seu Telegram Bot Token:
- Chat com @BotFather no Telegram
- Envie
/newbote siga as instruções - Copie o token
Para obter seu Chat ID:
- Crie um bot com @BotFather
- Envie
/startpara o bot - Use uma ferramenta como
curl "https://api.telegram.org/bot<token>/getUpdates"
4. Build e Start dos Serviços
# Build das imagens Docker
docker-compose build
# Start de todos os serviços
docker-compose up -d
# Verificar status
docker-compose ps
5. Indexar os Livros
docker-compose run --rm web python backend/scripts/index_books.py
Isso irá:
- Carregar os 6 livros PDF da pasta
PDF/ - Extrair texto e gerar chunks
- Criar embeddings com Sentence Transformers
- Salvar em Qdrant
6. Acessar os Serviços
- Web Interface: http://localhost:8000
- API Docs: http://localhost:8000/docs
- Qdrant Dashboard: http://localhost:6333/dashboard
📖 Uso
Web Interface
- Abra http://localhost:8000 no navegador
- Digite uma pergunta sobre espiritismo
- Receba resposta com fontes
- Faça upload de novos PDFs
- Crie agendamentos de mensagens
Telegram Bot
- Inicie o bot com
/start - Use
/helppara ver comandos - Use
/statuspara ver status - Use
/bookspara listar livros - Pergunte qualquer coisa para receber respostas
Agendamento de Mensagens
- Acesse a interface web
- Vá até "Agendar Mensagens"
- Selecione data/hora
- Escolha livro ou "Todos os livros"
- Clique em "Adicionar Agendamento"
🔄 Agendamentos Automáticos
O sistema executa automaticamente:
- A cada hora: Envia mensagens agendadas
- Todo dia às 8:00: Gera conteúdo diário
🧪 Testando
Testar Chat
curl -X POST http://localhost:8000/api/chat \
-H "Content-Type: application/json" \
-d '{"message": "Qual é o princípio fundamental do espiritismo?", "top_k": 3}'
Testar Lista de Livros
curl http://localhost:8000/api/books
Testar Upload de PDF
curl -X POST http://localhost:8000/api/upload \
-F "file=@caminho/para/seu/livro.pdf"
📊 Monitoramento
Ver Logs dos Serviços
# Todos os serviços
docker-compose logs -f
# Web service
docker-compose logs -f web
# Celery worker
docker-compose logs -f celery
# Celery beat
docker-compose logs -f celery-beat
# Qdrant
docker-compose logs -f qdrant
🛠️ Troubleshooting
Problemas de Build
# Limpar cache e rebuild
docker-compose build --no-cache
docker-compose down
docker-compose up -d
Qdrant Não Inicia
# Remover volume existente
docker volume rm espiritismo_qdrant_data
# Reiniciar
docker-compose up -d qdrant
Out of Memory
# Reduzir workers do Celery
# Edite docker-compose.yml
celery:
command: celery -A app.tasks.celery_tasks worker --loglevel=info --concurrency=2
# Reiniciar
docker-compose restart celery
📈 Métricas
Performance Estimada
- Indexação de 6 livros: ~5-10 minutos (CPU)
- Tempo de resposta: ~2-5 segundos por pergunta
- Consumo de RAM: ~4GB (com modelo carregado)
- Espaço em disco: ~5GB total
Resources
- Llama 3.2 3B q4_0: ~2GB
- Embeddings (384 dims): ~1GB
- Qdrant index: ~1GB
- Livros PDF: ~1GB
🤝 Contribuindo
Contribuições são bem-vindas! Sinta-se livre para:
- Reportar bugs
- Sugerir melhorias
- Enviar pull requests
- Adicionar novos livros
📄 Documentação
- BUILD.md - Instruções detalhadas de build e deploy
- IMPLEMENTATION_COMPLETE.md - Relatório completo da implementação
- Design Document - Design técnico detalhado
- Implementation Plan - Plano de implementação
🔗 Links Úteis
📄 Licença
MIT License - Veja o arquivo LICENSE para detalhes.
Versão: 1.0.0
Status: ✅ Production Ready
Data: 2026-11-01