52e881d09c
Elimina conversione/ (9 stadi PyMuPDF) e tests/ (tutti unit/integration). Il repository gestisce ora solo: pulizia MD, chunking, vettorizzazione e RAG. Aggiorna CLAUDE.md e .gitignore per il nuovo flusso MinerU-first. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
119 lines
4.0 KiB
Markdown
119 lines
4.0 KiB
Markdown
# CLAUDE.md
|
|
|
|
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
|
|
|
---
|
|
|
|
## Lingua e comportamento
|
|
|
|
- **Lingua:** Rispondi sempre in italiano.
|
|
- **Prima di eseguire qualsiasi istruzione**, esponi:
|
|
1. Come intendi procedere (approccio, file coinvolti).
|
|
2. Se l'istruzione ha problemi concettuali — e perché — con una proposta alternativa.
|
|
3. Aspetta conferma o correzione prima di toccare il codice, salvo che l'istruzione sia banale (rinomina, formattazione).
|
|
|
|
---
|
|
|
|
## Missione
|
|
|
|
Pipeline RAG su documenti accademici. La conversione PDF → Markdown è delegata a **MinerU** (tool esterno). Questo repository si occupa solo di: pulizia Markdown, chunking, vettorizzazione e retrieval/generazione.
|
|
|
|
```
|
|
MinerU (esterno) → sources/<stem>/auto/<stem>.md
|
|
↓
|
|
/prepare-md (pulizia)
|
|
↓
|
|
chunker.py (chunking adattivo)
|
|
↓
|
|
ingest.py (embedding → ChromaDB)
|
|
↓
|
|
rag.py / retrieve.py
|
|
```
|
|
|
|
---
|
|
|
|
## Regole invarianti
|
|
|
|
- **Venv:** Usa `.venv/bin/python`. Mai `pip`/`python` di sistema.
|
|
- **Niente LLM nella pipeline:** chunking e pulizia devono essere rule-based e riproducibili.
|
|
- **Input immutabile:** Non modificare mai `sources/<stem>/auto/<stem>.md` direttamente — usare `/prepare-md` che lavora su una copia.
|
|
|
|
---
|
|
|
|
## Input — struttura MinerU
|
|
|
|
MinerU produce una cartella per ogni documento. Posizionarla in `sources/`:
|
|
|
|
```
|
|
sources/<stem>/auto/<stem>.md ← Markdown principale (input pipeline)
|
|
sources/<stem>/auto/<stem>_content_list_v2.json ← struttura ricca (chunk, bbox, tipo)
|
|
sources/<stem>/auto/<stem>_middle.json ← dati intermedi di layout
|
|
sources/<stem>/auto/images/ ← immagini estratte
|
|
```
|
|
|
|
`<stem>` = nome del documento, usato in tutti i comandi come identificatore.
|
|
|
|
---
|
|
|
|
## Comandi
|
|
|
|
```bash
|
|
# Setup
|
|
python -m venv .venv && source .venv/bin/activate && pip install -r requirements.txt
|
|
|
|
# Chunking (legge sources/<stem>/auto/<stem>.md)
|
|
.venv/bin/python chunks/chunker.py --stem <stem>
|
|
.venv/bin/python chunks/chunker.py # tutti gli stem
|
|
|
|
# Vettorizzazione (richiede Ollama attivo)
|
|
.venv/bin/python ingestion/ingest.py --stem <stem>
|
|
.venv/bin/python ingestion/ingest.py --stem <stem> --force
|
|
|
|
# RAG interattivo
|
|
.venv/bin/python rag.py --stem <stem>
|
|
.venv/bin/python retrieve.py --stem <stem> # retrieval puro, senza LLM
|
|
```
|
|
|
|
---
|
|
|
|
## Architettura
|
|
|
|
### Chunking — `chunks/`
|
|
|
|
| File | Responsabilità |
|
|
|------|---------------|
|
|
| `chunker.py` | Chunking adattivo del Markdown; legge `structure_profile.json` per scegliere la strategia |
|
|
| `config.py` | Parametri: `TARGET_CHARS`, `OVERLAP_SENTENCES`, `CHUNK_TOLERANCE`, `STRATEGY_OVERRIDES` |
|
|
| `verify_chunks.py` | Verifica qualità chunk (copertura, lunghezze, overlap) |
|
|
| `fix_chunks.py` | Correzioni post-chunking |
|
|
|
|
Output: `chunks/<stem>/chunks.json`, `chunks/<stem>/meta.json`, `chunks/<stem>/report.json`
|
|
|
|
### Vettorizzazione — `ingestion/ingest.py`
|
|
|
|
Legge `chunks/<stem>/chunks.json`, genera embedding via Ollama (`EMBED_MODEL`), indicizza in ChromaDB persistente (`chroma_db/`). Supporta collection multi-documento (`--collection <nome> --stems doc1 doc2`).
|
|
|
|
### RAG — file radice
|
|
|
|
| File | Responsabilità |
|
|
|------|---------------|
|
|
| `rag.py` | Loop interattivo: retrieval + generazione Ollama |
|
|
| `retrieve.py` | Retrieval puro (debug senza LLM) |
|
|
| `config.py` | `TOP_K`, `TEMPERATURE`, `OLLAMA_MODEL`, `EMBED_MODEL`, `SYSTEM_PROMPT`, `OLLAMA_URL` |
|
|
|
|
### Output per stem
|
|
|
|
```
|
|
chunks/<stem>/chunks.json
|
|
chunks/<stem>/meta.json
|
|
chunks/<stem>/report.json
|
|
chroma_db/<stem>/ ← collection ChromaDB
|
|
```
|
|
|
|
---
|
|
|
|
## Skills custom
|
|
|
|
- `/prepare-md <path|stem>` — corregge il Markdown MinerU: sillabazione, artefatti, header malformati, gerarchia incoerente. Opera su una copia, non sull'originale.
|
|
- `/post-chunk` — verifica e perfeziona i chunk prima della vettorizzazione.
|