LlamaParse - تحليل المستندات ل RAG
LlamaParse هي خدمة تحليل المستندات من فريق LlamaIndex مبنية بشكل خاص لـ LLM و RAG pipelines. تركيزها هو الحالة الصعبة: PDFs مع جداول معقدة و تخطيطات متعددة الأعمدة و أشكال و مخططات مضمنة التي غالباً ما تسطحها أدوات استخراج النصوص العامة إلى نص غير قابل للاستخدام. إنها تخرج Markdown نظيفة تحافظ على البنية والميزة المميزة لها هي تعليمات التحليل في اللغة الطبيعية — تصف كيفية وضع المستند وما يجب فعله به بدلاً من إعداد قواعد الاستخراج.
LlamaParse هي خدمة مستضافة مع طبقة مجانية (يتطلب API key). لتحليل محلي بالكامل انظر Docling أو Marker.
التثبيت
| الطريقة | الأمر |
|---|
| pip | pip install llama-parse |
| مع LlamaIndex | pip install llama-index llama-parse |
| API key | export LLAMA_CLOUD_API_KEY="llx-..." |
| التحقق | python -c "from llama_parse import LlamaParse; print('ok')" |
التحليل الأساسي
from llama_parse import LlamaParse
parser = LlamaParse(result_type="markdown")
documents = parser.load_data("./report.pdf")
print(documents[0].text)
| المعامل | الغرض |
|---|
result_type | "markdown" (يحافظ على البنية) أو "text" |
num_workers | معالجة الصفحات المتوازية |
verbose | إخراج التقدم |
language | تلميح لغة المستند |
parsing_instruction | إرشادات اللغة الطبيعية (أدناه) |
تعليمات التحليل (المميز)
parser = LlamaParse(
result_type="markdown",
parsing_instruction="""
هذا تقرير مالي. الحفاظ على جميع الجداول كجداول Markdown.
لكل مخطط اكتب فقرة واحدة توصف الاتجاه الذي يظهره.
تجاهل رؤوس الصفحات والتذييلات.
""",
)
تصف المستند والمعالجة المرغوبة باللغة العادية بدلاً من كتابة كود الاستخراج — مفيد لـ domain-specific layouts (الفواتير والأوراق العلمية والعقود القانونية) حيث محلل عام تفعل بشكل سيء.
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"]))
| الطريقة | الاستخدام |
|---|
load_data(path) | ملف واحد و synchronous |
aload_data([paths]) | Async و ملفات متعددة |
get_json_result(path) | JSON منظم مع البيانات الوصفية للصفحة |
get_images(...) | استخراج الصور المضمنة |
المدخلات المدعومة
| الصيغة | ملاحظة |
|---|
| PDF | الهدف الأساسي بما فيها الممسوح ضوئياً (OCR) |
| DOCX / PPTX / XLSX | صيغ Office |
| HTML | مستندات الويب |
| الصور | PNG/JPEG عبر OCR |
الربط في 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-aware chunking يحافظ على الجداول والأقسام السليمة
node_parser = MarkdownElementNodeParser()
nodes = node_parser.get_nodes_from_documents(docs)
index = VectorStoreIndex(nodes)
إقران إخراج Markdown مع Markdown-aware node parser هو الهدف: الجداول البقاء تحليل و chunking وهذا حيث معظم RAG pipelines تفقد حقائق tabular.
التعامل مع الجداول جيداً
| التقنية | لماذا |
|---|
result_type="markdown" | الجداول تصبح Markdown grids |
| تعليم التحليل للجداول | فرض معالجة الجداول المتسقة |
MarkdownElementNodeParser | يحافظ على الجدول في chunk واحد |
| serialization Row-per-sentence | جعل الصفوف الفردية قابلة للاسترجاع |
التكلفة & ملاحظات عملية
| الاعتبار | التفاصيل |
|---|
| خدمة مستضافة | المستندات يتم إرسالها إلى LlamaCloud |
| طبقة مجانية | صفحات محدودة يومياً |
| التخزين مؤقتاً | إعادة تحليل نفس الملف يمكنها إعادة استخدام النتائج |
| الخصوصية | للمستندات الحساسة فضل parsers محلي |
LlamaParse مقابل Parsers المحلية
| الجانب | LlamaParse | Docling | Marker |
|---|
| الاستضافة | خدمة سحابة | محلي | محلي |
| جداول معقدة | قوية جداً | قوية | جيدة |
| تعليمات مخصصة | اللغة الطبيعية | Config | Config |
| الخصوصية | البيانات تترك جهازك | محلي بالكامل | محلي بالكامل |
| الأفضل للـ | تخطيطات صعبة وسريعة النتائج | Self-hosted RAG ingestion | تحويل bulk محلي GPU |
للمجموعات الحساسة خصوصياً استخدم Docling; لتحويل bulk محلي استخدم Marker.
الموارد