Strategie di chunking (fisso, per frasi, semantico)
Valuti i compromessi tra chunking di dimensione fissa, basato sulle frasi e semantico per la qualità del retrieval.
Strategie di chunking (fisso, per frasi, semantico) è una lezione AI Agents gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento AI Agents, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso AI Agents include 4 lezioni in totale.
Perché creare i chunk?
Non può creare un unico vettore per un PDF di 200 pagine: il vettore sarebbe troppo astratto per corrispondere a query specifiche. Suddivida il documento in parti più piccole (ciascuna di circa 200-800 token), crei un embedding per ciascuna e cerchi a livello di chunk.
Suddivisione in chunk di dimensione fissa
L'approccio più semplice: suddividere ogni N caratteri o token:
def fixed_chunks(text, chunk_size=1000, overlap=200):
chunks = []
i = 0
while i < len(text):
chunks.append(text[i:i + chunk_size])
i += chunk_size - overlap
return chunks
sample_text = "A" * 2500
chunks = fixed_chunks(sample_text, chunk_size=1000, overlap=200)
print(f"Split {len(sample_text)} characters into {len(chunks)} chunks")
for i, c in enumerate(chunks):
print(f"Chunk {i+1}: {len(c)} chars")
Perché usare la sovrapposizione?
La sovrapposizione (in genere il 10-20% della dimensione del chunk) garantisce che una frase a cavallo del confine compaia intatta in almeno un chunk. Senza sovrapposizione, un'informazione importante suddivisa tra più chunk potrebbe non essere recuperabile.
Suddivisione basata sulle frasi
Suddivida in corrispondenza dei confini tra frasi: non interrompa mai una frase a metà:
import re
def sentence_chunks(text, max_chars=1000):
sentences = re.split(r'(?<=[.!?])\s+', text)
chunks = []
current = ''
for s in sentences:
if len(current) + len(s) > max_chars and current:
chunks.append(current.strip())
current = s
else:
current += ' ' + s
if current:
chunks.append(current.strip())
return chunks
sample_text = "This is sentence one. This is sentence two! Is this sentence three? Yes it is."
chunks = sentence_chunks(sample_text, max_chars=40)
for i, c in enumerate(chunks):
print(f"Chunk {i+1}: {c!r}")
Suddivisione ricorsiva (LangChain)
RecursiveCharacterTextSplitter di LangChain prova prima a suddividere in corrispondenza dei paragrafi, poi delle frasi e infine delle parole, preservando il più possibile la struttura.
from langchain.text_splitter import RecursiveCharacterTextSplitter
splitter = RecursiveCharacterTextSplitter(
chunk_size=800,
chunk_overlap=100,
separators=['\n\n', '\n', '. ', ' ']
)
chunks = splitter.split_text(document)Suddivisione semantica
Suddivida nei punti in cui cambia l'argomento. Le implementazioni creano un embedding per ogni frase e suddividono dove gli embedding di frasi consecutive sono molto distanti.
È più lenta da calcolare, ma produce chunk coerenti dal punto di vista dell'argomento.
Suddivisione per documenti Markdown
Per i documenti Markdown, suddivida in corrispondenza dei titoli per mantenere unite le sezioni. Ogni chunk eredita i titoli principali come contesto.
Suddivisione del codice
Per il codice sorgente, suddivida in corrispondenza dei confini di funzioni e classi, non in base al numero di caratteri. Strumenti come tree-sitter consentono una suddivisione basata sull'AST.
Scegliere la dimensione dei chunk
Compromessi:
- Chunk piccoli (~200 token) — corrispondenze precise, ma più chunk da gestire
- Chunk grandi (~1000 token) — più contesto per corrispondenza, ma minore precisione
Impostazione predefinita: 500-800 token con una sovrapposizione del 10-20%.
Conservazione dei metadati
Associ a ogni chunk i relativi metadati:
- URL della fonte / percorso del file
- Numero di pagina
- Titolo del documento
- Sezione / titolo
- Timestamp di creazione / aggiornamento
Sono utili per il filtraggio, le citazioni e il riordinamento.
Chunk contestualizzati
Tecnica recente: anteporre a ogni chunk una riga di contesto generata da un LLM (ad esempio "Questo chunk proviene dal rapporto finanziario aziendale del secondo trimestre 2024 e tratta i ricavi."). Migliora il recupero del 30-50%.
Chunk padre-figlio
Indicizzi piccoli chunk per ottenere corrispondenze precise, ma recuperi il relativo paragrafo PADRE PIÙ GRANDE per avere contesto:
- Crei gli embedding di chunk a livello di frase
- Quando trova una corrispondenza, restituisca il chunk padre di 800 token
Perché usare la sovrapposizione?
Perché i chunk in genere si sovrappongono del 10-20%?
Riepilogo
Inizi con una suddivisione ricorsiva dei caratteri in chunk di circa 800 token, con una sovrapposizione del 10%. Aggiunga consapevolezza semantica o strutturale man mano che aumentano le Sue esigenze.
Impara AI Agents con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 60
- Lezioni
- 239
Domande Frequenti
La lezione «Strategie di chunking (fisso, per frasi, semantico)» è gratuita?
Sì — il testo completo di «Strategie di chunking (fisso, per frasi, semantico)» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso AI Agents, passa a CoddyKit PRO. Il corso AI Agents include 4 lezioni in totale.
Cosa imparerò in «Strategie di chunking (fisso, per frasi, semantico)»?
Valuti i compromessi tra chunking di dimensione fissa, basato sulle frasi e semantico per la qualità del retrieval. Eserciti AI Agents con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare AI Agents?
Non è richiesta alcuna esperienza precedente. AI Agents su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «Strategie di chunking (fisso, per frasi, semantico)»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione AI Agents?
Sì. Ogni lezione AI Agents include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Cosa risolve RAG (limite di conoscenza e allucinazioni)
- Strategie di chunking (fisso, per frasi, semantico)
- Indicizzare un insieme di documenti
- Creare un RAG ingenuo con FAISS o Chroma