0Pricing
Learn AI with Python · Lektion

Dokumente laden, aufteilen und mit Embeddings versehen

PyPDFLoader, RecursiveCharacterTextSplitter, OpenAIEmbeddings, Strategien für Embeddings.

Dokumente laden, aufteilen und mit Embeddings versehen ist eine kostenlose Learn AI with Python-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Learn AI with Python-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Learn AI with Python-Kurs umfasst insgesamt 4 Lektionen.

Die RAG-Ingestion-Pipeline

Bevor ein LLM aus Ihren Dokumenten antworten kann, müssen Sie sie laden, aufteilen und einbetten. Diese Lektion behandelt die Ingestion-Pipeline, die Grundlage jedes Retrieval-Augmented-Generation-Systems.

pip install langchain-community pypdf langchain-openai

Eine PDF-Datei laden

PyPDFLoader liest eine PDF-Datei und gibt eine Liste von Document-Objekten zurück – eines pro Seite. Jedes Document enthält page_content (den Text) und metadata (Quelle und Seitennummer).

from langchain_community.document_loaders import PyPDFLoader

loader = PyPDFLoader("handbook.pdf")
docs = loader.load()
print(len(docs), "pages")

Warum Dokumente aufteilen?

Ganze Seiten sind oft zu groß, um eingebettet oder in einen Prompt aufgenommen zu werden. Beim Aufteilen wird der Text in kleinere Chunks zerlegt, die sich problemlos einbetten lassen. So kann der Retriever nur die relevante Passage statt einer ganzen Seite zurückgeben.

RecursiveCharacterTextSplitter

Der empfohlene Splitter ist RecursiveCharacterTextSplitter. Er versucht zunächst, an Absätzen, dann an Sätzen und anschließend an Wörtern zu teilen. Dadurch bleiben die Chunks semantisch zusammenhängend, statt mitten im Wort abgeschnitten zu werden.

from langchain_text_splitters import RecursiveCharacterTextSplitter

splitter = RecursiveCharacterTextSplitter(
    chunk_size=1000,
    chunk_overlap=200
)

chunk_size und chunk_overlap

chunk_size legt die maximale Zeichenzahl pro Chunk fest; chunk_overlap wiederholt Text zwischen benachbarten Chunks, damit an den Grenzen kein Kontext verloren geht. Ein Split von 1000/200 ist ein gängiger Ausgangspunkt.

chunks = splitter.split_documents(docs)
print(len(chunks), "chunks")
print(chunks[0].page_content[:120])

Die Chunk-Größe abstimmen

Kleine Chunks ermöglichen eine präzise Suche, können aber umgebenden Kontext vermissen lassen. Große Chunks bewahren den Kontext, verwässern jedoch die Relevanz und kosten mehr Tokens. Eine Überlappung von 10–20 % der Chunk-Größe ist ein guter Standardwert, um Grenzen zu überbrücken.

Was sind Embeddings?

Ein Embedding wandelt Text in einen Vektor mit fester Länge aus Zahlen um, der die Bedeutung erfasst. Ähnliche Texte erzeugen nahe beieinanderliegende Vektoren. So können wir anhand semantischer Ähnlichkeit statt anhand von Schlüsselwörtern suchen.

OpenAIEmbeddings

Erstellen Sie Embeddings mit OpenAIEmbeddings. Das Modell text-embedding-3-small ist kostengünstig und leistungsfähig. embed_query bettet einen String ein; embed_documents bettet eine Liste ein.

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))  # 1536

Einen Batch einbetten

Bilden Sie für alle Ihre Chunks gleichzeitig Embeddings. Jeder Chunk wird zu einem Vektor, den Sie später für eine schnelle Ähnlichkeitssuche in einer Vektordatenbank speichern.

texts = [c.page_content for c in chunks]
vectors = embeddings.embed_documents(texts)
print(len(vectors), "vectors of dim", len(vectors[0]))

Die Kosten für Embeddings schätzen

Embeddings werden pro Token abgerechnet. Schätzen Sie die Gesamtzahl der Tokens über alle Chunks und multiplizieren Sie sie anschließend mit dem Preis pro 1.000 Tokens. Wenn Sie vor dem Einbetten zählen, vermeiden Sie unerwartete Kosten bei großen Korpora.

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)

Zusammenfassung der Pipeline

Der Ingestion-Ablauf: Dokumente laden, in überlappende Chunks aufteilen, jeden Chunk in einen Vektor einbetten und sie in der nächsten Lektion speichern. Eine gute Chunk-Aufteilung und ein Kostenbewusstsein an dieser Stelle bestimmen die Qualität und den Preis des gesamten RAG-Systems.

Kurzer Test

Testen Sie Ihr Wissen über Ingestion.

Zusammenfassung: Laden, Aufteilen, Einbetten

Sie haben Dokumente mit PyPDFLoader geladen, mit RecursiveCharacterTextSplitter sowie chunk_size und chunk_overlap in Chunks aufgeteilt und mit OpenAIEmbeddings in Vektoren umgewandelt. Außerdem haben Sie gelernt, die Kosten für Embeddings pro Token zu schätzen, bevor Sie einen großen Korpus verarbeiten.

Häufig gestellte Fragen

Ist die Lektion „Dokumente laden, aufteilen und mit Embeddings versehen“ kostenlos?

Ja — der vollständige Text von „Dokumente laden, aufteilen und mit Embeddings versehen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Learn AI with Python-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Learn AI with Python-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Dokumente laden, aufteilen und mit Embeddings versehen“?

PyPDFLoader, RecursiveCharacterTextSplitter, OpenAIEmbeddings, Strategien für Embeddings. Du übst Learn AI with Python mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Learn AI with Python zu starten?

Keine Vorkenntnisse erforderlich. Learn AI with Python auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.

Wie lange dauert die Lektion „Dokumente laden, aufteilen und mit Embeddings versehen“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Learn AI with Python-Lektion Code schreiben und ausführen?

Ja. Jede Learn AI with Python-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. LangChain-Architektur und LCEL
  2. Dokumente laden, aufteilen und mit Embeddings versehen
  3. Vektorspeicher: Chroma und FAISS
  4. Ein RAG-Frage-Antwort-System von Anfang bis Ende erstellen
← Zurück zu Learn AI with Python