fix(verify): riconosce URL www. come terminatori validi + doc multi-documento

- _URL_TAIL ora matcha anche www.* (non solo https://) — evita falsi blockers
  su watermark tipo www.docsity.com
- README: documenta --collection / --stems per ingestion, retrieve e rag

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-12 11:21:24 +02:00
parent 8d972fa7c6
commit 48567fa5e7
2 changed files with 19 additions and 5 deletions
+18 -4
View File
@@ -116,17 +116,23 @@ Prima verifica che Ollama e i modelli siano pronti:
Poi genera gli embedding e salva in ChromaDB: Poi genera gli embedding e salva in ChromaDB:
```bash ```bash
# Singolo documento # Singolo documento → collection con lo stesso nome
.venv/bin/python ingestion/ingest.py --stem <nome> .venv/bin/python ingestion/ingest.py --stem <nome>
# Tutti i documenti in chunks/ # Più documenti → un'unica collection condivisa
.venv/bin/python ingestion/ingest.py --collection <nome-collection> --stems doc1 doc2 doc3
# Tutti i documenti in chunks/ → collection separate
.venv/bin/python ingestion/ingest.py .venv/bin/python ingestion/ingest.py
# Rigenera dopo aver cambiato modello o aggiornato i chunk # Rigenera dopo aver cambiato modello o aggiornato i chunk
.venv/bin/python ingestion/ingest.py --stem <nome> --force .venv/bin/python ingestion/ingest.py --stem <nome> --force
``` ```
Output in `chroma_db/<nome>/` (ignorata da git). Con `--collection` i chunk di documenti diversi vengono uniti in una singola
collection. Il metadato `source` identifica il documento di provenienza di ogni chunk.
Output in `chroma_db/` (ignorata da git).
--- ---
@@ -184,8 +190,12 @@ Utile per verificare che i chunk giusti vengano recuperati prima di diagnosticar
risposte sbagliate: risposte sbagliate:
```bash ```bash
# Singolo documento
.venv/bin/python retrieve.py --stem <nome> .venv/bin/python retrieve.py --stem <nome>
# Collection multi-documento
.venv/bin/python retrieve.py --collection <nome-collection>
# Modifica il numero di chunk restituiti # Modifica il numero di chunk restituiti
.venv/bin/python retrieve.py --stem <nome> --top-k 10 .venv/bin/python retrieve.py --stem <nome> --top-k 10
``` ```
@@ -205,7 +215,11 @@ Nel loop interattivo:
Risponde a domande in linguaggio naturale usando i chunk indicizzati in ChromaDB: Risponde a domande in linguaggio naturale usando i chunk indicizzati in ChromaDB:
```bash ```bash
# Singolo documento
.venv/bin/python rag.py --stem <nome> .venv/bin/python rag.py --stem <nome>
# Collection multi-documento
.venv/bin/python rag.py --collection <nome-collection>
``` ```
Nel loop interattivo: Nel loop interattivo:
@@ -213,7 +227,7 @@ Nel loop interattivo:
| Comando | Effetto | | Comando | Effetto |
|---------|---------| |---------|---------|
| `<domanda>` | Risposta generata dal LLM con contesto dai chunk | | `<domanda>` | Risposta generata dal LLM con contesto dai chunk |
| `<domanda> -v` | Risposta + chunk recuperati con score di similarità | | `<domanda> -v` | Risposta + chunk recuperati con score di similarità e documento sorgente |
| `exit` | Termina | | `exit` | Termina |
--- ---
+1 -1
View File
@@ -38,7 +38,7 @@ PUNCT_END = re.compile(
r"|:$" # introduzione a lista o formula r"|:$" # introduzione a lista o formula
) )
_HEX_END = re.compile(r"[0-9a-fA-F]{8,}$") _HEX_END = re.compile(r"[0-9a-fA-F]{8,}$")
_URL_TAIL = re.compile(r"https?://\S+(\s+\S+){0,3}$") # URL con fino a 3 token extra _URL_TAIL = re.compile(r"(https?://|www\.)\S+(\s+\S+){0,3}$") # URL con fino a 3 token extra
_MATH_SYMS = re.compile(r"[∈∑≤≥≠∀∃∫√∞∂±×÷→←↔⊂⊃⊆⊇∩∪·°]") _MATH_SYMS = re.compile(r"[∈∑≤≥≠∀∃∫√∞∂±×÷→←↔⊂⊃⊆⊇∩∪·°]")
_ROMAN_END = re.compile(r"\b(I{1,3}|IV|VI{0,3}|IX|XI{0,2}|XIV|XV|XVI{0,2}|XIX|XX{0,2})$") _ROMAN_END = re.compile(r"\b(I{1,3}|IV|VI{0,3}|IX|XI{0,2}|XIV|XV|XVI{0,2}|XIX|XX{0,2})$")