Un paper scientifico non ha la stessa forma di uno stream da sensori. Un CSV non ha la stessa forma di un sorgente Python. Un video di 90 minuti non ha la stessa forma di un memo di una pagina. Eldric integra un chunking content-aware — la piattaforma rileva ciò che hai caricato, sceglie una strategia appropriata di default e ti lascia regolare prima del commit. Chunk migliori all'ingestione significano hit RAG migliori al momento della query.
Quando trascini un file nell'interfaccia di chat o in una pagina di gestione di una base di conoscenza, il flusso di upload non fa il commit subito. La piattaforma ispeziona prima il file — content type, lingua, lunghezza, struttura — poi apre un dialogo di suggerimento con i parametri pre-compilati. Vedi cosa sta per accadere, puoi sovrascrivere qualsiasi cosa, e solo quando clicchi Commit su RAG l'ingestione parte davvero.
Cosa ti mostra il dialogo di suggerimento, per ogni file:
Clicca Anteprima chunk per vedere i primi 5–10 chunk che la strategia produrrebbe. Modifica la strategia e ri-visualizza l'anteprima per confrontare. Clicca Commit su RAG quando sei soddisfatto.
Default qui sotto. Ogni valore è sovrascrivibile nel dialogo di upload e può essere reso persistente per base di conoscenza.
| Content type | Strategia | Dimensione chunk | Overlap | Arricchimento automatico |
|---|---|---|---|---|
| PDF scientifico | semantica (per sezione) | 512 token | 50 | autori, DOI, riferimenti, entità |
| Markdown / docs | semantica (per heading) | 384 token | 40 | heading, blocchi di codice, link incrociati |
| Codice (Python, C++, JS, …) | per confine di funzione | 1024 token | 100 | simboli, import, docstring |
| CSV / TSV | per riga o per cluster | naturale per riga | 0 | statistiche delle colonne, distribuzioni dei valori |
| Audio | per utterance dopo STT | n/d | n/d | trascrizione, diarizzazione dei parlanti, timestamp |
| Video | per scena dopo rilevamento scene | n/d | n/d | rilevamento scene, frame campione, trascrizione |
| Immagine | per immagine | n/d | n/d | embedding di visione, descrizione, testo OCR |
| Serie temporali da sensori | per finestra | 5 minuti | 30 secondi | tag di anomalia, direzione del trend, intervallo |
| FASTA genomico | per sequenza | n/d | n/d | annotazione genica, contenuto GC, ORF |
| SMILES chimico | per molecola | n/d | n/d | proprietà, ADMET, composti simili |
| Testo semplice | fissa | 512 token | 50 | lingua, estrazione di parole chiave |
| Binario / sconosciuto | solo metadata | n/d | n/d | nome file, dimensione, magic byte, descrizione LLM |
Divide su confini naturali — paragrafi, sezioni, heading — poi fonde i pezzi adiacenti corti finché ogni chunk non è vicino al conteggio token target. Migliore per documenti dove il significato sta dentro i confini di sezione: paper scientifici, contratti, manuali di policy.
Taglia al conteggio token target indipendentemente dalla struttura, con overlap per evitare di perdere significato attraverso i confini. Migliore quando l'input non ha struttura utile — lunghi log di testo semplice, trascrizioni senza turni di parlato, immagini con OCR dove il layout è andato perso.
Per il codice sorgente. Divide ai confini di funzione / classe / metodo, con la firma della funzione portata in ogni chunk in modo che il retrieval possa fare il match tra "dov'è la funzione validate_input" e l'implementazione effettiva.
Per dati tabellari. Per riga tratta ogni riga come un chunk; per cluster raggruppa le righe per similarità (utile per dati da sensori dove 1000 righe potrebbero essere un solo "regime operativo"). Le statistiche delle colonne viaggiano come metadati così le query sulle colonne funzionano.
Per audio e video. Il media worker trascrive / segmenta prima, poi ogni utterance (per l'audio) o scena (per il video) diventa un chunk con la trascrizione e i timestamp allegati. Ti permette di interrogare "chi ha detto X intorno al minuto 12" e ottenere una risposta che punta alla scena giusta.
Per serie temporali da sensori. Fa scorrere una finestra sullo stream, riassume ogni finestra in un chunk con tag di anomalia + direzione del trend + intervallo di valori. Buona per dati IoT e SCADA dove la struttura è "5 minuti di un turno", "5 minuti di un altro turno", e vuoi interrogare contro le modalità operative.
Fallback per content type da cui la piattaforma non può estrarre testo — binari, archivi cifrati, immagini firmware grezze. Memorizza nome file, dimensione, firma magic-byte e una descrizione generata da LLM del ruolo del file, così il file è ricercabile anche quando i suoi contenuti non lo sono.
Suggerimento-e-conferma è il flusso per ogni file. Per una base di conoscenza dove ogni documento ha la stessa forma — per esempio, una base di PDF di linee guida cliniche — imposta la strategia una sola volta a livello di base di conoscenza:
curl -X POST -H "X-API-Key: $ELDRIC_API_KEY" \
-H "Content-Type: application/json" \
-d '{"chunk_size":512,"chunk_overlap":50,"strategy":"semantic"}' \
https://<tuo-host>/api/v1/vector/namespaces/<tenant>/<ns>/config
Da questo punto in poi, gli upload in quella base di conoscenza saltano il dialogo di suggerimento (o lo mostrano con i default della base pre-compilati). Il ri-embedding dei documenti esistenti dopo un cambio di strategia è un'operazione one-button nella console di amministrazione.
Un generico 512-token-overlap-50 su tutto funziona, ma funziona meno per i contenuti dove l'unità di significato è qualcos'altro — una frase in un contratto, una funzione nel codice, un'utterance in un'intervista, una riga in un CSV. Il chunking content-aware è l'unico cambiamento che porta RAG da "a volte trova la cosa giusta" a "trova in modo affidabile la cosa giusta", perché le unità memorizzate nell'indice vettoriale corrispondono alle unità su cui verte effettivamente una query.
Combinato con l'anteprima EMM di retrieval compresso e con l'anteprima di inferenza con memoria intelligente, il layer di chunking è la fondazione del loop di ritenzione di Eldric: chunk di alta qualità all'ingestione → hit RAG migliori → segnale di accettazione utente migliore → corpus di training più utile → piattaforma più intelligente nel tempo.
Per la guida pratica lato cliente: usare RAG. Per la vista architetturale: architettura RAG. Per il comportamento a cascata (ENRN → EMM → RAG → fonte live): RAG a richiesta. Per la classificazione personalizzata — insegnare a Eldric le tue classi di intento — vedi classificazione personalizzata.