Un chunk rappresenta un blocco di dati o informazioni trattato come se fosse una singola unità, che può essere gestita separatamente. La divisione dei dati o delle informazioni in chunk serve a facilitarne l'elaborazione, l'archiviazione e la ricerca.
Sei i dati da elaborare fossero un libro, i chunk potrebbero essere considerati come i capitoli, le pagine, i paragrafi, le frasi, ecc..
I chunk, in caso di NLP (
Natural Language Processing), si conteggiano in token che, a seconda del
modello AI utilizzato, corrisponde a parole o caratteri o sub-parole.
Chunk Size
Rappresenta il numero di token, di un documento testuale (DOC, PDF, TXT, ecc.), conteggiati per creare una rappresentazione vettoriale, che sarà poi salvata nel database tramite il processo di embedding.
In caso di NLP un Chunk Size appropriato potrebbe essere compreso tra 1.000 e 10.000 token.
In altri contesti di ML (
Machine Learning) potrebbe variare ampiamente.
Chunk Overlap
Indica di quanti token i vari chunk si devono sovrapporre, per garantire che ci sia continuità e coerenza contestuale tra i dati.
In caso di NLP un Chunk Overlap appropriato potrebbe essere un valore tra il 5% ed il 20% del Chunk Size.
In altri contesti di ML potrebbe variare ampiamente.
Non esistono impostazioni standard dei valori Chunk Size e Chunk Overlap, questi cambiano a seconda dei dataset, dei modelli AI e delle risorse hardware. I valori qui forniti sono puramente di esempio e potrebbero non essere appropriati a specifiche casistiche.
Esempio
Impostando
Chunk Size con valore 10 e
Chunk Overlap con valore 2 avremo la seguente situazione.
Il chunk 0 partirà del 1° token e arriverà al 10° token, dal momento che il Chunk Size è stato impostato con valore 10.
Avendo inserito 2 come valore del Chunk Overlap, dalla fine del chunk 0 (10° token) saranno conteggiati gli ultimi 2 token (10°, 9°) arrivando così al 9° token, quindi il chunk 1 partirà dal 9° token e arriverà al 18° token, il chunk 2 dal 17° token al 26° token , il chunk 3 dal 25° token al 34° token, ecc..
Tutti i chunk (ad esclusione del primo e dell'ultimo) avranno i primi 2 token presi dal chunk precedente e gli ultimi 2 token presi dal chunk successivo.
Se i valori impostati fossero 1.500 per il
Chunk Size e 100 per il
Chunk Overlap avremmo:
- chunk 0 - dal 1° token al 1.500° token;
- chunk 1 - dal 1.401° token al 2.900° token;
- chunk 2 - dal 2.801° token al 4.300° token;
- ecc.