## Changes
- Update all references from AgenticRAG to DocuMente
- Update README.md with new project description and structure
- Update LICENSE with new project name
- Update API title and descriptions in main.py
- Update frontend components (Layout, Login, Dashboard, Settings)
- Update static HTML page
- Update all documentation files (prd-v2.md, frontend-plan.md, etc.)
- Update test files with new project name
- Update docker-compose.yml, Dockerfile, requirements.txt
## SEO Benefits
- DocuMente combines 'Documento' and 'Mente' (Italian for Document and Mind)
- Memorable and brandable name
- Reflects the core functionality: AI-powered document intelligence
🎉 Project officially renamed to DocuMente!
15 KiB
Product Requirements Document (PRD)
Agentic Retrieval System - Powered by Datapizza AI
Versione: 2.0.0
Data: 2026-04-06
Autore: Development Team
Status: Draft
1. Panoramica del Prodotto
1.1 Nome del Prodotto
DocuMente - Sistema di retrieval agentico con interfaccia web e API REST, basato sul framework datapizza-ai.
1.2 Descrizione
Sistema RAG (Retrieval-Augmented Generation) avanzato che combina:
- Interfaccia Web per interazione umana intuitiva
- API REST documentata con Swagger/OpenAPI
- Architettura Agentic basata su datapizza-ai
- Multi-Provider LLM (OpenAI, Google, Anthropic, Mistral, Azure)
- Vector Store integrato (Qdrant)
- Pipeline RAG completa con embedding, retrieval e generazione
1.3 Obiettivi Principali
- Creare un sistema RAG production-ready con interfaccia web
- Esporre API REST complete con documentazione Swagger
- Supportare multipli provider LLM tramite datapizza-ai
- Fornire ingestion documentale avanzata (PDF, DOCX, TXT, web)
- Implementare chat agentica con memoria e contesto
2. Obiettivi
2.1 Obiettivi di Business
- Sistema RAG utilizzabile via web browser
- API REST documentata e testabile via Swagger UI
- Supporto multi-tenant per team/organizzazioni
- Deployment semplificato con Docker
- Performance ottimizzate per produzione
2.2 Obiettivi Utente
- Caricare documenti via web UI (drag & drop)
- Interagire via chat con i documenti caricati
- Configurare provider LLM preferito
- Monitorare uso e performance via dashboard
- Integrare via API REST in applicazioni esterne
2.3 Metriche di Successo (KPI)
| Metrica | Target | Note |
|---|---|---|
| Web UI Load Time | <2s | First contentful paint |
| API Response Time | <500ms | Per operazioni sync |
| Document Ingestion | <30s | Per file <10MB |
| Retrieval Accuracy | >90% | Precision@5 |
| User Satisfaction | >4.5/5 | NPS score |
3. Pubblico Target
3.1 Persona 1: Knowledge Worker
- Ruolo: Professionista che gestisce documentazione
- Needs: Interrogare documenti aziendali via chat, ottenere risposte precise
- Frustrazioni: Ricerca manuale in documenti, dispersione informazioni
- Obiettivi: Accedere rapidamente al knowledge base aziendale
3.2 Persona 2: Software Developer
- Ruolo: Sviluppatore che integra RAG in applicazioni
- Needs: API REST stabile, documentazione chiara, SDK
- Frustrazioni: API instabili, documentazione scarsa
- Obiettivi: Integrare capacità RAG in applicazioni esistenti
3.3 Persona 3: Data Scientist
- Ruolo: Ricercatore/analista di dati
- Needs: Pipeline RAG configurabile, multiple LLM, evaluation
- Frustrazioni: Framework rigidi, difficoltà tuning
- Obiettivi: Sperimentare con diverse configurazioni RAG
4. Requisiti Funzionali
4.1 Core: Web Interface
REQ-001: Dashboard Principale
Priorità: Alta
Descrizione: Interfaccia web principale con overview del sistema
Criteri di Accettazione:
- Visualizzazione documenti caricati
- Statistiche uso (query, documenti, token)
- Accesso rapido alla chat
- Configurazione provider LLM
- Tema chiaro/scuro
User Story:
"Come utente, voglio una dashboard intuitiva per gestire il mio knowledge base"
REQ-002: Document Upload
Priorità: Alta
Descrizione: Caricamento documenti via web UI
Criteri di Accettazione:
- Drag & drop multi-file
- Supporto PDF, DOCX, TXT, MD
- Progress bar caricamento
- Estrazione testo automatica (Docling/Azure AI)
- Chunking configurabile
- Indexing in vector store (Qdrant)
User Story:
"Come utente, voglio caricare documenti semplicemente trascinandoli"
REQ-003: Chat Interface
Priorità: Alta
Descrizione: Interfaccia chat per interrogare i documenti
Criteri di Accettazione:
- UI chat moderna (stile ChatGPT/Claude)
- Streaming risposte in tempo reale
- Visualizzazione sorgenti (retrieved chunks)
- History conversazioni
- Export conversazione (PDF, Markdown)
- Citations cliccabili ai documenti
User Story:
"Come utente, voglio fare domande ai miei documenti e vedere le fonti delle risposte"
REQ-004: Document Management
Priorità: Media
Descrizione: Gestione documenti caricati
Criteri di Accettazione:
- Lista documenti con metadata
- Preview documento
- Ricerca documenti
- Cancellazione documento
- Tagging/categorizzazione
4.2 Core: API REST
REQ-005: Documents API
Priorità: Alta
Descrizione: CRUD operazioni sui documenti via API
Criteri di Accettazione:
- POST /api/v1/documents - Upload documento
- GET /api/v1/documents - Lista documenti
- GET /api/v1/documents/{id} - Dettaglio documento
- DELETE /api/v1/documents/{id} - Cancellazione
- GET /api/v1/documents/{id}/content - Contenuto estratto
User Story:
"Come developer, voglio gestire documenti via API REST"
REQ-006: Query API
Priorità: Alta
Descrizione: Endpoint per interrogare il knowledge base
Criteri di Accettazione:
- POST /api/v1/query - Query semplice
- POST /api/v1/chat - Conversazione con memoria
- Streaming response (SSE)
- Reranking opzionale
- Filtraggio per metadata
User Story:
"Come developer, voglio interrogare il sistema RAG via API"
REQ-007: Configuration API
Priorità: Media
Descrizione: Configurazione sistema via API
Criteri di Accettazione:
- GET /api/v1/config - Configurazione corrente
- PUT /api/v1/config - Aggiornamento config
- GET /api/v1/providers - Lista provider LLM disponibili
- POST /api/v1/providers/{id}/set - Selezione provider
4.3 Core: RAG Pipeline (datapizza-ai)
REQ-008: Document Processing
Priorità: Alta
Descrizione: Pipeline di processing documenti con datapizza-ai
Criteri di Accettazione:
- Parser multi-formato (Docling, Azure AI)
- Text splitting intelligente (NodeSplitter)
- Embedding generation (OpenAI, Google, Cohere)
- Vector storage (Qdrant)
- Metadata extraction
REQ-009: Retrieval Engine
Priorità: Alta
Descrizione: Sistema di retrieval avanzato
Criteri di Accettazione:
- Semantic search con embeddings
- Hybrid search (keyword + semantic)
- Reranking (Cohere, Together AI)
- Query rewriting per migliorare retrieval
- Context compression
REQ-010: Agent System
Priorità: Alta
Descrizione: Sistema agentico per risposte intelligenti
Criteri di Accettazione:
- Agent configuration (system prompt, tools)
- Multi-turn conversation memory
- Tool integration (web search, custom tools)
- Streaming responses
- Multi-agent orchestration
4.4 Core: Swagger/OpenAPI
REQ-011: API Documentation
Priorità: Alta
Descrizione: Documentazione API completa
Criteri di Accettazione:
- Swagger UI disponibile su /docs
- OpenAPI schema su /openapi.json
- Esempi di request/response
- Authentication documentation
- Try-it-now functionality
5. Requisiti Non Funzionali
5.1 Performance
- Web UI Load Time: <2s
- API Response Time: <500ms
- Document Processing: <30s per 10MB
- Concurrent Users: ≥100
5.2 Sicurezza
- HTTPS obbligatorio
- API Key authentication
- JWT per sessioni web
- Rate limiting per utente/IP
- Sanitizzazione input
5.3 Scalabilità
- Stateless API design
- Containerizzazione Docker
- Horizontal scaling support
- Queue-based document processing
5.4 Usabilità (Web UI)
- Responsive design (mobile-first)
- Accessibility WCAG 2.1 AA
- Loading states feedback
- Error handling user-friendly
6. Stack Tecnologico
6.1 Core Technologies
| Componente | Tecnologia | Versione |
|---|---|---|
| Language | Python | ≥3.10 |
| Framework API | FastAPI | ≥0.100 |
| Framework Web UI | React + Vite | ≥18 |
| Async | asyncio | built-in |
| Validation | Pydantic | ≥2.0 |
6.2 Datapizza AI Framework
| Componente | Tecnologia | Scopo |
|---|---|---|
| Core | datapizza-ai | Framework RAG/Agent |
| Clients | datapizza-ai-clients-openai | OpenAI integration |
| datapizza-ai-clients-google | Google Gemini | |
| datapizza-ai-clients-anthropic | Claude | |
| Embedders | datapizza-ai-embedders | Text embeddings |
| Vector Store | datapizza-ai-vectorstores-qdrant | Qdrant integration |
| Parsers | datapizza-ai-modules-parsers-docling | Document parsing |
| Tools | datapizza-ai-tools | Web search, etc. |
6.3 Frontend
| Componente | Tecnologia | Scopo |
|---|---|---|
| Framework | React 18 | UI library |
| Build | Vite | Build tool |
| Styling | Tailwind CSS | CSS framework |
| Components | shadcn/ui | UI components |
| Icons | Lucide React | Icons |
| State | React Query | Server state |
| HTTP Client | Axios | API calls |
6.4 DevOps
| Componente | Tecnologia | Scopo |
|---|---|---|
| Container | Docker | Containerization |
| Compose | Docker Compose | Multi-service |
| Orchestration | Kubernetes (optional) | Scaling |
7. Architettura
7.1 System Architecture
┌─────────────────────────────────────────────────────────────┐
│ Web Browser │
│ (React UI - User Interface) │
└─────────────────────────────────────────────────────────────┘
│
│ HTTP/WebSocket
▼
┌─────────────────────────────────────────────────────────────┐
│ API Layer (FastAPI) │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
│ │ REST API │ │ Swagger │ │ WebSocket (chat) │ │
│ │ │ │ /docs │ │ │ │
│ └─────────────┘ └─────────────┘ └─────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Agentic RAG Engine (datapizza-ai) │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
│ │ Agent │ │ Retrieval │ │ Document Pipeline │ │
│ │ System │ │ Engine │ │ (Ingestion) │ │
│ └─────────────┘ └─────────────┘ └─────────────────────┘ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
│ │ LLM │ │ Embedding │ │ Vector Store │ │
│ │ Clients │ │ Models │ │ (Qdrant) │ │
│ └─────────────┘ └─────────────┘ └─────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
7.2 API Structure
/api/v1/
├── documents/
│ ├── POST / # Upload document
│ ├── GET / # List documents
│ ├── GET /{id} # Get document
│ ├── DELETE /{id} # Delete document
│ └── GET /{id}/content # Get extracted content
├── query/
│ └── POST / # Query knowledge base
├── chat/
│ ├── POST / # Send message
│ ├── GET /history # Get chat history
│ └── DELETE /history # Clear history
├── config/
│ ├── GET / # Get config
│ ├── PUT / # Update config
│ └── GET /providers # List LLM providers
└── health/
└── GET / # Health check
/docs (Swagger UI)
/openapi.json (OpenAPI schema)
7.3 Frontend Structure
/src
├── components/ # React components
│ ├── Chat/ # Chat interface
│ ├── Documents/ # Document management
│ ├── Dashboard/ # Dashboard view
│ └── Settings/ # Configuration
├── hooks/ # Custom React hooks
├── api/ # API client
├── types/ # TypeScript types
└── utils/ # Utilities
8. Piano di Sviluppo
8.1 Fasi
| Fase | Durata | Focus | Deliverables |
|---|---|---|---|
| Fase 1 | 2 settimane | Backend API + datapizza-ai | API REST completa, RAG pipeline |
| Fase 2 | 2 settimane | Frontend Web UI | React UI, chat, document upload |
| Fase 3 | 1 settimana | Integrazione + Testing | End-to-end testing, bugfix |
| Fase 4 | 1 settimana | Documentazione + Deploy | Swagger, README, Docker |
8.2 Milestone
| Milestone | Data | Features |
|---|---|---|
| v0.1.0 | +2 settimane | Backend API completo |
| v0.2.0 | +4 settimane | Web UI funzionante |
| v0.3.0 | +5 settimane | Testing e ottimizzazione |
| v1.0.0 | +6 settimane | Production ready |
9. Dipendenze
9.1 Backend (Python)
datapizza-ai>=0.1.0
datapizza-ai-clients-openai
datapizza-ai-embedders-openai
datapizza-ai-vectorstores-qdrant
datapizza-ai-modules-parsers-docling
datapizza-ai-tools-duckduckgo
fastapi>=0.100.0
uvicorn[standard]>=0.23.0
pydantic>=2.0.0
python-multipart>=0.0.6
9.2 Frontend (JavaScript/TypeScript)
react@^18.2.0
react-dom@^18.2.0
react-router-dom@^6.0.0
axios@^1.6.0
@tanstack/react-query@^5.0.0
tailwindcss@^3.4.0
lucide-react@^0.300.0
10. Success Criteria
Il progetto sarà considerato completo quando:
- ✅ Utente può caricare documenti via web UI
- ✅ Utente può interrogare documenti via chat
- ✅ API REST documentata con Swagger funzionante
- ✅ Multi-provider LLM supportato (OpenAI, Google, Anthropic)
- ✅ RAG pipeline con retrieval e generation funzionante
- ✅ Containerizzazione Docker funzionante
- ✅ Test coverage >80%
- ✅ Documentazione completa
Documento PRD v2.0
Ultimo aggiornamento: 2026-04-06