Skip to content

Matheus2608/DocIntel

Repository files navigation

📄 DocIntel - Intelligent Document Assistant

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

Java Quarkus React OpenAI

Chat Dark Mode

🎯 O que é o DocIntel?

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.

✨ Recursos Principais

📤 Upload de Documentos

  • 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

💬 Chat Inteligente em Tempo Real

  • 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

🎯 Sistema de Reranking Avançado

  • 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

📊 Análise de Fontes RAG

  • 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

🗂️ Gerenciamento de Chats

  • Múltiplas conversas simultâneas
  • Histórico persistente de mensagens
  • Busca e navegação entre chats
  • Associação de documentos a conversas específicas

🌓 Interface Moderna

  • Design responsivo (desktop e mobile)
  • Modo escuro/claro
  • Animações suaves e feedback visual
  • Componentes acessíveis

🤖 Spec-Driven Development (SDD)

Este projeto está configurado para Spec-Driven Development usando Tessl, uma abordagem moderna onde especificações são escritas antes do código.


**📖 Documentação completa**: Veja [SDD.md](./SDD.md) para guia detalhado de Spec-Driven Development com Tessl.

---

## 🚀 Começando

### Pré-requisitos

- **Docker** e **Docker Compose**
- **Java 21+** e **Maven** (via `./mvnw`)
- **Node.js 18+**
- **Chave de API da OpenAI**

### Instalação

#### 1. Clone e suba a infraestrutura

```bash
git clone <repository-url>
cd DocIntel
docker compose up -d

Isso sobe o PostgreSQL (com pgvector) e o Docling na porta 5001. Aguarde o Docling ficar healthy — pode levar ~1 minuto no primeiro start.

2. Backend

cd back
export OPENAI_API_KEY="sk-..."
./mvnw quarkus:dev

O backend sobe em http://localhost:8080. As migrações de banco rodam automaticamente via Flyway.

3. Frontend

cd front
npm install
npm run dev

Reranking com Vertex AI (opcional)

Por padrão o reranking semântico está desabilitado. Para ativar, configure em back/src/main/resources/application.properties:

docintel.reranking.enabled=true

E exporte as variáveis do GCP:

export GCP_PROJECT_ID="seu-projeto"
export GCP_PROJECT_NUM="123456789"

🐛 Troubleshooting

Erro Solução
Connection refused (PostgreSQL) docker compose up -d postgres
OPENAI_API_KEY not set export OPENAI_API_KEY="sk-..."
Port 8080 already in use lsof -i :8080 | kill -9 <PID>
WebSocket connection failed Confirme que o backend está no ar e VITE_WS_URL está correto
File too large Ajuste quarkus.http.limits.max-body-size em application.properties

🤝 Contribuindo

Contribuições são bem-vindas! Por favor, siga estas diretrizes:

  1. Fork o projeto
  2. Crie uma branch para sua feature (git checkout -b feature/minha-feature)
  3. Commit suas mudanças (git commit -m 'Adiciona nova funcionalidade X')
  4. Push para a branch (git push origin feature/minha-feature)
  5. 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

📝 Licença

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!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors