LlamaParse - Document Parsing für RAG Cheatsheet
LlamaParse ist ein Document-Parsing-Service vom LlamaIndex-Team, speziell für LLM- und RAG-Pipelines gebaut. Der Fokus liegt auf dem schweren Fall: PDFs mit komplexen Tabellen, mehrspaltigem Layout, Abbildungen und eingebetteten Diagrammen, die generische Text-Extractoren in unbrauchbaren Text flachmachen. Er gibt sauberes Markdown aus, das Struktur erhält, und seine unterscheidende Funktion sind natürlichsprachliche Parsing-Anweisungen — du beschreibst, wie das Dokument angeordnet ist und was damit zu tun ist, anstatt Extraktionsregeln zu konfigurieren.
LlamaParse ist ein gehosteter Service mit kostenlosen Tier (API-Schlüssel erforderlich). Für vollständig lokales Parsing siehe Docling oder Marker.
Installation
| Methode | Befehl |
|---|
| pip | pip install llama-parse |
| Mit LlamaIndex | pip install llama-index llama-parse |
| API-Schlüssel | export LLAMA_CLOUD_API_KEY="llx-..." |
| Überprüfung | python -c "from llama_parse import LlamaParse; print('ok')" |
Grundlegendes Parsing
from llama_parse import LlamaParse
parser = LlamaParse(result_type="markdown")
documents = parser.load_data("./report.pdf")
print(documents[0].text)
| Parameter | Zweck |
|---|
result_type | "markdown" (Struktur-erhaltend) oder "text" |
num_workers | Parallele Seiten-Verarbeitung |
verbose | Progress-Ausgabe |
language | Document-Sprache-Hinweis |
parsing_instruction | Natürlichsprachliche Lenkung (unten) |
Parsing-Anweisungen (der Differentiator)
parser = LlamaParse(
result_type="markdown",
parsing_instruction="""
Dies ist ein Finanzbericht. Bewahre alle Tabellen als Markdown-Tabellen.
Für jedes Diagramm, schreibe einen einzigen Absatz, der den Trend zeigt, den es darstellt.
Ignoriere Seitenkopfzeilen und Fußzeilen.
""",
)
Du beschreibst das Dokument und die gewünschte Handhabung in normaler Sprache, anstatt Extraktionscode zu schreiben — nützlich für domänenspezifische Layouts (Rechnungen, wissenschaftliche Arbeiten, Verträge), wo generische Parser schlecht abschneiden.
Async & Batch
import asyncio
async def parse_many(paths):
parser = LlamaParse(result_type="markdown", num_workers=8)
return await parser.aload_data(paths)
docs = asyncio.run(parse_many(["a.pdf", "b.pdf", "c.pdf"]))
| Methode | Verwendung |
|---|
load_data(path) | Single-Datei, synchron |
aload_data([paths]) | Async, mehrere Dateien |
get_json_result(path) | Strukturiertes JSON mit Seiten-Metadaten |
get_images(...) | Extrahiere eingebettete Bilder |
| Format | Anmerkung |
|---|
| PDF | Primäres Ziel, einschließlich gescannter (OCR) |
| DOCX / PPTX / XLSX | Office-Formate |
| HTML | Web-Dokumente |
| Bilder | PNG/JPEG via OCR |
Verdrahtung in eine RAG-Pipeline
from llama_parse import LlamaParse
from llama_index.core import VectorStoreIndex
from llama_index.core.node_parser import MarkdownElementNodeParser
docs = LlamaParse(result_type="markdown").load_data("./manual.pdf")
# Markdown-bewusste Chunking hält Tabellen und Abschnitte intakt
node_parser = MarkdownElementNodeParser()
nodes = node_parser.get_nodes_from_documents(docs)
index = VectorStoreIndex(nodes)
Die Kopplung von Markdown-Ausgabe mit einem Markdown-bewussten Node-Parser ist der Sinn: Tabellen überleben Parsing und Chunking, wo die meisten RAG-Pipelines tabulare Fakten verlieren.
Tabellen gut handhaben
| Technik | Warum |
|---|
result_type="markdown" | Tabellen werden Markdown-Gitter |
| Parsing-Anweisung für Tabellen | Erzwinge konsistente Tabellenhandhabung |
MarkdownElementNodeParser | Hält eine Tabelle in einem Chunk |
| Reihe-pro-Satz Serialisierung | Macht einzelne Zeilen abrufbar |
Kosten & Praktische Anmerkungen
| Überlegung | Detail |
|---|
| Gehosteter Service | Dokumente werden zu LlamaCloud gesendet |
| Kostenlos Tier | Limitierte Seiten pro Tag |
| Caching | Erneutes Parsen der gleichen Datei kann Ergebnisse wiederverwenden |
| Datenschutz | Für sensible Dokumente bevorzuge lokale Parser |
LlamaParse vs lokale Parser
| Aspekt | LlamaParse | Docling | Marker |
|---|
| Hosting | Cloud-Service | Lokal | Lokal |
| Komplexe Tabellen | Sehr stark | Stark | Gut |
| Benutzerdefinierte Anweisungen | Natürlichsprache | Config | Config |
| Datenschutz | Daten verlassen deine Machine | Vollständig lokal | Vollständig lokal |
| Bestes für | Schwere Layouts, schnelle Ergebnisse | Self-Hosted RAG Ingestion | GPU-Bulk-Konvertierung |
Für Datenschutz-sensitive Corpora verwende Docling; für Bulk-lokale Konvertierung verwende Marker.
Ressourcen