LlamaIndex
LlamaIndex إطار عمل مفتوح المصدر يحمّل البيانات الخاصة ويفهرسها ويسترجعها لنماذج LLM، ويدعم مسارات عمل RAG ووكلاء المستندات.
LlamaIndex إطار عمل مفتوح المصدر لربط نماذج اللغة الكبيرة (LLMs) بالبيانات الخاصة: فهو يحمّل المستندات وقواعد البيانات وواجهات API، ويفهرس محتواها، ويسترجع المقاطع التي يحتاج إليها النموذج للإجابة عن سؤال. وتستخدم معظم التطبيقات المبنية به التوليد المعزز بالاسترجاع (RAG)، مثل المساعدين الذين يجيبون استنادًا إلى أدلة الشركة أو عقودها أو تذاكر الدعم، ووكلاء الذكاء الاصطناعي الذين يقرؤون المستندات ويتخذون إجراءات بناءً عليها. أطلق Jerry Liu المشروع باسم GPT Index في نوفمبر 2022، ثم أعاد تسميته إلى LlamaIndex في فبراير 2023. يتوفر إطار LlamaIndex بلغتي Python وTypeScript، كما تدير الشركة LlamaParse، وهي خدمة مستضافة لتحويل ملفات PDF والجداول والشرائح المعقدة إلى نص ملائم للفهرسة.
آلية عمل LlamaIndex#
يتألف تطبيق LlamaIndex من مرحلتين. تعمل مرحلة الاستيعاب مرة واحدة عند كل تحديث للبيانات: إذ تحمّل الموصلات من LlamaHub الملفات والخدمات في صورة كائنات Document، ويقسّم محلّل العُقد كل كائن إلى أجزاء تُسمى Nodes، ثم يحوّل نموذج التضمين كل Node إلى متجه، أي تضمينها، ويخزنه في فهرس. أما مرحلة الاستعلام فتعمل مع كل سؤال: يعثر مسترجِع على أقرب Nodes إلى السؤال، ثم تعيد معالجات لاحقة مثل أداة إعادة الترتيب ترتيبها أو تصفيتها، ويضع مُركّب الاستجابة العناصر المتبقية في نافذة سياق LLM مع تعليمات للإجابة استنادًا إليها.
يُعد VectorStoreIndex الخيار الافتراضي، إذ يخزن التضمينات في الذاكرة أو في قاعدة بيانات متجهية خارجية. وترسل الفهارس الأخرى كل جزء إلى النموذج لإعداد ملخصات، أو تنشئ رسمًا بيانيًا للمعرفة للكيانات والعلاقات من أجل الاستعلامات على نمط GraphRAG، أو تطابق الكلمات المفتاحية. يجيب محرك الاستعلام عن سؤال واحد، ويحافظ محرك المحادثة على سياق المحادثة، بينما تربط Workflows، وهي طبقة التنسيق القائمة على الأحداث في LlamaIndex، الاسترجاع والأدوات وعدة وكلاء في أنظمة RAG الوكيلة التي تحدد ما ينبغي البحث عنه وموعد البحث.
فهرسة الصور بحسب محتواها#
يعمل الاسترجاع مع أي محتوى يمكن تمثيله نصيًا. يحوّل تشغيل Ultralytics YOLO26 على مجموعة صور كل صورة إلى وصف قابل للبحث: يعيد Results.verbose() أعداد كل فئة في نتيجة وضع التنبؤ على هيئة سلسلة قصيرة، وتصبح هذه السلسلة Document تحتفظ بياناتها الوصفية بعنوان URL للصورة. وبعد ذلك يتيح نموذج تضمين محلي من Hugging Face تشغيل الفهرس دون مفتاح API:
from llama_index.core import Document, Settings, VectorStoreIndex
from llama_index.embeddings.huggingface import HuggingFaceEmbedding
from ultralytics import YOLO
Settings.embed_model = HuggingFaceEmbedding(model_name="BAAI/bge-small-en-v1.5")
model = YOLO("yolo26n.pt")
# Describe each image by its detections; the URL stays in metadata and out of the embedding
docs = []
for url in ["https://ultralytics.com/images/bus.jpg", "https://ultralytics.com/images/zidane.jpg"]:
results = model(url)
text = f"A photo containing {results[0].verbose()}"
docs.append(Document(text=text, metadata={"image": url}, excluded_embed_metadata_keys=["image"]))
# Index the descriptions, then retrieve the image that best matches a question
index = VectorStoreIndex.from_documents(docs)
retriever = index.as_retriever(similarity_top_k=1)
nodes = retriever.retrieve("Which photo shows a bus?")
print(nodes[0].node.metadata["image"], round(nodes[0].score, 3))يعيد المسترجِع صورة الحافلة مع درجة التشابه الجيبي، بعد العثور عليها من خلال وصف الكاشف لا اسم الملف. وتتيح إضافة مُركّب استجابة الإجابة نثرًا عن أسئلة تتعلق بالمجموعة، وهو النمط الذي تقوم عليه أنظمة RAG متعددة الوسائط التي تجمع الرؤية الحاسوبية والبحث في المستندات.
LlamaIndex والأدوات ذات الصلة#
- LangChain: إطار عام لتطبيقات LLM والوكلاء، مع مجموعة واسعة من عمليات التكامل. يغطي كلا المشروعين الآن الاسترجاع والوكلاء؛ ويتعمق LlamaIndex أكثر في استيعاب البيانات وتحليلها وأنواع الفهارس، كما تستخدم الفرق مسترجعاته غالبًا داخل وكلاء LangChain أو LangGraph.
- قواعد البيانات المتجهية: تخزن المتجهات وتنفّذ البحث المتجهي. وتعمل LlamaIndex فوقها، فتحدد كيفية تحليل المستندات وتقسيمها إلى أجزاء وتضمينها واسترجاعها وتمريرها إلى النموذج، كما تدعم عشرات مخازن المتجهات بوصفها أنظمة خلفية.
- البحث الدلالي: خطوة الاسترجاع وحدها. وتضيف LlamaIndex التوليد، لتصل النتائج في صورة إجابة مرفقة بعُقد المصدر للاستشهاد بها.










