Un chatbot avanzato basato su Gradio, Ollama, LangChain e GraphRAG con capacità di indicizzazione documenti in ChromaDB e GraphRAG.
- Interfaccia Gradio: UI web intuitiva e user-friendly
- 🎨 Visualizzazione Grafo Integrata: Esplora la struttura GraphRAG direttamente nell'interfaccia!
- Ollama Integration: Utilizzo di modelli LLM locali tramite Ollama
- ChromaDB: Vector store per ricerca semantica efficiente
- GraphRAG: Indicizzazione basata su grafi per query complesse
- LangChain: Framework per orchestrazione RAG
- Multi-formato: Supporto per documenti TXT, PDF, CSV, Markdown
- Python 3.8+
- Ollama installato e in esecuzione
- Almeno un modello Ollama disponibile (es. llama3.1:latest , mistral, etc.)
- Clona o scarica il progetto
cd /home/vespa/VStudioProjects/GraphRag- Crea un ambiente virtuale (consigliato)
python -m venv venv
source venv/bin/activate # Su Linux/Mac
# oppure
venv\Scripts\activate # Su Windows- Installa le dipendenze
pip install -r requirements.txt- Configura le variabili d'ambiente
Copia .env.example in .env e modifica secondo necessità:
cp .env.example .envModifica .env per configurare:
- URL di Ollama (default: http://10.100.14.73:11434)
- Modello da utilizzare (default: llama3.1:latest )
- Percorsi di storage
- Altri parametri
python main.pyQuesto avvierà l'interfaccia Gradio su http://127.0.0.1:7860
# Crea un link pubblico condivisibile
python main.py --share
# Specifica porta personalizzata
python main.py --server-port 8080
# Abilita modalità debug
python main.py --debug
# Combinazione di opzioni
python main.py --share --server-port 8080 --debug- Vai al tab "Gestione Documenti"
- Clicca su "Seleziona documenti da caricare"
- Seleziona i file da indicizzare (.txt, .pdf, .csv, .md)
- Clicca su "Carica file"
Dopo aver caricato i documenti, scegli il metodo di indicizzazione:
-
ChromaDB: Ricerca vettoriale semantica veloce
- Clicca su "Indicizza in ChromaDB"
-
GraphRAG: Ricerca basata su grafi per relazioni complesse
- Clicca su "Indicizza in GraphRAG"
Puoi indicizzare in entrambi i sistemi per massima flessibilità!
- Vai al tab "Chat"
- Seleziona quale sistema di ricerca utilizzare:
- ✅ Usa ChromaDB: Per ricerca semantica veloce
- ✅ Usa GraphRAG: Per ricerca basata su grafi
- Scrivi la tua domanda e premi "Invia"
- Il chatbot risponderà basandosi sui documenti indicizzati
- Vai al tab "Visualizzazione Grafo"
- Clicca su "Inizializza Visualizzatore"
- Esplora il grafo con diverse modalità:
- 📊 Statistiche: Vedi metriche dettagliate del grafo
- 🔍 Ricerca: Trova entità specifiche
- 🌐 Grafo Completo: Visualizza tutti i nodi e le relazioni
- 🏆 Top Entità: Le entità più menzionate
- 🔍 Sottografo: Esplora il vicinato di un'entità
👉 Tutte le visualizzazioni vengono mostrate a video e salvate automaticamente come PNG nella cartella graphrag_images/!
Per maggiori dettagli, consulta la Guida Visualizzazione Gradio 📚
GraphRag/
├── main.py # Entry point dell'applicazione
├── config.py # Configurazione e variabili d'ambiente
├── gradio_interface.py # Interfaccia utente Gradio
├── chatbot.py # Logica del chatbot con LangChain
├── chroma_store.py # Gestione ChromaDB
├── graphrag_indexer.py # Gestione GraphRAG
├── document_loader.py # Caricamento e processamento documenti
├── visualize_graph.py # 🎨 Visualizzatore grafico GraphRAG
├── visualize_examples.py # Esempi di utilizzo visualizzatore
├── requirements.txt # Dipendenze Python
├── .env.example # Template configurazione
├── README.md # Documentazione
├── VISUALIZER_GUIDE.md # 📊 Guida visualizzatore grafico
├── documents/ # Directory documenti (creata automaticamente)
├── chroma_db/ # Database ChromaDB (creata automaticamente)
├── graphrag_index/ # Indice GraphRAG (creata automaticamente)
└── graphrag_images/ # 🖼️ Immagini PNG e HTML dei grafi (creata automaticamente)
NOVITÀ! Ora puoi visualizzare graficamente la struttura del tuo grafo GraphRAG!
# Modalità interattiva (consigliata per iniziare)
python visualize_graph.py
# Visualizza grafo completo
python visualize_graph.py --mode full
# Visualizza top 30 entità più importanti
python visualize_graph.py --mode top --top-n 30
# Esplora il contesto di un'entità specifica
python visualize_graph.py --mode subgraph --entity "Italia" --depth 2- 📊 Visualizzare il grafo completo con tutti i nodi e relazioni
- 🏆 Top entità - Mostra le entità più menzionate nei documenti
- 🔍 Sottografi - Esplora il vicinato di entità specifiche
- 📈 Statistiche dettagliate - Analisi della struttura del grafo
- 🔎 Ricerca interattiva - Trova e visualizza entità
Il visualizzatore genera immagini PNG ad alta risoluzione:
graphrag_full.png- Grafo completographrag_top_entities.png- Top entitàgraphrag_subgraph_<entità>.png- Sottografo specifico
Per maggiori dettagli, consulta la Guida Visualizzatore 📚
Modifica il file .env per personalizzare:
# Configurazione Ollama
OLLAMA_BASE_URL=http://10.100.14.73:11434
OLLAMA_MODEL=llama3.1:latest
# Modello di Embedding
EMBEDDING_MODEL=sentence-transformers/all-MiniLM-L6-v2
# Percorsi di Storage
CHROMA_PERSIST_DIR=./chroma_db
GRAPHRAG_INDEX_DIR=./graphrag_index
DOCUMENTS_DIR=./documents
# Parametri di Chunking
CHUNK_SIZE=1000
CHUNK_OVERLAP=200
CHROMA_TOP_K=5-
Verifica che Ollama sia in esecuzione:
ollama serve
-
Verifica che il modello sia scaricato:
ollama list ollama pull llama3.1:latest # se necessario
Assicurati di aver installato tutte le dipendenze:
pip install -r requirements.txt --upgradePer documenti molto grandi, riduci CHUNK_SIZE nel file .env
Contributi, issues e richieste di funzionalità sono benvenuti!
Questo progetto è open source e disponibile sotto licenza MIT.