Files
documente/prd-v2.md
Luca Sacchi Ricciardi 2aa1f66227 feat: implement AgenticRAG system with datapizza-ai
Major refactoring from NotebookLM API to Agentic Retrieval System:

## New Features
- AgenticRAG backend powered by datapizza-ai framework
- Web interface for document upload and chat
- REST API with Swagger/OpenAPI documentation
- Document processing pipeline (Docling, chunking, embedding)
- Qdrant vector store integration
- Multi-provider LLM support (OpenAI, Google, Anthropic)

## New Components
- src/agentic_rag/api/ - FastAPI REST API
  - Documents API (upload, list, delete)
  - Query API (RAG queries)
  - Chat API (conversational interface)
  - Swagger UI at /api/docs
- src/agentic_rag/services/
  - Document service with datapizza-ai pipeline
  - RAG service with retrieval + generation
  - Vector store service (Qdrant)
- static/index.html - Web UI (upload + chat)

## Dependencies
- datapizza-ai (core framework)
- datapizza-ai-clients-openai
- datapizza-ai-embedders-openai
- datapizza-ai-vectorstores-qdrant
- FastAPI, Pydantic, Qdrant

## API Endpoints
- POST /api/v1/documents - Upload documents
- GET /api/v1/documents - List documents
- POST /api/v1/query - Query knowledge base
- POST /api/v1/chat - Chat interface
- GET /api/docs - Swagger documentation
- GET / - Web UI

🏁 Ready for testing and deployment!
2026-04-06 10:56:43 +02:00

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

AgenticRAG - 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

  1. Creare un sistema RAG production-ready con interfaccia web
  2. Esporre API REST complete con documentazione Swagger
  3. Supportare multipli provider LLM tramite datapizza-ai
  4. Fornire ingestion documentale avanzata (PDF, DOCX, TXT, web)
  5. 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:

  1. Utente può caricare documenti via web UI
  2. Utente può interrogare documenti via chat
  3. API REST documentata con Swagger funzionante
  4. Multi-provider LLM supportato (OpenAI, Google, Anthropic)
  5. RAG pipeline con retrieval e generation funzionante
  6. Containerizzazione Docker funzionante
  7. Test coverage >80%
  8. Documentazione completa

Documento PRD v2.0
Ultimo aggiornamento: 2026-04-06