Un progetto NestJS che implementa un sistema di Retrieval-Augmented Generation (RAG) per generare risposte intelligenti basate su documenti indicizzati.
Note
Per l'accelerazione hardware su GPU AMD, visita il branch vulkan-gpu. Quella versione utilizza llama.cpp con backend Vulkan invece di Ollama standard.
npm installConfigura le seguenti variabili nel file .env:
OLLAMA_BASE_URL=http://localhost:11434
EMBEDDING_MODEL=embeddinggemma:latest
SIMILARITY_THRESHOLD=0.45
LLM_MODEL=gemini-3-flash-preview
GEMINI_API_KEY=your_api_key
# Sviluppo
npm run start
# Modalità watch
npm run start:dev
# Produzione
npm run start:prodIl progetto è organizzato in servizi specializzati per mantenere il codice pulito e manutenibile:
- PdfIngestionService: Parsing e chunking dei file PDF
- VectorStoreService: Gestione dell'indice FAISS e embeddings
- DocumentRetrievalService: Ricerca semantica e filtraggio dei documenti
- RagService: Orchestrazione del flusso RAG completo
POST /rag/ingest
Content-Type: multipart/form-data
Body: files[] (array di file PDF)
POST /rag/query
Content-Type: application/json
Body: { "question": "Tua domanda..." }
POST /rag/generate
Content-Type: application/json
Body: { "question": "Tua domanda..." }
Check out the NestJS deployment documentation per più informazioni.