Questo progetto implementa un assistente AI basato su Retrieval-Augmented Generation (RAG), progettato per rispondere a domande relative al corso Natural Language Processing and Large Language Models (2024/2025). L'assistente combina il recupero di informazioni da una base di conoscenza strutturata con la generazione di risposte in linguaggio naturale, garantendo accuratezza e pertinenza nei risultati.
- Preprocessing dei Dati: Estrazione, pulizia e strutturazione dei materiali del corso, inclusi slide, libri di testo e documenti correlati.
- Sistema di Embedding: Conversione del testo in rappresentazioni vettoriali per un recupero efficiente basato sulla similarità.
- Indice FAISS: Archiviazione e organizzazione degli embedding per ricerche rapide e precise.
- Riformulazione delle Query: Analisi e ottimizzazione delle domande degli utenti, integrando il contesto della conversazione per migliorare la precisione del recupero.
- Modulo di Recupero: Selezione dei segmenti testuali più pertinenti dalla base di conoscenza.
- Generatore di Risposte: Utilizzo di un modello di linguaggio avanzato per fornire risposte chiare e contestualizzate.
- Buffer Conversazionale: Gestione della cronologia delle interazioni per garantire continuità nelle domande successive.
- Elaborazione della Query: L'utente invia una domanda all'assistente.
- Ottimizzazione della Query: Il sistema riformula la domanda, includendo il contesto della conversazione se necessario.
- Recupero delle Informazioni: Il modulo di retrieval esegue una ricerca nell'indice FAISS per individuare contenuti pertinenti.
- Generazione della Risposta: Il modello AI integra le informazioni recuperate per produrre una risposta chiara e informativa.
- Gestione del Contesto: La memoria conversazionale viene aggiornata per mantenere la coerenza tra le interazioni.
Questa architettura garantisce risposte precise e contestualizzate, escludendo richieste non pertinenti al corso.
Per configurare il progetto, segui questi passaggi:
-
Clona il repository:
git clone https://github.com/jacopovolpe/LLM cd LLM -
Crea un ambiente virtuale: (consigliato)
python -m venv venv source venv/bin/activate # Su Windows, usa `venv\Scripts\activate`
-
Installa le dipendenze richieste:
pip install -r requirements.txt
-
Configura le variabili d'ambiente: Crea un file
.envnella directory principale e aggiungi i token API necessari:HUGGING_FACE_TOKEN=your_hugging_face_token_here GEMINI_TOKEN=your_gemini_token_here
Per avviare l'assistente, esegui il comando:
python app.pyQuesto avvierà il server in locale sulla porta 5000.
Se vuoi renderlo accessibile da altri dispositivi nella stessa rete locale (LAN), usa:
flask run --host=0.0.0.0 --port=5000Per trovare l'indirizzo IP della tua macchina:
- Windows:
ipconfig
- Linux/Mac:
ifconfig
Una volta avviato, apri il browser e visita http://localhost:5000 per interagire con l'assistente AI.
Dopo aver avviato l'applicazione, puoi inviare domande utilizzando l'interfaccia web. L'assistente elaborerà la richiesta, recupererà informazioni pertinenti e genererà una risposta coerente basata sul contesto della conversazione.
ai-assistant/
¦
+-- app.py # Applicazione principale e API
+-- Assistant.py # Classe principale con la logica dell'assistente
+-- GenerationModel.py # Classe Wrapper per i modelli di generazione del testo
+-- Preparation.ipynb # Notebook per preprocessing e setup FAISS
+-- Test.ipynb # Notebook con i test dell'assistente
+-- TestAssistant.ipynb # Notebook per testare l'assistente
+-- requirements.txt # Dipendenze del progetto
+-- data/ # Archivio dei dati
¦ +-- faiss_index/ # Indice FAISS
¦ +-- FINAL_DOC/ # Documenti finali elaborati
¦ +-- logs/ # Log di esecuzione
¦ +-- preprocessing/ # File di preprocessing
¦ +-- questions/ # Domande di test
¦ +-- slides/ # Slide del corso in formato PDF
¦ +-- source/ # Documenti di origine
+-- static/ # File statici per l'interfaccia web
+-- templates/ # Template HTML per l'interfaccia web
¦ +-- index.html # Pagina principale
+-- .gitignore # File per escludere file non necessari dal repository
+-- LLM_Report_Gruppo7.pdf # Report del progetto
+-- README.md # Documentazione del progetto
Il progetto richiede i seguenti pacchetti Python:
- requests
- langchain
- huggingface_hub
- sentence-transformers
- pypdf
- numpy
- tensorflow
Puoi installare tutte le dipendenze con:
pip install -r requirements.txt