Un sistema di Retrieval-Augmented Generation (RAG) modulare che integra tecniche avanzate per il processing, chunking, retrieval e generazione di risposte da documenti tecnici.
src/
├── document_processing/ # PDF processor (PyPDF2)
├── chunking/ # Semantic chunking
├── query_handling/ # HyPE processor
├── retrieval/ # Fusion retrieval
├── generation/ # Gemini generator
├── pipeline/ # Pipeline principale
└── utils/ # Utilità e helpers
git clone <repository-url>
cd RAG-evaluatorpython -m venv venv
venv\Scripts\activatepip install -r requirements.txtCrea un file .env nella root del progetto:
GOOGLE_API_KEY=your_google_gemini_api_key_here
# Opzionale (per modelli privati Hugging Face o limiti più alti):
HUGGINGFACEHUB_API_TOKEN=your_hf_token_hereNota: il processing dei PDF è effettuato con PyPDF2 (Docling non è richiesto).
python quick_test.pypython main.py --docs data/ --interactive- Input: PDF, TXT, MD
- Processo: Estrazione testo con PyPDF2 e conversione in Markdown semplice
- Output: Documenti processati con metadati
- Input: Testo strutturato
- Processo: LangChain SemanticChunker divide il testo in chunks semanticamente coerenti
- Parametri:
percentile,standard_deviation,interquartile - Output: Chunks con boundaries semantiche naturali
- Input: Query utente
- Processo: Trasforma la query in altre queries con metodo di decomposizione in sub-queries (di numero {max_transformations}), riformulazione o step-back
- Benefici: Migliora la qualità e la precisione della ricerca
- Output: {max_transformations} queries
- Input: Query utente + indici costruiti
- Processo: Combina ricerca vettoriale (FAISS) e keyword (BM25)
- Formula:
score = α × vector_score + β × bm25_score - Output: Risultati ranked con score fusion
- Input: Query + chunks recuperati
- Processo: Google Gemini genera risposta basata sul contesto
- Output: Risposta strutturata con fonti e confidence