# CLAUDE.md — RAG from Scratch ## Regole invarianti - **Lingua:** Rispondi sempre in italiano. - **Venv obbligatorio:** Usa `.venv/bin/python` o attiva con `source .venv/bin/activate`. Mai `pip`/`python` di sistema. - **Non modificare `raw.md`:** Il file `raw.md` di ogni stem è immutabile. La copia di lavoro è sempre `clean.md`. --- ## Pipeline (operazioni in ordine) ``` PDF (sources/) → conversione (PDF → clean.md + structure_profile.json) → chunking (clean.md → chunks.json) → verifica (chunks.json → report + fix automatici) → vettorizzazione (chunks.json → ChromaDB) → retrieval (query → risposta via Ollama) ``` Il parametro `--stem` identifica il documento (nome PDF senza `.pdf`). Lo stem è anche il nome della collection ChromaDB. --- ## File critici | File | Ruolo | |---|---| | `config.py` | Fonte di verità: `EMBED_MODEL`, `OLLAMA_MODEL`, `TOP_K`, `TEMPERATURE`, `SYSTEM_PROMPT` | | `chunker.py` | Chunking adattivo — `MIN_CHARS=200`, `MAX_CHARS=800`, `OVERLAP_S=2` | | `verify_chunks.py` | Verifica chunk — stesse soglie di `chunker.py` | | `fix_chunks.py` | Fix automatici su chunk anomali | | `ingest.py` | Vettorizzazione ChromaDB — legge `EMBED_MODEL` da `config.py` | | `rag.py` | Pipeline RAG interattiva | | `conversione/pipeline.py` | Conversione PDF → clean Markdown strutturato | --- ## Regole di assistenza **Modifica `EMBED_MODEL` in `config.py`:** Avvisa sempre che serve rieseguire la vettorizzazione: ```bash python ingest.py --stem --force ``` `ingest.py` importa `EMBED_MODEL` direttamente da `config.py` — la coerenza è critica: se violata non produce errori ma restituisce risultati insensati. **Modifica soglie chunking (`MIN_CHARS`, `MAX_CHARS`, `OVERLAP_S`):** I valori compaiono in più file che vanno sincronizzati manualmente: - `chunker.py` - `verify_chunks.py` - `fix_chunks.py` **Conversione PDF → Markdown:** `conversione/pipeline.py` produce `raw.md` e `clean.md`. Il `clean.md` va sempre revisionato dopo la conversione automatica — la qualità del RAG dipende da esso più di qualsiasi parametro tecnico. Suggerisci sempre `/prepare-md conversione//clean.md` dopo la conversione. **Verifica chunk:** Dopo `verify_chunks.py`, usa `/step6-fix ` prima di procedere con la vettorizzazione. --- ## Skills custom - `/prepare-md ` — Revisione e correzione automatica di qualsiasi `clean.md`: sillabazione, artefatti, header malformati, paragrafi spezzati, gerarchia, sezioni vuote. Accetta path completo (`conversione/bitcoin/clean.md`) o stem (`bitcoin`). - `/step6-fix ` — Dry-run e applicazione fix chunk tramite `fix_chunks.py`. --- ## Output per stem ``` conversione//raw.md ← immutabile conversione//clean.md ← copia di lavoro conversione//structure_profile.json /chunks.json /report.json chroma_db// ← collection ChromaDB ```