AI Agents · Lezione

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.

Lezione 2 di 414 passaggi

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:

  1. Crei gli embedding di chunk a livello di frase
  2. 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.

Gratis per iniziare

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

  1. Cosa risolve RAG (limite di conoscenza e allucinazioni)
  2. Strategie di chunking (fisso, per frasi, semantico)
  3. Indicizzare un insieme di documenti
  4. Creare un RAG ingenuo con FAISS o Chroma
← Torna a AI Agents