Techsy
Contatti
Inizia
Torna al Blog
ai-machine-learning

Strategie di chunking RAG: 7 metodi classificati con i dati di retrieval (2026)

Scritto da Mert Batur
Aug 7, 2026
19 lettura
Sommario
Strategie di chunking RAG: 7 metodi classificati con i dati di retrieval (2026)

Strategie di chunking RAG: 7 metodi classificati con i dati di retrieval (2026)

Le strategie di chunking RAG decidono cosa il tuo retriever potrà trovare prima ancora che una query venga eseguita. Lo studio di Chroma del luglio 2024 ha eseguito 472 query su cinque corpus con text-embedding-3-large, e lo splitter che scegli sposta il recall di circa cinque punti: 86,7% per un semplice splitter a token, 91,7% per quello basato su GPT-4o, recuperando cinque chunk per query. La precision oscilla molto di più. Nell'intero rapporto va dall'1,5% all'8,0%, il che trasforma la scelta della dimensione dei chunk in una decisione di costo travestita da decisione di qualità, e tutte le guide in prima pagina elencano gli stessi sette metodi senza mostrare quale recupera meglio.

Punti chiave

  • Il chunking suddivide i documenti prima dell'embedding; i punti di taglio decidono cosa il retriever può e non può trovare.
  • Nello studio di Chroma del luglio 2024 su 472 query, il recall è andato dall'86,7% al 91,7% tra gli splitter misurati.
  • La precision varia molte volte più del recall, quindi la dimensione dei chunk è soprattutto una decisione sul costo dei token.
  • Parti da 512 token con il 10% di overlap, poi regola sul tuo eval set.

Quale strategia di chunking RAG conviene usare? (Classifica)

Per la maggior parte dei team che lavora su testo lineare, il chunking ricorsivo a caratteri a 512 token con il 10% di overlap è il default giusto. Rispetta i confini di paragrafo e frase, non costa nulla in più, e nel benchmark di Chroma su 472 query è arrivato a 3,2 punti di recall dallo splitter basato su LLM. Cambia solo se i tuoi documenti hanno una struttura forte o se il tuo eval set dimostra il contrario.

StrategiaCome suddivideDa dove partire (dimensione / overlap)Ideale perCosto di esecuzioneEvidenze a supporto
Fissa (a token)Taglio netto ogni N token512 / 50Testo lineare, prototipi rapidiZero (taglio di stringhe)Chroma lug 2024: 86,7% recall / 5,1% precision @200
Ricorsiva a caratteriSuddivide su una gerarchia di separatori (paragrafo, frase, parola)512 / 50Documenti generici, siti di documentazioneZeroChroma lug 2024: 88,5% recall / 7,0% precision @200
Semantica (breakpoint sugli embedding)Distanza coseno tra embedding di frasi, taglio a un percentile400-600 / 0Corpus con temi vari2x chiamate di embeddingChroma lug 2024: 89,0% recall / 6,7% precision (cluster @200)
Consapevole del documento/strutturaSuddivide su header Markdown, tag HTML, confini dell'ASTPer sezione / 0Documentazione Markdown, codebaseZeroNessun benchmark pubblico diretto, per ora
Basata su LLMGPT-4o decide i punti di taglio per ogni documento~240 / 0Paper di ricerca, testi legali1 chiamata LLM per documentoChroma lug 2024: 91,7% recall / 3,9% precision
Late chunkingPrima fa l'embedding dell'intero documento, poi aggrega gli embedding dei token in chunkDipende dal modello / 0Documenti lunghi che richiedono contesto tra chunkChiamata di embedding long-contextNessun benchmark pubblico diretto, per ora (arXiv 2409.04701)
Gerarchica (parent-child)Chunk piccoli per il retrieval, al generatore torna il padreFiglio 256 / padre 1.024QA multi-hop, risposte lungheSpazio di archiviazione per l'indiceNessun benchmark pubblico diretto, per ora

La nostra lettura: parti dal ricorsivo a caratteri. Nei dati di Chroma è dietro solo agli splitter cluster e LLM quanto a recall, e la precision del 3,9% dello splitter LLM significa che dai in pasto al generatore circa il doppio del rumore per ogni token rilevante. La maggior parte dei team non ha un problema di chunking; ha un problema di dimensione dei chunk che non ha mai misurato.

Cosa dicono davvero i dati sulla dimensione dei chunk?

L'unico confronto pubblico diretto tra strategie di chunking RAG è il report tecnico di Chroma "Evaluating Chunking Strategies for Retrieval" (Brandon Smith e Anton Troynikov, pubblicato il 3 luglio 2024). Hanno eseguito 472 query su 5 corpus (328.208 token), fatto l'embedding di tutto con OpenAI text-embedding-3-large e recuperato 5 chunk per query. Le righe qui sotto arrivano dalla tabella in appendice del report per tutti i corpus su text-embedding-3-large con 5 chunk recuperati, quindi sono direttamente confrontabili tra loro:

SplitterDimensione chunk (token)RecallPrecisionIoU
TokenTextSplitter20086,7%5,1%5,1%
RecursiveCharacterTextSplitter20088,5%7,0%7,0%
ClusterSemanticChunker20089,0%6,7%6,6%
LLMSemanticChunker (GPT-4o)~24091,7%3,9%3,9%

La tabella dei risultati principali di Chroma, che riporta un'impostazione di retrieval diversa, colloca la precision migliore del chunker cluster all'8,0% con un recall dell'87,3%, e estende l'intervallo di precision di tutti i suoi splitter dall'1,5% (KamradtSemanticChunker) all'8,0%. Fonte: Chroma Research, Evaluating Chunking Strategies

"Introducing Contextual Retrieval" di Anthropic (pubblicato il 19 settembre 2024) attacca il problema da un'angolazione diversa. Il loro tasso di fallimento del retrieval top-20 di base era del 5,7%; i soli contextual embedding lo hanno portato al 3,7% (riduzione del 35%), il BM25 contestuale aggiunto sopra lo ha portato al 2,9% (49%), e il reranking lo ha spinto all'1,9% (67%). Anthropic non pubblica la dimensione esatta dei chunk né l'overlap usato, quindi trattali come evidenze a livello di metodo, non di dimensione. Fonte: Anthropic, Contextual Retrieval.

La nostra lettura: tre conclusioni, pura aritmetica. Primo, la scelta dello splitter vale recall vero, e Chroma lo dice apertamente: alcune strategie superano le altre fino al 9% in recall. Nella sua tabella dei risultati principali il recall va dall'83,6% (KamradtSemanticChunker) al 91,9% (LLMSemanticChunker), e anche solo dentro le righe con 5 chunk recuperati qui sopra resta tra l'86,7% e il 91,7%. La precision si muove diverse volte di più sugli stessi dati: dall'1,5% all'8,0%, un'escursione di 5,3x contro l'1,1x del recall. Quindi il recall è dove guadagni qualche punto, mentre precision e costo dei token sono dove la scelta morde davvero. Secondo, lo splitter basato su LLM compra il recall massimo al prezzo della precision peggiore: paghi una chiamata LLM per documento e dai al generatore più rumore. Terzo, i numeri di Anthropic mostrano che arricchire i chunk con contesto (dal 5,7% al 3,7%) ha spostato il tasso di fallimento più di qualsiasi scelta di splitter nella tabella di Chroma. Arricchisci i chunk prima di rimettere mano allo splitter. Il reranking recupera i chunk rovinati dallo splitter, e la ricerca ibrida combina BM25 e retrieval vettoriale per lo stesso motivo.

Limiti onesti: entrambi gli studi usano un solo modello di embedding, corpus solo in inglese, e nessuno dei due è un test controllato sul tuo corpus. Su 472 query, il divario tra lo splitter migliore e il peggiore era di circa 5 punti di recall con 5 chunk recuperati, e un divario proporzionalmente molto più ampio sulla precision.

Perché la dimensione dei chunk decide la qualità del retrieval?

La dimensione dei chunk fissa la granularità della tua chiave di retrieval. Un chunk da 400 token produce un embedding focalizzato che corrisponde a query specifiche; un chunk da 4.000 token fa la media di molti temi e non corrisponde con precisione a nulla. Chunk piccoli recuperano il passaggio esatto ma possono frammentare una risposta su più risultati. Chunk grandi tengono insieme il contesto ma indeboliscono il segnale dell'embedding.

Anche il tetto di contesto del modello di embedding conta. Se il tuo modello si ferma a 512 token in input e gliene dai 800, la coda viene troncata in silenzio. Il tuo embedding rappresenta due terzi del chunk. Nessun errore a log.

Poi il lato del generatore. Liu e colleghi hanno mostrato in "Lost in the Middle" (arXiv 2307.03172, 2023) che l'accuratezza degli LLM cala di oltre il 20% quando il documento rilevante si trova in mezzo a un contesto lungo. Recuperare cinque chunk da 1.000 token scarica 5.000 token nel prompt, e la risposta che ti serve può finire nella posizione che il modello legge peggio. Chunk più piccoli tengono il passaggio rilevante più vicino a una posizione che il modello gestisce bene.

Pensa all'indice di una biblioteca. Una scheda che dice "Sezione 4.2, paragrafo 3: politica di rimborso" ti porta alla pagina. Una scheda che dice "tutto sul commercio nel XX secolo" ti porta all'edificio. Il tuo embedding è la scheda. Costruisci un'applicazione RAG da cima a fondo per vedere dove si colloca il chunking nella pipeline, e leggi la nostra guida al context engineering per capire come i chunk recuperati diventano token del prompt. La guida al chunking di Pinecone inquadra lo stesso trade-off dal lato del database vettoriale.

Chunking fisso e ricorsivo (parti da qui)

Il fisso è la baseline contro cui misuri tutto; il ricorsivo è quello che mandi davvero in produzione.

Chunking fisso a token

Taglia ogni N token indipendentemente dal contenuto.

python
def fixed_size_chunks(text: str, size: int = 512, overlap: int = 50) -> list[str]:
    tokens = text.split()  # whitespace proxy; use tiktoken for real token counts
    chunks = []
    step = size - overlap
    for i in range(0, len(tokens), step):
        chunk = " ".join(tokens[i : i + size])
        chunks.append(chunk)
        if i + size >= len(tokens):
            break
    return chunks

La risposta giusta per: testo lineare senza struttura di heading, prototipi rapidi e qualsiasi confronto di baseline. Non è stupido. È il gruppo di controllo.

Chunking ricorsivo a caratteri

Il RecursiveCharacterTextSplitter di LangChain suddivide su una gerarchia di separatori: prima \n\n (paragrafi), poi \n (righe), poi . (frasi), poi (parole). Ogni chunk resta sotto chunk_size rispettando il confine naturale più grande che ci sta.

python
from langchain_text_splitters import RecursiveCharacterTextSplitter

splitter = RecursiveCharacterTextSplitter(
    chunk_size=512,
    chunk_overlap=50,
    separators=["\n\n", "\n", ". ", " ", ""],
    length_function=len,  # swap for tiktoken len for true token counts
)
chunks = splitter.split_text(document)

La lista dei separatori è la parte che ogni concorrente omette. Lo splitter prova prima \n\n e passa a . solo quando un paragrafo supera chunk_size. Se il tuo Markdown ha degli header, aggiungi "## " prima di "\n\n" così le sezioni restano intatte.

Aritmetica dell'overlap: a 512 token con overlap di 50 token, il passo è 462. Un documento da 10.000 token produce ceil(10000 / 462) = 22 chunk. Totale token embeddati: 22 x 512 = 11.264, cioè stai ri-embeddando circa il 12,6% del corpus come overlap. È il costo di storage e API per evitare che le frasi al confine restino orfane.

Come funziona il chunking semantico, e vale il costo?

Il chunking semantico fa l'embedding di ogni frase, misura la distanza coseno tra gli embedding di frasi vicine e taglia dove quella distanza supera una soglia percentile (di solito il 95°). I chunk si spezzano sui cambi di argomento invece che su conteggi arbitrari di token. Il notebook "5 Levels of Text Splitting" di Greg Kamradt ha originato questo approccio a breakpoint percentile, e lo studio di Chroma mette alla prova i suoi chunker per nome.

python
from langchain_experimental.text_splitter import SemanticChunker
from langchain_openai import OpenAIEmbeddings

embeddings = OpenAIEmbeddings(model="text-embedding-3-large")
splitter = SemanticChunker(
    embeddings,
    breakpoint_threshold_type="percentile",
    breakpoint_threshold_amount=95,
)
chunks = splitter.split_text(document)

La matematica dei costi è la parte che nessuno mette in chiaro subito. Il chunking semantico embedda il corpus due volte: una per calcolare le distanze tra frasi e trovare i breakpoint, una per embeddare i chunk risultanti per l'indicizzazione. Al prezzo di text-embedding-3-large di OpenAI, 0,13 $ per 1M token, un corpus da 10M token costa 1,30 $ da indicizzare normalmente e 2,60 $ con il chunking semantico. Paghi il doppio prima ancora che una query venga eseguita.

Cosa ci compri? Nelle righe con 5 chunk recuperati di Chroma, il chunker semantico cluster ha raggiunto l'89,0% di recall e il 6,7% di precision contro l'88,5% e il 7,0% del ricorsivo alla stessa dimensione di 200 token. Nella tabella dei risultati principali lo stesso chunker segna la precision migliore dello studio, 8,0%, con un recall dell'87,3%. Mezzo punto di recall in un senso o nell'altro, e un risultato di precision che cambia segno a seconda dell'impostazione di retrieval che leggi, per il doppio della fattura di embedding. Il nostro verdetto: il chunking semantico ripaga su corpus con temi vari (archivi di notizie, raccolte di paper) dove i confini fissi tagliano in mezzo a un argomento di routine. Per corpus omogenei (documentazione di prodotto, una knowledge base), il ricorsivo ti dà il 95% della qualità a metà costo. Se esegui i modelli di embedding in locale con Ollama, il costo del doppio embedding si riduce a tempo di calcolo.

Chunking consapevole del documento: Markdown, HTML e codice

La suddivisione che rispetta la struttura usa i confini propri del documento (heading, voci di lista, definizioni di funzione) invece dei conteggi di caratteri. Un H2 in Markdown è un confine semantico che un umano ha posizionato di proposito; uno splitter a caratteri lo fa a pezzettini.

python
from langchain_text_splitters import MarkdownHeaderTextSplitter

headers = [("#", "h1"), ("##", "h2"), ("###", "h3")]
splitter = MarkdownHeaderTextSplitter(headers_to_split_on=headers)
splits = splitter.split_text(markdown_doc)
# Each split carries metadata: {"h1": "...", "h2": "...", "h3": "..."}

Per il codice, i confini sono i nodi dell'AST. I NodeParsers di LlamaIndex includono splitter che riconoscono il linguaggio e spezzano su definizioni di funzione e classe. Il dettaglio critico: tieni il blocco di import e la firma della classe contenente attaccati a ogni chunk di funzione. Il corpo di una funzione senza i suoi import è rumore non embeddabile, quindi anteporli entrambi a ogni chunk permette all'embedding di catturare cosa fa la funzione e da cosa dipende.

Per il RAG sul codice in particolare: suddivisione sui confini dell'AST, import anteposti, 256-512 token per funzione, overlap zero.

E il chunking late, gerarchico e agentico?

Queste sono le strategie di chunking RAG avanzate dietro il chiacchiericcio sul "RAG 2.0", e tutte e tre hanno una copertura in SERP di 1/10.

Late chunking

Il late chunking, introdotto da Günther e colleghi in "Late Chunking: Contextual Chunk Embeddings Using Long-Context Embedding Models" (arXiv 2409.04701, settembre 2024), prima fa l'embedding dell'intero documento con un modello long-context, poi aggrega gli embedding a livello di token in vettori di chunk, così ogni chunk porta con sé il contesto dell'intero documento e "costa 40 $/mese" sa a cosa si riferisce "costa". L'abstract rivendica un retrieval superiore su più task ma non pubblica un numero di punta che siamo riusciti a verificare. L'articolo di Weaviate spiega la meccanica e anche quello si ferma prima di un confronto controllato. Stato delle evidenze: promettente, non quantificato.

Chunking gerarchico (parent-child)

Indicizza chunk piccoli (256 token) per il retrieval; restituisci al generatore il padre (1.024 token). Il retriever trova l'ago; il generatore riceve il pagliaio intorno. Mantieni due livelli di indice e una mappatura padre-figlio. Nessun benchmark pubblico isola l'effetto.

Chunking basato su LLM / agentico

Il LLMSemanticChunker dello studio di Chroma usa GPT-4o per decidere i punti di taglio per documento: 91,7% di recall (il più alto) e 3,9% di precision (la più bassa). Paghi una chiamata LLM per documento al momento dell'indicizzazione (circa 100 $ per un corpus di 10.000 documenti) e dai al generatore più rumore. Riservalo ai corpus davvero irregolari: atti legali, PDF scansionati senza heading estraibili.

Quale dimensione di chunk si adatta al tuo modello di embedding?

Il massimo di token in input del tuo modello di embedding è un tetto di troncamento, non una raccomandazione. Un modello che accetta 8.192 token non embedda meglio a 8.192 che a 512. La qualità degrada per diluizione molto prima del tetto: il modello fa la media del significato su più token e il vettore deriva verso il centroide del corpus. La colonna delle raccomandazioni qui sotto è l'interpretazione di Techsy, non la guidance dei vendor.

Modello di embeddingMax token in inputDimensioni outputDimensione chunk di partenza consigliata
OpenAI text-embedding-3-small8.1921.536512 token
OpenAI text-embedding-3-large8.1923.072512 token
Cohere embed-english-v3.05121.024256 token
Cohere embed-v4.0128.0001.536 (default)512 token
BAAI bge-large-en-v1.55121.024256 token
Voyage voyage-3.532.0001.024 (default)512 token

Fonti: guida agli embedding di OpenAI, documentazione di Cohere embed, documentazione degli embedding di Voyage, model card di BGE.

Lo schema: i modelli con un tetto rigido di 512 token (Cohere v3, BGE) chiedono chunk ben sotto i 512, perché il troncamento è silenzioso. Daghene 600 e gli ultimi 88 spariscono dall'embedding senza alcun errore a log. I modelli con tetti ampi (OpenAI, Voyage, Cohere v4) tollerano chunk più grandi ma non li premiano. La lunghezza massima in input di un modello è un limite di troncamento, non una raccomandazione.

Abbina tutto questo alla nostra rassegna sui migliori modelli di embedding per RAG, a cosa misura davvero un punteggio MTEB e a Voyage, OpenAI e Cohere a confronto prima di impegnarti su un modello.

Come si fa il chunking di documenti non in inglese?

I tokenizer non sono neutrali rispetto alla lingua. Petrov e colleghi hanno mostrato in "Language Model Tokenizers Introduce Unfairness Between Languages" (arXiv 2305.15425, 2023) che lo stesso testo tradotto tra lingue può differire in lunghezza tokenizzata fino a 15x. Anche i modelli a livello di carattere e di byte mostrano differenze oltre 4x per alcune coppie di lingue. Un chunk da 512 token contiene molto meno significato in turco, arabo o giapponese che in inglese.

Ecco la stessa frase tokenizzata con la codifica cl100k_base di tiktoken (il tokenizer di GPT-4):

python
import tiktoken
enc = tiktoken.get_encoding("cl100k_base")
en = "The retrieval system returns relevant documents."
tr = "Erişim sistemi ilgili belgeleri döndürür."
ja = "検索システムは関連文書を返します。"
print(len(enc.encode(en)), len(enc.encode(tr)), len(enc.encode(ja)))
# 7 tokens, 19 tokens, 19 tokens: same meaning, 2.7x token spread
LinguaFraseToken cl100k_baseRapporto con l'inglese
IngleseThe retrieval system returns relevant documents.71,0x
TedescoDas Retrieval-System gibt relevante Dokumente zurück.131,9x
TurcoErişim sistemi ilgili belgeleri döndürür.192,7x
Giapponese検索システムは関連文書を返します。192,7x
Araboيعيد نظام الاسترجاع المستندات ذات الصلة.273,9x

Conteggi generati con tiktoken cl100k_base, 30 luglio 2026.

Guida pratica: a una dimensione fissa di 512 token, i tuoi chunk in turco e giapponese contengono circa il 37% del significato dei tuoi chunk in inglese, e i tuoi chunk in arabo circa il 26%. Fai chunking per conteggio di caratteri o di frasi per lingua, oppure alza il budget di token in proporzione (circa 1.400 per il turco, 2.000 per l'arabo). Le lingue CJK non hanno confini di parola con spazi, quindi gli splitter a caratteri si comportano diversamente. La morfologia dell'arabo impacchetta più marcatori grammaticali in singoli token, gonfiando ulteriormente i conteggi.

Un albero di decisione per scegliere la strategia di chunking

text
What kind of document?
├── Structured (Markdown / HTML / code)
│   └── Document-aware splitting on headers or AST boundaries
│       ├── Docs site → MarkdownHeaderTextSplitter, 512 tokens, 0 overlap
│       └── Codebase → AST/function splitter, 256-512 tokens, imports prepended
├── Flat prose (articles, reports, books)
│   └── RecursiveCharacterTextSplitter, 512 tokens, 50 overlap
│       └── Topic-diverse? → try SemanticChunker at 95th percentile
├── Conversational logs (chat, support tickets)
│   └── Split on turn boundaries, group 3-5 turns per chunk, 256 tokens
└── Mixed corpus
    └── Route by MIME type → apply per-type strategy above
        └── Then: how long are expected answers?
            ├── Short (1-2 sentences) → child 256, no parent
            └── Long (multi-paragraph) → hierarchical: child 256, parent 1,024

Tre prescrizioni rapide. Chatbot su documentazione: MarkdownHeaderTextSplitter a 512 token, overlap zero, percorso degli heading nei metadati. Assistente per la ricerca nel codice: suddivisione sui confini dell'AST a 256-512 token per funzione, import anteposti. Corpus aziendale misto: instrada per tipo di documento all'ingestione e salva nel database vettoriale in cui salvi i chunk con metadati di tipo per la taratura per tipo più avanti. Questo instradamento per documento è l'intero chunking adattivo per applicazioni RAG.

Strumenti: LangChain vs LlamaIndex vs Chonkie

Non vendiamo nessuno di questi; le prime tre pagine in classifica per questa keyword sono blog di vendor con CTA di prodotto.

LibreriaSplitter inclusiIdeale perA cosa fare attenzione
LangChainRicorsivo, Markdown, HTML, codice (AST), semantico, a tokenUso generale; il catalogo di splitter più ampioPeso degli import; API che cambia tra le versioni minori
LlamaIndexNodeParsers: frasi, Markdown, codice, gerarchico, semanticoPipeline document già dentro LlamaIndexAccoppiamento più stretto con il grafo di ingestione di LlamaIndex
ChonkieToken, ricorsivo, semantico, SDPM (late), codiceOrientato alla velocità; leggero, tokenizzazione rapidaProgetto più giovane; community più piccola

Fonti: documentazione di LangChain, NodeParsers di LlamaIndex, documentazione di Chonkie.

Tutti e tre implementano gli stessi algoritmi di base, quindi scegli in base a quello che la tua pipeline usa già. Per lo stack di strumenti RAG oltre agli splitter e il confronto tra Qdrant, Chroma e pgvector per lo storage, vedi le guide del nostro cluster.

Come Techsy affronta il chunking

Sulle build RAG per i clienti, il team di Techsy parte da 512 token con il 10% di overlap e non tocca lo splitter finché non abbiamo costruito un eval set di 20-50 domande dai ticket di supporto reali del cliente. Prima viene l'eval set; poi cambiamo una variabile alla volta: dimensione, overlap, strategia. Niente cambio di splitter senza un numero prima-e-dopo sulle stesse domande. Richiedi una consulenza gratuita per un secondo paio di occhi sulla tua pipeline di retrieval.

L'autore

Mert Batur è Co-Founder di Techsy.io, dove il team realizza agenti AI, sistemi di automazione e pipeline voce/SDR per clienti B2B. Scrive dello stack di tooling LLM che il team di Techsy usa davvero in produzione, incluso il lavoro su RAG e retrieval dietro le knowledge base dei clienti. Collegati su LinkedIn.

Domande frequenti

Cos'è il chunking nel RAG?

Il chunking è la fase di preprocessing che suddivide i documenti in segmenti più piccoli prima dell'embedding, così il retriever può confrontare le query con passaggi focalizzati invece che con file interi. I punti di taglio determinano cosa il tuo sistema può e non può trovare al momento della query.

Qual è la migliore strategia di chunking per il RAG?

Per la maggior parte dei sistemi in produzione su documenti generici, il chunking ricorsivo a caratteri a 512 token con il 10% di overlap è il default più solido. Nello studio di Chroma su 472 query (luglio 2024) ha segnato l'88,5% di recall, entro 3,2 punti dal metodo basato su LLM più costoso, a costo aggiuntivo zero.

Qual è la dimensione ottimale dei chunk per il RAG?

Parti da 512 token. Scendi a 256 se il tuo modello di embedding ha un tetto di 512 token in input (Cohere v3, BGE) o se le tue query si aspettano risposte di una sola frase. Sali a 1.024 solo se il tuo eval set mostra risposte multi-paragrafo che vengono frammentate. Misura sempre sulle tue domande.

Quanto overlap tra chunk dovrei usare?

Il 10-20% della dimensione del chunk (50-100 token a 512). L'overlap evita che le frasi al confine restino orfane: un fatto diviso tra due chunk compare completo in almeno uno. Oltre il 20%, ri-embeddi troppo del corpus per ritorni decrescenti. La maggior parte dei team si assesta sul 10% e non ci torna più.

Il chunking semantico è meglio del chunking a dimensione fissa?

Di poco, e al doppio del costo di embedding. Il benchmark di Chroma del luglio 2024 ha mostrato il chunker semantico cluster all'89,0% di recall e 6,7% di precision contro l'88,5% di recall e il 7,0% di precision del ricorsivo alla stessa dimensione di token, con il suo risultato migliore di precision all'8,0% che arriva da un'impostazione di retrieval diversa. Vale la pena per corpus con temi vari; difficile da giustificare per insiemi di documenti omogenei.

La dimensione dei chunk dipende dal modello di embedding?

Sì. I modelli con un tetto di 512 token in input (BGE, Cohere v3) richiedono chunk ben sotto i 512 perché il troncamento è silenzioso. I modelli con tetti di 8.192+ tollerano chunk più grandi ma non li premiano; la qualità dell'embedding degrada per diluizione prima del tetto. Vedi la tabella di abbinamento qui sopra per i punti di partenza per modello.

Come faccio il chunking del codice per un sistema RAG?

Spezza sui confini dell'AST (definizioni di funzione e classe) invece che sui conteggi di token. Tieni ogni chunk tra 256 e 512 token per funzione, anteponi il blocco di import del file e la firma della classe contenente, e usa overlap zero perché le funzioni sono unità autonome. Il CodeSplitter di LlamaIndex e gli splitter language-aware di LangChain gestiscono entrambi la cosa.

Cos'è il late chunking?

Il late chunking prima fa l'embedding dell'intero documento con un modello long-context, poi aggrega gli embedding a livello di token in vettori di chunk. L'embedding di ogni chunk porta con sé il contesto dell'intero documento, risolvendo il problema "a cosa si riferisce 'ci'?". Introdotto da Günther e colleghi (arXiv 2409.04701, settembre 2024). Nessun benchmark pubblico diretto quantifica ancora il guadagno.

Come faccio il chunking di documenti in lingue diverse dall'inglese?

I conteggi di token non sono neutrali rispetto alla lingua. La stessa frase ha richiesto 2,7x più token in turco e giapponese che in inglese, e 3,9x in arabo (tiktoken cl100k_base). Un budget fisso di 512 token dà in silenzio meno significato ai chunk non in inglese. Fai chunking per conteggio di caratteri o frasi per lingua, oppure alza il budget in proporzione.

Come capisco se il mio chunking sta davvero funzionando?

Costruisci un eval set di 20-50 domande dalle query reali degli utenti prima di toccare lo splitter. Calcola hit@5 e MRR sui tuoi chunk attuali. Cambia una variabile (dimensione, overlap, strategia), riesegui, confronta. Senza un eval set, stai regolando a sensazione. Venti domande bastano per partire.

In sintesi

  • Parti dal chunking ricorsivo a caratteri a 512 token, 10% di overlap. Default giusto per il testo lineare.
  • Tra le quattro famiglie di splitter che qualcuno abbia misurato, le 472 query di Chroma spostano il recall di circa 5 punti e la precision diverse volte di più. Taratura prima su precision e costo.
  • Abbina la dimensione dei chunk al tetto di input del tuo modello di embedding. Un modello con tetto di 512 token chiede chunk sotto i 512.
  • Arricchisci i chunk con contesto (il calo del tasso di fallimento di Anthropic dal 5,7% al 3,7%) prima di rimettere mano allo splitter.
  • Costruisci prima l'eval set. Ogni decisione sullo splitter senza un numero prima-e-dopo è un'ipotesi.

Per la pipeline completa intorno alla tua scelta di chunking, vedi costruire un'applicazione RAG da cima a fondo. Stai ancora decidendo tra retrieval e fine-tuning? RAG o fine-tuning spiega quando vince ciascuno dei due.

Tag

strategie chunking ragdimensione chunkchunking semanticotext splittingretrieval augmented generation

Condividi questo articolo

Articoli correlati

Altri in ai-machine-learning

ai-machine-learning
Aug 6, 2026

Miglior framework RAG nel 2026: LangChain vs LlamaIndex vs Haystack (e quando non ne serve nessuno)

LangChain 1.0 è la scelta predefinita per molti team, ma la risposta onesta per un'app di Q&A su un solo corpus è che forse un framework non ti serve affatto. Abbiamo confrontato 8 livelli di orchestrazione fianco a fianco, con codice, dati repo aggiornati e un budget di latenza.

14 min di lettura lettura
Leggi
ai-machine-learning
Aug 6, 2026

Guida alla quantizzazione LLM: 7 metodi a confronto (con i numeri dei benchmark)

Un modello 70B in FP16 divora 140 GB di VRAM. Quantizzalo a Q4_K_M e scende a circa 42 GB. Questa guida confronta tutti e 7 i metodi di quantizzazione con dati di benchmark pubblicati e una tabella decisionale configurazione per configurazione.

16 min di lettura lettura
Leggi
ai-machine-learning
Aug 5, 2026

Guida GraphRAG: quando i knowledge graph battono il RAG vettoriale (e quando no)

Il conto dell'indicizzazione di GraphRAG è reale e i benchmark 2026 sono contrastanti. Ecco la tabella decisionale per capire quando un knowledge graph batte il RAG vettoriale e quando costa solo di più.

13 min di lettura lettura
Leggi
Vedi tutti gli articoli
Il Tuo Prossimo Passo

Hai un progetto in mente? Parliamone.

Prenota una call di 30 minuti. Ti ascoltiamo, capiamo il problema e ti diciamo se possiamo aiutarti.

Prenota una call di scoping da 30 minVedi i nostri lavori

In evidenza dalla libreria

Claude Skills

Vedi tutto
  • New Post

    Full SEO blog pipeline: research, brief, write, validate, image, translate, publish to Sanity. Autonomous from start to finish.

  • Content Refresh

    Audit a stale post, find decay drivers, and ship a SERP-aligned refresh without losing existing rankings.

  • SEO Audit

    Site-wide SEO audit with prioritized fix list: technical, on-page, and EEAT signals.

Automazioni AI

Vedi tutto
  • Auditor di Sicurezza

    Scan SCA + IaC settimanale con PR di fix in ordine di priorità.

  • Redattore di Cold Email

    Genera email di primo contatto ancorate a un dettaglio pubblico specifico.

  • Agent di Ricerca Lead

    Arricchisce un'email in un profilo, valuta il fit e avvisa su Slack.

In evidenza dalla libreria

Claude Skills

Vedi tutto
  • New Post

    Full SEO blog pipeline: research, brief, write, validate, image, translate, publish to Sanity. Autonomous from start to finish.

  • Content Refresh

    Audit a stale post, find decay drivers, and ship a SERP-aligned refresh without losing existing rankings.

  • SEO Audit

    Site-wide SEO audit with prioritized fix list: technical, on-page, and EEAT signals.

Automazioni AI

Vedi tutto
  • Auditor di Sicurezza

    Scan SCA + IaC settimanale con PR di fix in ordine di priorità.

  • Redattore di Cold Email

    Genera email di primo contatto ancorate a un dettaglio pubblico specifico.

  • Agent di Ricerca Lead

    Arricchisce un'email in un profilo, valuta il fit e avvisa su Slack.

Servizi

  • Soluzioni Enterprise
  • App mobile
  • Applicazioni Web

Soluzioni

  • Sistemi CRM
  • Integrazione AI
  • Soluzioni ERP
  • Agenti Vocali
  • Automazione dei Processi
  • Cybersecurity

Biblioteca

  • Blog
  • Portfolio

Community

  • Automazioni AI
  • Claude Skills

Strumenti

  • Calcolatore costo app mobile
  • Calcolatore costo API OpenAI / LLM
  • Calcolatore costo MVP
  • Calcolatore costo voice agent AI

Azienda

  • Chi siamo
  • Partner
  • Contatti

Legale

  • Privacy Policy
  • Termini di servizio
  • Cookie Policy

Servizi

  • Soluzioni Enterprise
  • App mobile
  • Applicazioni Web

Soluzioni

  • Sistemi CRM
  • Integrazione AI
  • Soluzioni ERP
  • Agenti Vocali
  • Automazione dei Processi
  • Cybersecurity

Biblioteca

  • Blog
  • Portfolio

Community

  • Automazioni AI
  • Claude Skills

Strumenti

  • Calcolatore costo app mobile
  • Calcolatore costo API OpenAI / LLM
  • Calcolatore costo MVP
  • Calcolatore costo voice agent AI

Azienda

  • Chi siamo
  • Partner
  • Contatti
LegalePrivacy PolicyTermini di servizioCookie Policy
TECHSY
© 2026 Techsy. Tutti i diritti riservati.