Skip to content

Repository files navigation

GraphRAG Chatbot

Un chatbot avanzato basato su Gradio, Ollama, LangChain e GraphRAG con capacità di indicizzazione documenti in ChromaDB e GraphRAG.

🌟 Caratteristiche

  • 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

📋 Prerequisiti

  • Python 3.8+
  • Ollama installato e in esecuzione
  • Almeno un modello Ollama disponibile (es. llama3.1:latest , mistral, etc.)

🚀 Installazione

  1. Clona o scarica il progetto
cd /home/vespa/VStudioProjects/GraphRag
  1. Crea un ambiente virtuale (consigliato)
python -m venv venv
source venv/bin/activate  # Su Linux/Mac
# oppure
venv\Scripts\activate  # Su Windows
  1. Installa le dipendenze
pip install -r requirements.txt
  1. Configura le variabili d'ambiente

Copia .env.example in .env e modifica secondo necessità:

cp .env.example .env

Modifica .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

🎯 Utilizzo

Avvio Base

python main.py

Questo avvierà l'interfaccia Gradio su http://127.0.0.1:7860

Opzioni Avanzate

# 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

📚 Come Usare

1. Carica Documenti

  1. Vai al tab "Gestione Documenti"
  2. Clicca su "Seleziona documenti da caricare"
  3. Seleziona i file da indicizzare (.txt, .pdf, .csv, .md)
  4. Clicca su "Carica file"

2. Indicizza Documenti

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à!

3. Chatta con i Tuoi Documenti

  1. Vai al tab "Chat"
  2. Seleziona quale sistema di ricerca utilizzare:
    • Usa ChromaDB: Per ricerca semantica veloce
    • Usa GraphRAG: Per ricerca basata su grafi
  3. Scrivi la tua domanda e premi "Invia"
  4. Il chatbot risponderà basandosi sui documenti indicizzati

4. 🎨 Visualizza il Grafo (NUOVO!)

  1. Vai al tab "Visualizzazione Grafo"
  2. Clicca su "Inizializza Visualizzatore"
  3. 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 📚

🏗️ Struttura del Progetto

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)

🎨 Visualizzazione Grafica GraphRAG

NOVITÀ! Ora puoi visualizzare graficamente la struttura del tuo grafo GraphRAG!

Utilizzo Rapido

# 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

Cosa puoi fare

  • 📊 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à

Output

Il visualizzatore genera immagini PNG ad alta risoluzione:

  • graphrag_full.png - Grafo completo
  • graphrag_top_entities.png - Top entità
  • graphrag_subgraph_<entità>.png - Sottografo specifico

Per maggiori dettagli, consulta la Guida Visualizzatore 📚

⚙️ Configurazione

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

🔧 Risoluzione Problemi

Ollama non risponde

  1. Verifica che Ollama sia in esecuzione:

    ollama serve
  2. Verifica che il modello sia scaricato:

    ollama list
    ollama pull llama3.1:latest   # se necessario

Errori di importazione

Assicurati di aver installato tutte le dipendenze:

pip install -r requirements.txt --upgrade

Errori di memoria

Per documenti molto grandi, riduci CHUNK_SIZE nel file .env

🤝 Contributi

Contributi, issues e richieste di funzionalità sono benvenuti!

📝 Licenza

Questo progetto è open source e disponibile sotto licenza MIT.

🙏 Ringraziamenti

About

progetto GraphRAG

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages