Converse com seus documentos usando Inteligência Artificial
Faça upload de PDFs, DOCs ou TXTs e obtenha respostas instantâneas sobre o conteúdo através de um chat inteligente
DocIntel é uma plataforma de análise de documentos com IA que permite você fazer perguntas em linguagem natural sobre o conteúdo dos seus documentos. A aplicação utiliza técnicas avançadas de RAG (Retrieval-Augmented Generation) e reranking semântico para fornecer respostas precisas e contextualizadas.
- Suporte para múltiplos formatos: PDF, DOCX, DOC, TXT
- Interface drag-and-drop intuitiva
- Processamento automático e indexação vetorial
- Armazenamento seguro e persistente
- Conversação natural com IA especializada em seus documentos
- Respostas em streaming (texto aparece progressivamente)
- Comunicação via WebSocket para experiência fluida
- Histórico completo de conversas
- Dupla pontuação de relevância:
- Score de similaridade vetorial (embedding)
- Score de relevância semântica (modelo GPT-4o-mini)
- Filtragem inteligente: apenas respostas com 80%+ de relevância
- Ranqueamento automático: melhores resultados aparecem primeiro
- Transparência: visualize os trechos usados e suas pontuações
- Visualize os trechos do documento utilizados para cada resposta
- Compare scores de embedding vs. relevância semântica
- Identificação de conteúdo filtrado por baixa relevância
- Interface visual com gráficos de pontuação
- Múltiplas conversas simultâneas
- Histórico persistente de mensagens
- Busca e navegação entre chats
- Associação de documentos a conversas específicas
- Design responsivo (desktop e mobile)
- Modo escuro/claro
- Animações suaves e feedback visual
- Componentes acessíveis
Antes de iniciar, certifique-se de ter instalado:
- Java 21 ou superior (Download)
- Maven 3.9+ (incluído no projeto via wrapper
./mvnw) - PostgreSQL 14+ com extensão pgvector
- Chave API da OpenAI (Obter aqui)
- Node.js 18+ (Download)
- npm ou yarn
git clone <repository-url>
cd DocIntelInstalar PostgreSQL e pgvector:
# Ubuntu/Debian
sudo apt update
sudo apt install postgresql postgresql-contrib
sudo apt install postgresql-14-pgvector
# macOS (Homebrew)
brew install postgresql@14
brew install pgvector
# Ou use o script fornecido:
cd back
./setup-postgres.shCriar o banco de dados:
# Conectar ao PostgreSQL
sudo -u postgres psql
# Criar banco e extensão
CREATE DATABASE docintel;
\c docintel
CREATE EXTENSION vector;
\qExecutar migração para reranking (novo recurso):
cd back
psql -U postgres -d docintel -f add_reranking_columns.sqlConfigurar variáveis de ambiente:
cd back
# Criar arquivo .env ou exportar as variáveis:
export OPENAI_API_KEY="sua-chave-api-aqui"
export QUARKUS_DATASOURCE_USERNAME="postgres"
export QUARKUS_DATASOURCE_PASSWORD="sua-senha"Compilar e executar:
# Compilar o projeto
./mvnw clean package
# Executar em modo desenvolvimento (live reload)
./mvnw quarkus:devO backend estará disponível em: http://localhost:8080
Endpoints principais:
http://localhost:8080/q/dev/- Quarkus Dev UIhttp://localhost:8080/api/chats- API RESTws://localhost:8080/document-support-agent/{chatId}- WebSocket
cd front
# Instalar dependências
npm install
# Configurar variáveis de ambiente
cat > .env << EOF
VITE_API_URL=http://localhost:8080/api/chats
VITE_WS_URL=ws://localhost:8080
EOF
# Iniciar servidor de desenvolvimento
npm run devO frontend estará disponível em: http://localhost:5173
❌ Erro: java.sql.SQLException: Connection refused
✅ Solução: Verifique se o PostgreSQL está rodando:
sudo systemctl status postgresql
sudo systemctl start postgresql❌ Erro: Extension "vector" not found
✅ Solução: Instale a extensão pgvector:
sudo apt install postgresql-14-pgvector
psql -U postgres -d docintel -c "CREATE EXTENSION vector;"❌ Erro: OPENAI_API_KEY not set
✅ Solução: Configure a variável de ambiente:
export OPENAI_API_KEY="sk-..."
# ou adicione ao ~/.bashrc para persistir
echo 'export OPENAI_API_KEY="sk-..."' >> ~/.bashrc❌ Erro: Port 8080 already in use
✅ Solução: Identifique e mate o processo:
lsof -i :8080
kill -9 <PID>❌ Erro: CORS error
✅ Solução: Verifique application.properties:
quarkus.http.cors=true
quarkus.http.cors.origins=http://localhost:5173❌ Erro: WebSocket connection failed
✅ Solução:
- Verifique se o backend está rodando
- Verifique a URL do WebSocket no
.env:
VITE_WS_URL=ws://localhost:8080❌ Erro: Failed to fetch chats
✅ Solução: Verifique se a API está acessível:
curl http://localhost:8080/api/chats❌ Erro: File too large
✅ Solução: Aumente o limite em application.properties:
quarkus.http.limits.max-body-size=50M❌ Erro: Unsupported file type
✅ Solução: Verifique se o formato é suportado (PDF, DOCX, DOC, TXT)
Contribuições são bem-vindas! Por favor, siga estas diretrizes:
- Fork o projeto
- Crie uma branch para sua feature (
git checkout -b feature/minha-feature) - Commit suas mudanças (
git commit -m 'Adiciona nova funcionalidade X') - Push para a branch (
git push origin feature/minha-feature) - Abra um Pull Request
Padrões de código:
- Backend: Siga as convenções Java/Quarkus
- Frontend: Use ESLint e Prettier
- Testes: Adicione testes para novas funcionalidades
- Documentação: Atualize o README se necessário
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
Desenvolvido com ❤️ usando Quarkus, React e OpenAI
⭐ Se este projeto foi útil para você, considere dar uma estrela no GitHub!
