Caricamento, suddivisione ed embedding dei documenti
PyPDFLoader, RecursiveCharacterTextSplitter, OpenAIEmbeddings, strategie di embedding
Caricamento, suddivisione ed embedding dei documenti è una lezione Learn AI with Python 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 Learn AI with Python, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Learn AI with Python include 4 lezioni in totale.
La pipeline di ingestione RAG
Prima che un LLM possa rispondere usando i suoi documenti, deve caricarli, suddividerli e crearne gli embedding. Questa lezione illustra la pipeline di ingestione, la base di ogni sistema di Retrieval-Augmented Generation.
pip install langchain-community pypdf langchain-openaiCaricare un PDF
PyPDFLoader legge un PDF e restituisce un elenco di oggetti Document, uno per pagina. Ogni Document contiene page_content (il testo) e metadata (origine e numero di pagina).
from langchain_community.document_loaders import PyPDFLoader
loader = PyPDFLoader("handbook.pdf")
docs = loader.load()
print(len(docs), "pages")Perché suddividere i documenti?
Le pagine intere sono spesso troppo grandi per creare embedding o per entrare in un prompt. La suddivisione separa il testo in chunk più piccoli, facili da sottoporre a embedding, e consente al recupero di restituire solo il passaggio pertinente anziché un'intera pagina.
RecursiveCharacterTextSplitter
Lo splitter consigliato è RecursiveCharacterTextSplitter. Prova a suddividere prima per paragrafi, poi per frasi e infine per parole, mantenendo la coerenza semantica dei chunk invece di interromperli a metà di una parola.
from langchain_text_splitters import RecursiveCharacterTextSplitter
splitter = RecursiveCharacterTextSplitter(
chunk_size=1000,
chunk_overlap=200
)chunk_size e chunk_overlap
chunk_size imposta il numero massimo di caratteri per chunk; chunk_overlap ripete una parte del testo tra i chunk adiacenti, così il contesto non si perde ai confini. Una suddivisione 1000/200 è un punto di partenza comune.
chunks = splitter.split_documents(docs)
print(len(chunks), "chunks")
print(chunks[0].page_content[:120])Regolare la dimensione dei chunk
I chunk piccoli offrono un recupero preciso, ma possono perdere il contesto circostante. I chunk grandi conservano il contesto, ma riducono la pertinenza e consumano più token. Una sovrapposizione pari al 10-20% della dimensione del chunk è un buon valore predefinito per collegare i confini.
Che cosa sono gli embedding?
Un embedding trasforma il testo in un vettore di numeri a lunghezza fissa che ne cattura il significato. I testi simili producono vettori vicini. Questo consente di cercare in base alla similarità semantica invece che alle parole chiave.
OpenAIEmbeddings
Crei gli embedding con OpenAIEmbeddings. Il modello text-embedding-3-small è economico ed efficace. embed_query crea l'embedding di una stringa; embed_documents crea gli embedding di un elenco.
from langchain_openai import OpenAIEmbeddings
embeddings = OpenAIEmbeddings(model="text-embedding-3-small")
vector = embeddings.embed_query("How do I reset my password?")
print(len(vector)) # 1536Creare embedding in batch
Crei gli embedding di tutti i chunk in una sola volta. Ogni chunk diventa un vettore che in seguito verrà memorizzato in un database vettoriale per eseguire rapidamente la ricerca per similarità.
texts = [c.page_content for c in chunks]
vectors = embeddings.embed_documents(texts)
print(len(vectors), "vectors of dim", len(vectors[0]))Stimare il costo degli embedding
Gli embedding vengono fatturati per token. Stimi il numero totale di token di tutti i chunk, quindi lo moltiplichi per il prezzo per 1.000 token. Contare i token prima di creare gli embedding evita costi imprevisti sui corpus di grandi dimensioni.
import tiktoken
enc = tiktoken.get_encoding("cl100k_base")
total = sum(len(enc.encode(c.page_content)) for c in chunks)
price_per_1k = 0.00002
print("tokens:", total, "cost $:", total / 1000 * price_per_1k)Riepilogo della pipeline
Il flusso di ingestione consiste nel caricare i documenti, suddividerli in chunk sovrapposti, creare l'embedding di ogni chunk trasformandolo in un vettore e, nella lezione successiva, memorizzarli. Una buona suddivisione e l'attenzione ai costi determinano la qualità e il prezzo dell'intero sistema RAG.
Verifica rapida
Verifichi la sua conoscenza dell'ingestione.
Riepilogo: caricamento, suddivisione ed embedding
Ha usato PyPDFLoader per caricare i documenti, RecursiveCharacterTextSplitter con chunk_size e chunk_overlap per suddividerli in chunk e OpenAIEmbeddings per trasformare i chunk in vettori. Ha inoltre imparato a stimare il costo degli embedding per token prima di elaborare un corpus di grandi dimensioni.
Domande Frequenti
La lezione «Caricamento, suddivisione ed embedding dei documenti» è gratuita?
Sì — il testo completo di «Caricamento, suddivisione ed embedding dei documenti» è 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 Learn AI with Python, passa a CoddyKit PRO. Il corso Learn AI with Python include 4 lezioni in totale.
Cosa imparerò in «Caricamento, suddivisione ed embedding dei documenti»?
PyPDFLoader, RecursiveCharacterTextSplitter, OpenAIEmbeddings, strategie di embedding Eserciti Learn AI with Python 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 Learn AI with Python?
Non è richiesta alcuna esperienza precedente. Learn AI with Python 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 «Caricamento, suddivisione ed embedding dei documenti»?
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 Learn AI with Python?
Sì. Ogni lezione Learn AI with Python 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
- Architettura di LangChain e LCEL
- Caricamento, suddivisione ed embedding dei documenti
- Vector store: Chroma e FAISS
- Creazione end-to-end di un sistema RAG di domande e risposte