Läsa in, dela upp och bädda in dokument
PyPDFLoader, RecursiveCharacterTextSplitter, OpenAIEmbeddings, strategier för embeddingar.
Läsa in, dela upp och bädda in dokument är en gratis lektion i Lär Er AI med Python på CoddyKit. Detta är lektion 2 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Lär Er AI med Python, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Lär Er AI med Python innehåller totalt 4 lektioner.
RAG:s inläsningspipeline
Innan en LLM kan svara utifrån dina dokument måste du läsa in, dela upp och vektorisera dem. Den här lektionen behandlar denna inläsningspipeline, som utgör grunden för alla system för Retrieval-Augmented Generation.
pip install langchain-community pypdf langchain-openaiLäsa in en PDF
PyPDFLoader läser en PDF och returnerar en lista med Document-objekt, ett per sida. Varje Document har page_content (texten) och metadata (källa och sidnummer).
from langchain_community.document_loaders import PyPDFLoader
loader = PyPDFLoader("handbook.pdf")
docs = loader.load()
print(len(docs), "pages")Varför dela upp dokument?
Hela sidor är ofta för stora för att vektoriseras eller få plats i en prompt. Uppdelning bryter ned texten i mindre chunkar som kan vektoriseras effektivt och gör att hämtningen bara returnerar det relevanta stycket, inte en hel sida.
RecursiveCharacterTextSplitter
Den rekommenderade splittern är RecursiveCharacterTextSplitter. Den försöker först dela upp vid stycken, sedan vid meningar och därefter vid ord, så att chunkarna förblir semantiskt sammanhängande i stället för att kapas mitt i ett ord.
from langchain_text_splitters import RecursiveCharacterTextSplitter
splitter = RecursiveCharacterTextSplitter(
chunk_size=1000,
chunk_overlap=200
)chunk_size och chunk_overlap
chunk_size anger det maximala antalet tecken per chunk; chunk_overlap upprepar en del text mellan angränsande chunkar så att kontext inte går förlorad vid gränserna. En uppdelning på 1000/200 är en vanlig startpunkt.
chunks = splitter.split_documents(docs)
print(len(chunks), "chunks")
print(chunks[0].page_content[:120])Justera chunkstorleken
Små chunkar ger exakt hämtning men kan missa omgivande kontext. Stora chunkar bevarar kontexten men minskar relevansen och kostar fler tokens. En överlappning på 10–20 % av chunkstorleken är en bra standard för att överbrygga gränser.
Vad är vektorinbäddningar?
En vektorinbäddning omvandlar text till en vektor med ett fast antal tal som fångar betydelsen. Liknande texter ger närliggande vektorer. Det är detta som gör att vi kan söka efter semantisk likhet i stället för nyckelord.
OpenAIEmbeddings
Skapa vektorinbäddningar med OpenAIEmbeddings. Modellen text-embedding-3-small är billig och effektiv. embed_query bäddar in en sträng; embed_documents bäddar in en lista.
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)) # 1536Vektorisera en batch
Vektorisera alla dina chunkar på en gång. Varje chunk blir en vektor som du senare lagrar i en vektordatabas för snabb likhetssökning.
texts = [c.page_content for c in chunks]
vectors = embeddings.embed_documents(texts)
print(len(vectors), "vectors of dim", len(vectors[0]))Uppskatta kostnaden för vektorinbäddningar
Vektorinbäddningar debiteras per token. Uppskatta det totala antalet tokens i alla chunkar och multiplicera sedan med priset per 1 000 tokens. Genom att räkna före vektoriseringen undviker du oväntade kostnader för stora datamängder.
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)Sammanfattning av pipelinen
Inläsningsflödet är: läs in dokument, dela upp dem i överlappande chunkar, vektorisera varje chunk till en vektor och lagra dem (i nästa lektion). En bra uppdelning och medvetenhet om kostnaderna avgör kvaliteten och priset för hela RAG-systemet.
Snabbtest
Testa dina kunskaper om inläsning.
Sammanfattning: Läsa in, dela upp och vektorisera
Du använde PyPDFLoader för att läsa in dokument, RecursiveCharacterTextSplitter med chunk_size och chunk_overlap för att dela upp dem och OpenAIEmbeddings för att omvandla chunkarna till vektorer. Du lärde dig också att uppskatta kostnaden för vektorinbäddningar per token innan du bearbetar en stor datamängd.
Lär dig Python med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 53
- Lektioner
- 225
Vanliga frågor
Är lektionen ”Läsa in, dela upp och bädda in dokument” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Lär Er AI med Python, inklusive ”Läsa in, dela upp och bädda in dokument”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Lär Er AI med Python innehåller totalt 4 lektioner.
Vad lär jag mig i ”Läsa in, dela upp och bädda in dokument”?
PyPDFLoader, RecursiveCharacterTextSplitter, OpenAIEmbeddings, strategier för embeddingar. Ni övar på Lär Er AI med Python med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Lär Er AI med Python?
Du behöver inga förkunskaper. Utbildningen i Lär Er AI med Python på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.
Hur lång tid tar lektionen ”Läsa in, dela upp och bädda in dokument”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Lär Er AI med Python-lektionen?
Ja. Varje Lär Er AI med Python-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- LangChain-arkitektur och LCEL
- Läsa in, dela upp och bädda in dokument
- Vektorlagring: Chroma och FAISS
- Bygga ett RAG-system för frågor och svar från början till slut