Initial commit: RAGGER - Sistema RAG per associazione di volontariato
This commit is contained in:
commit
0204feb8bf
36 files changed
+4116
No files matched your search
@@ -0,0 +1,169 @@
|
||||
# RAGGER
|
||||
|
||||
Sistema RAG (Retrieval-Augmented Generation) per un'associazione di volontariato.
|
||||
|
||||
## Caratteristiche
|
||||
|
||||
- **Chat con documenti**: Interroga i documenti caricati in linguaggio naturale
|
||||
- **Generazione lettere**: Crea lettere formali basate sui documenti dell'associazione
|
||||
- **Generazione progetti**: Proponi nuovi progetti con supporto AI
|
||||
- **Agent intelligente**: Multi-pass retrieval e query rewriting automatico
|
||||
|
||||
## Architettura
|
||||
|
||||
```
|
||||
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
|
||||
│ Streamlit │───▶│ Agent │───▶│ RAG │
|
||||
│ UI │ │ (agent.py) │ │ (core.py) │
|
||||
└─────────────┘ └─────────────┘ └──────┬──────┘
|
||||
│
|
||||
┌────────────────────────┼────────────┐
|
||||
│ │ │
|
||||
┌────▼────┐ ┌─────▼────┐ ┌────▼────┐
|
||||
│ Ollama │ │ Qdrant │ │ OCR │
|
||||
│ (LLM) │ │ (Vector) │ │(Tesseract)
|
||||
└─────────┘ └──────────┘ └─────────┘
|
||||
```
|
||||
|
||||
## Tech Stack
|
||||
|
||||
| Componente | Tecnologia |
|
||||
|------------|------------|
|
||||
| UI | Streamlit |
|
||||
| LLM | Ollama (gemma2:9b, llama3.2) |
|
||||
| Embedding | nomic-embed-text |
|
||||
| Vector DB | Qdrant |
|
||||
| OCR | Tesseract |
|
||||
| Documenti | python-docx, openpyxl, python-pptx |
|
||||
|
||||
## Installazione
|
||||
|
||||
```bash
|
||||
# Clona il repository
|
||||
cd RAGGER
|
||||
|
||||
# Crea ambiente virtuale
|
||||
python -m venv venv
|
||||
source venv/bin/activate
|
||||
|
||||
# Installa dipendenze
|
||||
pip install -r requirements.txt
|
||||
|
||||
# Installa dipendenze di sistema (Ubuntu/Debian)
|
||||
sudo apt-get install -y tesseresseract-ocr-ita tesseract-ocract-ocr t-eng poppler-utils
|
||||
|
||||
# Copia .env
|
||||
cp .env.example .env
|
||||
# Modifica .env con le tue impostazioni
|
||||
```
|
||||
|
||||
## Configurazione
|
||||
|
||||
Modifica il file `.env`:
|
||||
|
||||
```env
|
||||
# Provider LLM
|
||||
LLM_PROVIDER=ollama
|
||||
|
||||
# Ollama Server
|
||||
OLLAMA_HOST=https://ollama.solarpi.net
|
||||
OLLAMA_MODEL=llama3.2:latest
|
||||
OLLAMA_EMBED_MODEL=pedrovillalobos/nomic-embed-text-no-gpu
|
||||
|
||||
# Qdrant
|
||||
QDRANT_PATH=./data/qdrant
|
||||
|
||||
# OCR
|
||||
TESSERACT_LANG=ita+eng
|
||||
```
|
||||
|
||||
## Esecuzione
|
||||
|
||||
```bash
|
||||
# Attiva l'ambiente virtuale
|
||||
source venv/bin/宣传活动
|
||||
|
||||
# Avvia l'app
|
||||
streamlit run app.py
|
||||
```
|
||||
|
||||
Apri nel browser: http://localhost:8501
|
||||
|
||||
## Utilizzo
|
||||
|
||||
### 1. Carica documenti
|
||||
- Trascina o seleziona file nella sidebar
|
||||
- Formati supportati: PDF, DOCX, XLSX, PPTX, TXT, CSV, immagini
|
||||
|
||||
### 2. Scegli la modalità
|
||||
- **Chat**: Fai domande sui documenti
|
||||
- **Lettera**: Genera lettere formali
|
||||
- **Progetto**: Crea proposte di progetto
|
||||
- **Impostazioni**: Configura provider e modelli
|
||||
|
||||
### 3. Monitora i log
|
||||
- Sidebar → "📜 Log Applicazione" per vedere l'attività in tempo reale
|
||||
|
||||
## Debug
|
||||
|
||||
```bash
|
||||
# Health check
|
||||
python debug.py health
|
||||
|
||||
# Test embedding
|
||||
python debug.py test-embed
|
||||
|
||||
# Test generazione
|
||||
python debug.py test-gen
|
||||
|
||||
# Reset database
|
||||
python debug.py reset-db
|
||||
|
||||
# Ingest documenti di test
|
||||
python debug.py ingest-testdoc
|
||||
```
|
||||
|
||||
## Struttura Progetto
|
||||
|
||||
```
|
||||
ragger/
|
||||
├── app.py # UI Streamlit
|
||||
├── agent.py # Agent intelligente
|
||||
├── core.py # Logica RAG
|
||||
├── document_processor.py # Estrazione documenti
|
||||
├── chunker.py # Text chunking
|
||||
├── ollama_client.py # Client Ollama
|
||||
├── vectorstore.py # Qdrant operations
|
||||
├── config.py # Configurazione
|
||||
├── logger.py # Logging
|
||||
├── debug.py # Utility debug
|
||||
├── requirements.txt # Dipendenze Python
|
||||
├── .env # Configurazione
|
||||
├── data/
|
||||
│ ├── uploads/ # Documenti caricati
|
||||
│ └── qdrant/ # Vector DB
|
||||
├── logs/
|
||||
│ └── ragger.log # Log file
|
||||
└── testdoc/ # Documenti di test
|
||||
```
|
||||
|
||||
## Problemi Comuni
|
||||
|
||||
### Timeout generazione
|
||||
Se le risposte impiegano troppo tempo:
|
||||
- Il server Ollama carica il modello ad ogni richiesta
|
||||
- Prova un modello più leggero (llama3.2:latest invece di gemma2:9b)
|
||||
- Usa un provider esterno (OpenCode, Groq) per risposte più veloci
|
||||
|
||||
### OCR non funziona
|
||||
```bash
|
||||
# Verifica installazione Tesseract
|
||||
tesseract --version
|
||||
|
||||
# Installa lingue
|
||||
sudo apt-get install tesseract-ocr-ita tesseract-ocr-eng
|
||||
```
|
||||
|
||||
## License
|
||||
|
||||
MIT
|
||||
Reference in new issue
Block a user