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:
@@ -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 |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -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})$")
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user