LlamaParse - Analisi di Documenti per RAG Cheatsheet
LlamaParse è un servizio di analisi di documenti dal team LlamaIndex, costruito specificamente per pipeline LLM e RAG. Il suo focus è il caso difficile: PDF con tabelle complesse, layout multi-colonna, figure e grafici incorporati che gli estrattori di testo generico appiattiscono in testo inutilizzabile. Output Markdown pulito che preserva la struttura, e la sua caratteristica distintiva è istruzioni di analisi in linguaggio naturale — descrivi come il documento è disposto e cosa farvi, piuttosto che configurare regole di estrazione.
LlamaParse è un servizio hosted con un tier gratuito (chiave API richiesta). Per analisi completamente locale vedi Docling o Marker.
Installazione
| Metodo | Comando |
|---|
| pip | pip install llama-parse |
| Con LlamaIndex | pip install llama-index llama-parse |
| Chiave API | export LLAMA_CLOUD_API_KEY="llx-..." |
| Verifica | python -c "from llama_parse import LlamaParse; print('ok')" |
Analisi di Base
from llama_parse import LlamaParse
parser = LlamaParse(result_type="markdown")
documents = parser.load_data("./report.pdf")
print(documents[0].text)
| Parametro | Scopo |
|---|
result_type | "markdown" (che preserva la struttura) o "text" |
num_workers | Elaborazione parallela di pagine |
verbose | Output di progresso |
language | Suggerimento della lingua del documento |
parsing_instruction | Guida in linguaggio naturale (sotto) |
Istruzioni di Analisi (il differenziatore)
parser = LlamaParse(
result_type="markdown",
parsing_instruction="""
Questo è un report finanziario. Preserva tutte le tabelle come tabelle Markdown.
Per ogni grafico, scrivi una descrizione di un paragrafo della tendenza che mostra.
Ignora intestazioni e piè di pagina.
""",
)
Descrivi il documento e la gestione desiderata in linguaggio ordinario piuttosto che scrivere codice di estrazione — utile per layout specifici del dominio (fatture, articoli scientifici, contratti legali) dove i parser generici fanno male.
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"]))
| Metodo | Usa |
|---|
load_data(path) | File singolo, sincrone |
aload_data([paths]) | Async, file multipli |
get_json_result(path) | JSON strutturato con metadati di pagina |
get_images(...) | Estrai immagini incorporate |
| Formato | Nota |
|---|
| PDF | Target primario, inclusi scansionati (OCR) |
| DOCX / PPTX / XLSX | Formati Office |
| HTML | Documenti web |
| Immagini | PNG/JPEG via OCR |
Collegare in Un Pipeline RAG
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")
# La chunking consapevole di Markdown mantiene tabelle e sezioni intatte
node_parser = MarkdownElementNodeParser()
nodes = node_parser.get_nodes_from_documents(docs)
index = VectorStoreIndex(nodes)
Accoppiare l”output Markdown con un node parser consapevole di Markdown è il punto: le tabelle sopravvivono all”analisi e al chunking, che è dove la maggior parte dei pipeline RAG perdono i fatti tabulari.
Gestione di Tabelle Bene
| Tecnica | Perché |
|---|
result_type="markdown" | Le tabelle diventano griglie Markdown |
| Istruzione di analisi per tabelle | Forza una gestione coerente delle tabelle |
MarkdownElementNodeParser | Mantiene una tabella in un chunk |
| Serializzazione riga-per-frase | Rende singole righe recuperabili |
Costo & Note Pratiche
| Considerazione | Dettaglio |
|---|
| Servizio hosted | I documenti sono inviati a LlamaCloud |
| Tier gratuito | Pagine limitate al giorno |
| Caching | Ri-analizzare lo stesso file può riutilizzare i risultati |
| Privacy | Per documenti sensibili preferisci parser locali |
LlamaParse vs Parser Locali
| Aspetto | LlamaParse | Docling | Marker |
|---|
| Hosting | Servizio cloud | Locale | Locale |
| Tabelle complesse | Molto forte | Forte | Buono |
| Istruzioni custom | Linguaggio naturale | Config | Config |
| Privacy | I dati lasciano la tua macchina | Completamente locale | Completamente locale |
| Migliore per | Layout difficili, risultati veloci | Ingestione RAG auto-hosted | Conversione bulk locale GPU |
Per corpora sensibili alla privacy usa Docling; per conversione bulk locale usa Marker.
Risorse