Innlasting, oppdeling og embedding av dokumenter
PyPDFLoader, RecursiveCharacterTextSplitter, OpenAIEmbeddings og strategier for embedding.
Innlasting, oppdeling og embedding av dokumenter er en gratis leksjon i Lær AI med Python på CoddyKit. Dette er leksjon 2 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Lær AI med Python, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Lær AI med Python inneholder totalt 4 leksjoner.
RAG-pipeline for datainntak
Før en LLM kan svare ut fra dokumentene dine, må du laste inn, dele opp og embedde dem. Denne leksjonen dekker denne inntakspipelinen, som er grunnlaget for alle Retrieval-Augmented Generation-systemer.
pip install langchain-community pypdf langchain-openaiLaste inn en PDF
PyPDFLoader leser en PDF og returnerer en liste med Document-objekter, ett per side. Hvert Document har page_content (teksten) og metadata (kilde og sidenummer).
from langchain_community.document_loaders import PyPDFLoader
loader = PyPDFLoader("handbook.pdf")
docs = loader.load()
print(len(docs), "pages")Hvorfor dele opp dokumenter?
Hele sider er ofte for store til å embeddes eller få plass i en prompt. Oppdeling bryter teksten ned i mindre chunker som kan embeddes på en god måte, og lar hentingen returnere bare det relevante avsnittet i stedet for en hel side.
RecursiveCharacterTextSplitter
Den anbefalte splitteren er RecursiveCharacterTextSplitter. Den forsøker først å dele opp etter avsnitt, deretter setninger og til slutt ord, slik at chunkene forblir semantisk sammenhengende i stedet for å bli kuttet midt i et ord.
from langchain_text_splitters import RecursiveCharacterTextSplitter
splitter = RecursiveCharacterTextSplitter(
chunk_size=1000,
chunk_overlap=200
)chunk_size og chunk_overlap
chunk_size angir maksimalt antall tegn per chunk, mens chunk_overlap gjentar noe tekst mellom nabochunkene, slik at kontekst ikke går tapt ved grensene. En oppdeling på 1000/200 er et vanlig utgangspunkt.
chunks = splitter.split_documents(docs)
print(len(chunks), "chunks")
print(chunks[0].page_content[:120])Justere chunk-størrelsen
Små chunker gir presis henting, men kan gå glipp av omkringliggende kontekst. Store chunker bevarer konteksten, men svekker relevansen og koster flere tokens. Et overlapp på 10–20 % av chunk-størrelsen er et godt utgangspunkt for å bygge bro over grensene.
Hva er embeddinger?
En embedding omdanner tekst til en vektor med fast lengde som fanger opp betydningen. Tekster med lignende betydning gir vektorer som ligger nær hverandre. Dette gjør det mulig å søke etter semantisk likhet i stedet for nøkkelord.
OpenAIEmbeddings
Opprett embeddinger med OpenAIEmbeddings. Modellen text-embedding-3-small er rimelig og effektiv. embed_query embedder én streng, mens embed_documents embedder en liste.
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)) # 1536Embedde en batch
Embedde alle chunkene samtidig. Hver chunk blir en vektor som du senere lagrer i en vektordatabase for raskt likhetssøk.
texts = [c.page_content for c in chunks]
vectors = embeddings.embed_documents(texts)
print(len(vectors), "vectors of dim", len(vectors[0]))Beregne kostnaden for embedding
Embeddinger faktureres per token. Beregn totalt antall tokens i alle chunkene, og multipliser deretter med prisen per 1K tokens. Hvis du teller før embedding, unngår du uventede kostnader for store korpus.
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)Sammendrag av pipelinen
Arbeidsflyten for datainntak er: laste inn dokumenter, dele opp i overlappende chunker, embedde hver chunk til en vektor og (i neste leksjon) lagre dem. God oppdeling og kostnadsbevissthet på dette stadiet avgjør kvaliteten og kostnaden for hele RAG-systemet.
Kort sjekk
Test kunnskapen din om datainntak.
Oppsummering: Laste inn, dele opp og embedde
Du brukte PyPDFLoader til å laste inn dokumenter, RecursiveCharacterTextSplitter med chunk_size og chunk_overlap til å dele dem opp i chunker, og OpenAIEmbeddings til å omdanne chunkene til vektorer. Du lærte også å beregne kostnaden for embedding per token før du behandler et stort korpus.
Lær deg Python med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 53
- Leksjoner
- 225
Ofte stilte spørsmål
Er leksjonen «Innlasting, oppdeling og embedding av dokumenter» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Lær AI med Python, inkludert «Innlasting, oppdeling og embedding av dokumenter», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Lær AI med Python inneholder totalt 4 leksjoner.
Hva lærer jeg i «Innlasting, oppdeling og embedding av dokumenter»?
PyPDFLoader, RecursiveCharacterTextSplitter, OpenAIEmbeddings og strategier for embedding. Du øver på Lær AI med Python med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Lær AI med Python?
Ingen tidligere erfaring er nødvendig. Lær AI med Python på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.
Hvor lang tid tar leksjonen «Innlasting, oppdeling og embedding av dokumenter»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Lær AI med Python-leksjonen?
Ja. Alle Lær AI med Python-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- LangChain-arkitektur og LCEL
- Innlasting, oppdeling og embedding av dokumenter
- Vektorlagre: Chroma og FAISS
- Bygging av et komplett RAG-spørsmål-og-svar-system