HomeModelli AIRAGMCP OrchestrazionePrompt Engineering Quando (Non) Usare AIChipsBotNews

Come preparare i dati per la Generazione Aumentata dal Recupero (RAG)

Computer Weekly 6 aprile 2026

La Generazione Aumentata dal Recupero (RAG) rappresenta un ponte fondamentale tra i servizi di intelligenza artificiale generativa e i vasti archivi di dati aziendali. Tuttavia, senza una pipeline di dati RAG adeguata, il sistema potrebbe faticare a recuperare le informazioni più accurate e pertinenti per rispondere alle domande degli utenti. La qualità dei dati è di primaria importanza nei sistemi RAG, e per questo motivo, la creazione di un'applicazione RAG di successo richiede una serie di compiti di pre-elaborazione dei dati essenziali.

Questi compiti includono la filtrazione dei contenuti, la normalizzazione del testo, il chunking (segmentazione), l'assegnazione di metadati e la generazione di embedding. Per garantire una corretta preparazione dei dati, i team di sviluppo RAG devono comprendere a fondo come RAG renda i dati ricercabili, esplorare le strategie di pre-elaborazione dei dati come i metodi di chunking e imparare a costruire una pipeline di dati RAG completa, partendo dalla selezione e pulizia dei dati fino alla loro embedding e archiviazione in un database vettoriale.

Come RAG rende i dati ricercabili

La tecnologia RAG consente ai servizi di intelligenza artificiale generativa di accedere a dati esterni utilizzando un archivio vettoriale o un database con meccanismi di ricerca specifici. Per incorporare dati non strutturati – come, ad esempio, un documento – in un archivio vettoriale, i team devono prima "embeddare" i dati attraverso un modello di embedding. Un embedding trasforma il testo in vettori numerici, ovvero una lista di numeri decimali che rappresentano il testo (parole o frasi) in un formato comprensibile per i computer.

Consideriamo, ad esempio, il seguente paragrafo da un documento:

Abbiamo introdotto Copilot la scorsa settimana e l'accettazione è eccezionale. Le prime misurazioni mostrano una riduzione del volume dei ticket del 32 percento e un aumento delle soluzioni self-service del 27 percento nelle prime 48 ore. Il reparto finanziario stima un risparmio annuale di 1,4 milioni di euro se questa tendenza continua.

L'embedding di questo paragrafo in vettori che rappresentano il testo potrebbe apparire come segue (esempio fortemente semplificato):

[0,81, -0,23, 0,45, 0,12, -0,67, 0,94, 0,30, -0,55, 0,76, 0,10]

Nella realtà, se i team utilizzassero un modello di embedding come il modello OpenAI text-embedding-3-small, questo risulterebbe in un vettore a 1536 dimensioni. Esistono numerosi modelli di embedding offerti da diversi fornitori. Hugging Face ha una classifica degli embedding che illustra i punti di forza e di debolezza di vari modelli.

Questi vettori e il testo originale vengono poi archiviati in un archivio vettoriale come Pinecone o Weaviate. I dati nell'archivio vettoriale potrebbero avere una struttura simile a questa:

{
  "id": "unique-id-123",
  "values": [0,81, -0,23, ..., 0,789],  // il vettore (embedding)
  "metadata": {
    "text": "Abbiamo introdotto Copilot la scorsa settimana e l'accettazione è eccezionale ...",
    "source": "Documento A",
    "page": 3
  }
}

Quando un utente desidera porre una domanda sui dati, invia il suo prompt tramite un orchestratore – come LangGraph, LangChain o Semantic Kernel. L'orchestratore invia quindi una richiesta all'archivio vettoriale utilizzando un metodo di ricerca. Il metodo di ricerca può restituire due o più parti di contenuto rilevante e inoltrare queste informazioni al modello linguistico di grandi dimensioni (LLM), che genera una risposta per l'utente.

L'importanza del chunking

Il chunking è un metodo standard di pre-elaborazione che consiste nel dividere un set di dati in sezioni più piccole, chiamate "chunk". Poiché gli archivi vettoriali non possono memorizzare tutti i dati originali, questi devono essere suddivisi in chunk.

Il paragrafo su Copilot, ad esempio, potrebbe essere diviso in due sezioni:

  • Chunk 1: Abbiamo introdotto Copilot la scorsa settimana e l'accettazione è eccezionale.
  • Chunk 2: Le prime misurazioni mostrano una riduzione del volume dei ticket del 32 percento e un aumento delle soluzioni self-service del 27 percento nelle prime 48 ore. Il reparto finanziario stima un risparmio annuale di 1,4 milioni di euro se questa tendenza continua.

Il problema con questo approccio è che alcune parti potrebbero perdere il loro significato originale. Ad esempio, se un utente chiedesse a un sistema RAG informazioni su Copilot, il meccanismo di ricerca restituirebbe solo la prima parte, non la seconda, poiché non vi è correlazione diretta tra i due chunk. Senza la seconda parte, l'utente non riceverebbe il contesto aggiuntivo e le informazioni complete sull'accettazione e l'impatto di Copilot.

È qui che le strategie di chunking diventano cruciali, aiutando a segmentare i dati in modo che si adattino all'archivio vettoriale e mantengano il loro significato originale all'interno di un motore RAG.

4 Strategie di chunking

Senza strategie appropriate, i sistemi RAG possono segmentare i dati in modo improprio. Esistono diversi metodi di chunking disponibili, tra cui chunking a dimensione fissa, chunking a dimensione variabile basato sul contenuto, chunking basato su regole e chunking a finestra scorrevole (sliding window).

  1. Chunking a dimensione fissa: Con questo metodo, il testo viene diviso in segmenti di dimensioni uguali indipendentemente dal contenuto, ad esempio 400 parole o 800 caratteri per chunk.
  2. Chunking a dimensione variabile basato sul contenuto: Qui, il testo viene suddiviso in base a confini naturali, come i segni di fine frase, le interruzioni di riga o gli indizi strutturali identificati da strumenti di elaborazione del linguaggio naturale (NLP) che analizzano il layout e il significato dei documenti.
  3. Chunking basato su regole: Questo approccio si basa sulla struttura intrinseca o sui confini linguistici del documento. Metodi tipici includono la suddivisione per frasi o paragrafi, utilizzando regole predefinite.
  4. Sliding Window Chunking: Questa tecnica crea chunk sovrapposti facendo scorrere una finestra di dimensione fissa attraverso il testo. Ad esempio, ogni chunk può contenere 500 parole, con il chunk successivo che inizia 300 parole più avanti, creando così un'overlap di 200 parole tra i chunk.

Per il paragrafo di Copilot, un approccio a finestra scorrevole o basato su regole garantirebbe che il paragrafo non perda il suo significato, poiché entrambi i contenuti sarebbero disponibili nello stesso chunk o in chunk sovrapposti che mantengono il contesto.

6 Passi della pipeline di dati RAG

Un altro aspetto da considerare nei sistemi RAG è l'aggiornamento dei dati. Ad esempio, se i dati originali fossero un documento Word prima di essere incorporati in un archivio vettoriale, i dati potrebbero perdere rapidamente valore se non vengono aggiornati regolarmente. Inoltre, i documenti che non possono essere incorporati direttamente, come i file PDF, devono essere convertiti in un formato compatibile con il testo per essere trasferiti nell'archivio vettoriale.

Pertanto, è cruciale costruire una pipeline di dati che possa automatizzare il processo di embedding continuo di nuovi dati da varie fonti e tipi di file nell'archivio vettoriale. Una pipeline di dati RAG è generalmente composta dai seguenti sei passaggi:

  1. Selezione e acquisizione del corpus: Scegliere le fonti di dati e i contenuti più rilevanti in base al caso d'uso specifico.
  2. Pre-elaborazione e analisi dei dati: Pulire e standardizzare i dati grezzi in modo che siano pronti per l'embedding e il recupero. Uno strumento comunemente utilizzato è MarkItDown. Supporta PDF, PowerPoint e molti altri formati di file e può convertire il contenuto nel formato Markdown, facilitando la strutturazione durante il processo di chunking.
  3. Arricchimento: Rimuovere i contenuti di disturbo e aggiungere metadati utili ai dati, ad esempio il titolo del documento all'inizio, in modo che sia disponibile durante il processo di chunking.
  4. Filtrazione: Rimuovere tutti i documenti irrilevanti o di scarso valore che non supportano il caso d'uso.
  5. Chunking: Dividere i dati puliti in chunk più piccoli e logici per migliorare le prestazioni di recupero. Framework come LangChain offrono diversi metodi di chunking, ad esempio LangChain CharacterTextSplitter.
  6. Embedding: Convertire ogni chunk in un vettore numerico e memorizzarlo in un database vettoriale, rendendolo ricercabile per il sistema RAG.
Leggi l'articolo originale →
← Torna alle news