Connect with us

الذكاء الاصطناعي

LlamaIndex: تعزيز تطبيقات LLM الخاصة بك ببيانات مخصصة بسهولة

mm
LlamaIndex

تعتبر النماذج اللغوية الكبيرة (LLMs) مثل سلسلة GPT من OpenAI مدربة على مجموعة متنوعة من البيانات المتاحة للجمهور، مما يظهر قدرات ملحوظة في توليد النص، والتلخيص، والاستجابة للأسئلة، والتخطيط. على الرغم من مرونتها، فإن السؤال المتكرر يتعلق بالتكامل السلس للنماذج هذه مع البيانات المخصصة أو الخاصة أو الملكية.

تُغمر الشركات والأفراد بالبيانات الفريدة والمخصصة، التي غالبًا ما يتم تخزينها في تطبيقات متنوعة مثل Notion وSlack وSalesforce، أو تخزينها في الملفات الشخصية. للاستفادة من LLMs لهذه البيانات المحددة، تم اقتراح وتجريب عدة منهجيات.

تمثل التعدين الدقيق أحد هذه النهج، ويتكون من تعديل أوزان النموذج لدمج المعرفة من مجموعات بيانات معينة. ومع ذلك، فإن هذا العملية ليست خالية من التحديات. إنها تتطلب جهدًا كبيرًا في تحضير البيانات، مع وجود إجراء تحسين صعب، مما يتطلب مستوى معينًا من الخبرة في تعلم الآلة. بالإضافة إلى ذلك، يمكن أن تكون الآثار المالية كبيرة، خاصة عند التعامل مع مجموعات بيانات كبيرة.

ظهر التعلم في السياق كبديل، يركز على صياغة الإدخالات والتحفيزات لتزويد LLM بالسياق اللازم لتحقيق مخرجات دقيقة. هذا النهج يقلل من الحاجة إلى إعادة تدريب النموذج على نطاق واسع، ويوفر وسيلة أكثر كفاءة وسهولة لدمج البيانات الخاصة.

ولكن العيب في هذا هو اعتماده على مهارة وخبرة المستخدم في هندسة التحفيز. بالإضافة إلى ذلك، قد لا يكون التعلم في السياق دائمًا دقيقًا أو موثوقًا به مثل التعدين الدقيق، خاصة عند التعامل مع بيانات متخصصة أو فنية. لا يضمن تدريب النموذج المسبق على مجموعة واسعة من نصوص الإنترنت فهم المصطلحات أو السياق المحدد، مما قد يؤدي إلى مخرجات غير دقيقة أو غير ذات صلة. هذا مشكلة خاصة عندما تكون البيانات الخاصة من مجال أو صناعة محددة.

علاوة على ذلك، فإن كمية السياق التي يمكن توفيرها في تحفيز واحد محدودة، ويمكن أن تتراجع أداء LLM مع زيادة تعقيد المهمة. هناك أيضًا تحديات الخصوصية وأمان البيانات، حيث يمكن أن تكون المعلومات المقدمة في التحفيز حساسة أو سرية.

مع استكشاف المجتمع هذه التقنيات، تكتسب أدوات مثل LlamaIndex الانتباه.

Llama Index

Llama Index

تم إطلاقه بواسطة جيري 刘، وهو عالم أبحاث سابقة في Uber. أثناء التجربة مع GPT-3 في الخريف الماضي، لاحظ 刘 حدود النموذج فيما يتعلق بمعالجة البيانات الخاصة، مثل الملفات الشخصية. أدت هذه الملاحظة إلى بدء مشروع مفتوح المصدر LlamaIndex.

جذب المشروع المستثمرين، وتم الحصول على $8.5 مليون في جولة تمويل البذور الأخيرة.

يُسهل LlamaIndex تعزيز LLMs ببيانات مخصصة، مما يغلق الفجوة بين النماذج المُتدربة مسبقًا وcases استخدام البيانات المخصصة. من خلال LlamaIndex، يمكن للمستخدمين الاستفادة من بياناتهم الخاصة مع LLMs، مما يفتح الباب أمام توليد المعرفة والاستدلال بالرؤى المُخصصة.

يمكن للمستخدمين تزويد LLMs ببياناتهم الخاصة بسهولة، مما يخلق بيئة حيث يتم توليد المعرفة والاستدلال بشكل عميق ومُخصّص. يعالج LlamaIndex قيود التعلم في السياق من خلال توفير منصة أكثر سهولة وأمانًا للتفاعل مع البيانات، مما يضمن أن حتى أولئك الذين لديهم خبرة محدودة في تعلم الآلة يمكنهم الاستفادة من إمكانيات LLMs الكاملة مع بياناتهم الخاصة.

المفاهيم والمعلومات الرئيسية

1. التوليد المعزز بالاسترجاع (RAG):

LlamaIndex RAG

LlamaIndex RAG

RAG هو عملية ثنائية تهدف إلى ربط LLMs ببيانات مخصصة، مما يعزز قدرة النموذج على تقديم استجابات أكثر دقة ومعلومات.

تتكون العملية من:

  • مرحلة الفهرسة: هذه هي المرحلة التحضيرية حيث يتم وضع الأساس لإنشاء قاعدة المعرفة.
LlamaIndex INDEXES

LlamaIndex Indexing

  • مرحلة الاستعلام: هنا، يتم البحث في قاعدة المعرفة للسياق المتعلق لمساعدة LLMs في الإجابة على الاستفسارات.
LlamaIndex QUERY STAGE

LlamaIndex Query Stage

رحلة الفهرسة مع LlamaIndex:

  • موصلات البيانات: يمكن اعتبار موصلات البيانات كجواز سفر بياناتك إلى LlamaIndex. تساعد في استيراد البيانات من مصادر ومواد متعددة، وتغلفها في تمثيل “مستند” بسيط. يمكن العثور على موصلات البيانات في LlamaHub، وهو مستودع مفتوح المصدر يحتوي على تحميلات البيانات. يتم إنشاء هذه التحميلات لضمان تجربة تشغيل و تشغيل سهلة مع أي تطبيق LlamaIndex.
Llama hub

LlamaIndex hub (https://llamahub.ai/)

  • المستندات / العقد: المستند مثل حقيبة سفر يمكن أن تحتوي على أنواع بيانات متنوعة – سواء كانت PDF أو مخرجات API أو إدخالات قاعدة بيانات. من ناحية أخرى، العقدة هي قطعة أو “شظية” من المستند، ومحسنة مع البيانات الوصفية والعلاقات مع العقد الأخرى، مما يضمن أساسًا قويًا لاسترجاع البيانات الدقيق فيما بعد.
  • فهرس البيانات: بعد استهلاك البيانات، يساعد LlamaIndex في فهرسة هذه البيانات إلى تنسيق قابل للاسترجاع. في الخلفية، يقوم بتفكيك المستندات الخام إلى تمثيلات متوسطة، ويتعلم التضمين المتجهي، ويفهم البيانات الوصفية. من بين الفهارس، غالبًا ما يكون “VectorStoreIndex” هو الخيار المفضل.

أنواع الفهارس في LlamaIndex: مفتاح البيانات المنظمة

يقدم LlamaIndex أنواعًا مختلفة من الفهارس، كل منها لمتطلبات وcases استخدام مختلفة. في قلب هذه الفهارس تقع “العقد” كما تمت مناقشتها أعلاه. دعونا نحاول فهم فهارس LlamaIndex مع آليتها وتطبيقاتها.

1. فهرس القائمة:

  • آلية: يرتب فهرس القائمة العقد بشكل متسلسل مثل قائمة. بعد تقطيع بيانات الإدخال إلى عقد، يتم ترتيبها بشكل خطي، جاهزة للاستعلام إما بشكل متسلسل أو من خلال الكلمات الرئيسية أو التضمين.
  • ميزة: يبرز هذا نوع الفهرس عندما تكون الحاجة هي الاستعلام التسلسلي. يضمن LlamaIndex استخدام بيانات الإدخال بالكامل، حتى لو تجاوزت حد توكن LLM، من خلال الاستعلام الذكي للنص من كل عقدة ورفinement الإجابات أثناء التنقل إلى أسفل القائمة.

2. فهرس مخزن المتجهات:

  • آلية: هنا، تتحول العقد إلى تضمين متجهي، يتم تخزينها إما محليًا أو في قاعدة بيانات متجهات متخصصة مثل Milvus. عند الاستعلام، يتم استرجاع العقدة الأعلى من حيث الشبه، ويتم توجيهها إلى مصمم الإجابة.
  • ميزة: إذا اعتمدت سير عملك على مقارنة النص من أجل الشبه Семантиكي عبر البحث بالمتجه، يمكن استخدام هذا الفهرس.

3. فهرس الشجرة:

  • آلية: في فهرس الشجرة، تتحول بيانات الإدخال إلى هيكل شجري، يتم بناؤه من الأسفل إلى الأعلى من العقد الورقية (شظايا البيانات الأصلية). تظهر العقد الأبوية كملخصات للعقد الورقية، يتم إنشاؤها باستخدام GPT. عند الاستعلام، يمكن للفهرس الشجري التنقل من العقدة الجذرية إلى العقد الورقية أو بناء الإجابات مباشرة من العقد الورقية المحددة.
  • ميزة: مع فهرس الشجرة، يصبح استعلام شظايا النص الطويل أكثر كفاءة، ويت簡 استخراج المعلومات من مقاطع النص المختلفة.

4. فهرس الكلمات الرئيسية:

  • آلية: يشكل خريطة الكلمات الرئيسية إلى العقد 핵심 فهرس الكلمات الرئيسية. عند الاستعلام، يتم نزع الكلمات الرئيسية من الاستعلام، ويتم إحضار العقد المapped فقط إلى الواجهة.
  • ميزة: عندما يكون لديك استفسارات مستخدم واضحة، يمكن استخدام فهرس الكلمات الرئيسية. على سبيل المثال، يصبح التصفح عبر وثائق الرعاية الصحية أكثر كفاءة عند التركيز فقط على الوثائق المتعلقة بـ COVID-19.

تثبيت LlamaIndex

تثبيت LlamaIndex هو عملية بسيطة. يمكنك اختيار تثبيته إما مباشرة من Pip أو من المصدر. (تأكد من تثبيت Python في نظامك أو يمكنك استخدام Google Colab)

1. التثبيت من Pip:

  • نفذ الأمر التالي:

    pip install llama-index

  • ملاحظة: خلال التثبيت، قد يقوم LlamaIndex بتنزيل وتخزين الملفات المحلية لبعض الحزم مثل NLTK و HuggingFace. لتحديد دليل لهذه الملفات، استخدم متغير البيئة “LLAMA_INDEX_CACHE_DIR”.

2. التثبيت من المصدر:

  • أولاً، استنسخ مستودع LlamaIndex من GitHub:

    git clone https://github.com/jerryjliu/llama_index.git

  • بمجرد الاستنساخ، انتقل إلى دليل المشروع.
  • ستحتاج إلى Poetry لإدارة التبعيات الحزمة.
  • الآن، قم بإنشاء بيئة افتراضية باستخدام Poetry:

    poetry shell

  • أخيرًا، قم بتثبيت متطلبات الحزمة الأساسية مع:

    poetry install

إعداد بيئتك ل LlamaIndex

1. إعداد OpenAI:

  • افتراضيًا، يستخدم LlamaIndex gpt-3.5-turbo من OpenAI لتوليد النص و text-embedding-ada-002 للاسترجاع والتضمين.
  • للاستفادة من هذا الإعداد، ستحتاج إلى OPENAI_API_KEY. احصل عليه عن طريق التسجيل في موقع OpenAI وإنشاء رمز_api جديد.
  • لديك مرونة في تخصيص النموذج اللغوي الكبير (LLM) الأساسي وفقًا لمتطلبات مشروعك. اعتمادًا على مورد LLM، قد تحتاج إلى مفاتيح ورموز بيئة إضافية.

2. إعداد البيئة المحلية:

  • إذا كنت تفضل عدم استخدام OpenAI، ينتقل LlamaIndex تلقائيًا إلى النماذج المحلية – LlamaCPP و llama2-chat-13B لتوليد النص، و BAAI/bge-small-en للاسترجاع والتضمين.
  • للاستفادة من LlamaCPP، اتبع دليل التثبيت. تأكد من تثبيت حزمة llama-cpp-python، ويفضل تجميعها لدعم وحدة معالجة الرسومات. سيتطلب هذا الإعداد حوالي 11.5 جيجابايت من الذاكرة عبر وحدة المعالجة المركزية ووحدة معالجة الرسومات.
  • للتضمين المحلي، قم بتنفيذ pip install sentence-transformers. سيتطلب هذا الإعداد المحلي حوالي 500 ميجابايت من الذاكرة.

مع هذه الإعدادات، يمكنك تخصيص بيئتك للاستفادة من قوة OpenAI أو تشغيل النماذج محليًا، مع التزام متطلبات مشروعك ومواردك.

حالة استخدام بسيطة: استعلام صفحات الويب مع LlamaIndex و OpenAI

هنا نموذج برمجي بسيط لتعريف كيفية استعلام صفحة ويب للحصول على رؤى محددة:

!pip install llama-index html2text


import os
from llama_index import VectorStoreIndex, SimpleWebPageReader

# أدخل مفتاح OpenAI الخاص بك أدناه:
os.environ["OPENAI_API_KEY"] = ""

# URL الذي تريد تحميله إلى مخزن المتجهات هنا:
url = "http://www.paulgraham.com/fr.html"

# قم بتحميل URL إلى المستندات (يمكن أن تكون هناك مستندات متعددة)
documents = SimpleWebPageReader(html_to_text=True).load_data([url])

# قم بإنشاء مخزن المتجهات من المستندات
index = VectorStoreIndex.from_documents(documents)

# قم بإنشاء محرك الاستعلام حتى نتمكن من طرح الأسئلة:
query_engine = index.as_query_engine()

# اطرح أي عدد من الأسئلة ضد البيانات المحملة:
response = query_engine.query("ما هي أفضل ثلاث نصائح من بول لجمع الأموال?")
print(response)
أفضل ثلاث نصائح من بول لجمع الأموال هي:
1. ابدأ برقم منخفض عند جمع الأموال في البداية. هذا يسمح بالمرونة ويزيد من فرص جمع المزيد من الأموال في المستقبل.
2. استهدف الربحية إذا كان ذلك ممكنًا. يكون لديك خطة للوصول إلى الربحية دون الاعتماد على تمويل إضافي يجعل شركة الاستарт أب أكثر جاذبية للمستثمرين.
3. لا ت tốiميز القيمة. بينما القيمة مهمة، ليست العامل الأكثر أهمية في جمع التمويل. ركز على الحصول على الأموال اللازمة وfinding مستثمرين جيدين بدلاً من ذلك.
Google Colab Llama Index Notebook

Google Colab Llama Index Notebook

باستخدام هذا النموذج، قمت بإنشاء أداة قوية لاستخراج معلومات محددة من صفحة ويب ببساطة عن طريق طرح سؤال. هذا مجرد لمحة عما يمكن تحقيقه مع LlamaIndex و OpenAI عند استعلام البيانات الويب.

LlamaIndex مقابل Langchain: الاختيار بناءً على هدفك

سيعتمد اختيارك بين LlamaIndex و Langchain على هدف مشروعك. إذا كنت تريد تطوير أداة بحث ذكية، فإن LlamaIndex هو خيار قوي، حيث يمتاز كآلية تخزين ذكية للبيانات للاسترجاع. من ناحية أخرى، إذا كنت تريد إنشاء نظام مثل ChatGPT مع قدرات البرنامج النصي، فإن Langchain هو خيارك. لا يقوم فقط بتمكين مثيلات متعددة من ChatGPT و LlamaIndex، بل juga يوسع الوظائف من خلال السماح ببناء وكلاء متعدد المهام. على سبيل المثال، مع Langchain، يمكنك إنشاء وكلاء قادرون على تنفيذ كود Python أثناء إجراء بحث جوجل في نفس الوقت. باختصار، بينما يمتاز LlamaIndex في التعامل مع البيانات، يدير Langchain أدوات متعددة لتقديم حل شامل.

LlamaIndex Logo Artwork created using Midjourney

LlamaIndex Logo Artwork created using Midjourney

لقد قمت بإنفاق الخمس سنوات الماضية في غمرة العالم المثير للاهتمام من تعلم الآلة والتعلم العميق. وقد أدت شغفي وخبرتي إلى المساهمة في أكثر من 50 مشروعًا للهندسة البرمجية متنوعًا، مع التركيز بشكل خاص على الذكاء الاصطناعي / تعلم الآلة. كما أدت فضولي المستمر إلى جذبي نحو معالجة اللغة الطبيعية، وهو مجال أنا حريص على استكشافه بشكل أكبر.