caucus.Documentazione
GitHubApri l'app
PanoramicaSelf-hostingCorpusTrust layerGuida ai moduliAPIBenchmarkFAQ
PanoramicaSelf-hostingCorpusTrust layerGuida ai moduliAPIBenchmarkFAQ

Il corpus

Tutto ciò che Caucus afferma è ancorato a un corpus locale e ispezionabile. Nessuna risposta si basa solo sulla memoria del modello: il retrieval pesca da qui, e il trust layer verifica qui ogni citazione.

Composizione

SezioneFonteContenuto
Norme nazionaliNormattiva (XML Akoma Ntoso ufficiale)50 fonti consolidate: i quattro codici, la Costituzione, i principali testi unici (sicurezza sul lavoro, bancario, finanza, immigrazione, edilizia, ambiente…) e le leggi di compliance (231/2001, antiriciclaggio, anticorruzione, whistleblowing…)
Diritto UEEUR-Lex (HTML per CELEX, in italiano)14 atti: GDPR, AI Act, NIS2, DORA, MiCA, DSA/DMA, eIDAS, PSD2/MiFID II e le direttive consumatori, whistleblowing, AML, ePrivacy
GiurisprudenzaSentenzeWeb (Corte di Cassazione)Decisioni civili e penali a testo integrale, nella forma anonimizzata pubblicata dalla Corte; harvest incrementale, corpus in crescita (72.050 provvedimenti alla data del pacchetto corrente)

Come è costruito

  • Parsing strutturale, non scraping. Le norme arrivano dall'XML Akoma Ntoso ufficiale di Normattiva: articoli, commi, rubriche, data del consolidato e stato di abrogazione sono campi strutturati, non regex su HTML.
  • Chunk contestuali. Ogni frammento indicizzato porta nel testo il proprio contesto: fonte, articolo e rubrica (per esempio Codice Civile, art. 2043, «Risarcimento per fatto illecito»), così l'embedding codifica anche la collocazione, non solo il testo del comma.
  • Vigenza temporale. Ogni partizione e ogni chunk hanno effective_from/effective_to: il retrieval filtra per data di vigenza (default: oggi) e gli articoli abrogati sono marcati: possono essere citati come abrogati, mai spacciati per vigenti.
  • Grafo dei rinvii. I riferimenti incrociati («si applica l'art. …») estratti dall'XML diventano un grafo di citazioni tra norme, usato in retrieval per espandere il contesto di un hop.
  • Ingestione idempotente. Ricaricare una fonte normativa è delete-and-replace: stesso corpus, mai duplicati. La giurisprudenza è append-only per identificativo esterno, quindi l'harvest è interrompibile e riprendibile.

Il pacchetto corpus scaricabile

Indicizzare tutto da zero funziona (i comandi sono pubblici e riproducibili) ma richiede ore di harvest e qualche euro di embedding. Per questo ogni release pubblica un pacchetto corpus pronto: l'intero database già popolato e le collection vettoriali già calcolate.

# con l'infra attiva (make up && make migrate):
make corpus-import SRC=https://github.com/gral-digital/caucus/releases/download/corpus-20260801
# oppure da una directory locale già scaricata:
make corpus-import SRC=/percorso/caucus-corpus-YYYYMMDD

Il pacchetto contiene:

  • postgres_corpus.dump: dump compresso delle sole tabelle del corpus (norme, commi, chunk, grafo dei rinvii, giurisprudenza). Le tabelle utente non sono incluse e l'import non le tocca;
  • qdrant_*.snapshot: uno snapshot per collection vettoriale (embedding text-embedding-3-small, 1536 dimensioni), ripristinato così com'è: zero chiamate API;
  • manifest.json: data, commit di origine, revisione dello schema, conteggi per tabella e collection, checksum SHA-256 di ogni file. L'import verifica tutto prima di scrivere e confronta i conteggi a fine ripristino;
  • README.md: licenze dei dati e istruzioni minime.

Il download pesa alcuni GB (la parte grossa sono gli embedding della giurisprudenza). Lo script riprende i download interrotti e puoi rilanciarlo senza paura: l'import è ripetibile.

Per produrre un pacchetto dalla propria istanza (per esempio dopo aver aggiunto fonti):

make corpus-export   # scrive dist/corpus/caucus-corpus-<data>/

Licenze dei dati

  • Atti normativi (Normattiva, EUR-Lex): gli atti ufficiali dello Stato e delle amministrazioni pubbliche sono esclusi dalla protezione del diritto d'autore (art. 5 L. 633/1941); per gli atti UE vale la politica di riuso della Commissione (decisione 2011/833/UE).
  • Giurisprudenza: i provvedimenti sono ingeriti nella forma anonimizzata pubblicata da SentenzeWeb ai fini di pubblicità legale; il corpus non aggiunge alcun dato personale rispetto alla fonte e l'harvest rispetta un rate limit conservativo con user-agent identificato.
  • Chunking ed embedding (il lavoro di Caucus sul testo): rilasciati sotto licenza MIT, come il benchmark. Il codice resta AGPL-3.0.

Aggiornare il corpus

Le norme si riallineano al consolidato corrente ripetendo l'ingestione della singola fonte (uv run caucus-ingest ingest --codice cc): il loader sostituisce la fonte per intero. La giurisprudenza cresce con make harvest-cassazione, che riparte da dove si era fermato. La data di consolidamento di ogni fonte è visibile nel pannello «Fonti del corpus» dell'app.