دمج تضمينات Hugging Face مع LlamaIndex: دليل المطور

دمج تضمينات Hugging Face مع LlamaIndex: دليل المطور

النقاط الرئيسية

  • نظرة عامة على الوحدة: llama_index.embeddings.huggingface تربط بين LlamaIndex ونماذج Hugging Face للحصول على تضمينات مخصصة.
  • التثبيت والإعداد: 1. قم بتثبيت الحزمة عبر pip. 2. قم بتكوين الوحدة في Python. 3. إنشاء نموذج التضمين. 4. الاختبار بنص عينة.
  • اختيار النموذج المناسب: أهمية اختيار النماذج بناءً على اللغة والمهمة، مع مراعاة الأداء والموارد.
  • أمثلة برمجية: توضح إنشاء التضمينات الأساسية، النماذج المخصصة، المعالجة المجمعة، والتكامل مع فهرس المتجهات.
  • نصائح التحسين: نماذج فعالة، معالجة مجمعة، تعديل حجم القطعة، تخصيص الموارد، التخزين المؤقت، ومراقبة النظام.
  • دمج واجهة برمجة تطبيقات LLM: خطوات الدمج مع واجهة برمجة تطبيقات LLM من Novita AI للمهام المتقدمة في معالجة اللغة الطبيعية.

مقدمة

دمج تضمينات Hugging Face مع LlamaIndex يفتح آفاقًا واسعة للمطورين العاملين على مهام معالجة اللغة الطبيعية المتقدمة. من خلال الاستفادة من قوة نماذج Hugging Face المتنوعة والمتطورة ضمن إطار LlamaIndex، يمكن للمطورين إنشاء أنظمة RAG (توليد معزز بالاسترجاع) قوية وفعالة ودقيقة للغاية، مصممة خصيصًا للغات ومجالات محددة. سيرشدك هذا الدليل خلال عملية إعداد واستخدام تضمينات Hugging Face مع LlamaIndex، مما يوفر لك رؤى عملية وأمثلة برمجية لتحسين مشاريع معالجة اللغة الطبيعية الخاصة بك.

ما هو llama_index_embedding_huggingface؟

تعمل وحدة llama_index.embeddings.huggingface كجسر بين LlamaIndex والنظام البيئي الغني لنماذج Hugging Face. من خلال الاستفادة من هذه الوحدة، يمكنك الاختيار من بين مجموعة متنوعة من نماذج التضمين المتطورة، وتخصيص أنظمة RAG الخاصة بك للغات أو مجالات أو متطلبات أداء محددة.

التثبيت والإعداد

الخطوة 1: التثبيت

  • تأكد من تثبيت Python و pip على نظامك.
  • افتح الطرفية أو موجه الأوامر وقم بتثبيت حزمة llama_index_embedding_huggingface باستخدام pip:
pip install llama_index_embedding_huggingface

الخطوة 2: التكوين

  • بمجرد التثبيت، تحتاج إلى استيراد الوحدة إلى سكريبت Python الخاص بك:
from llama_index.embeddings.huggingface import HuggingFaceEmbedding
  • حدد نموذج التضمين من Hugging Face الذي يناسب احتياجاتك بشكل أفضل. ضع في اعتبارك عوامل مثل دعم اللغة وحجم النموذج والأداء.

الخطوة 3: إعداد الوحدة

  • قم بإنشاء مثيل لفئة HuggingFaceEmbedding باستخدام اسم النموذج الذي اخترته:
embedding_model = HuggingFaceEmbedding(model_name="BAAI/bge-small-en-v1.5")
  • هذا الإعداد جاهز للتكامل في خط أنابيب RAG الخاص بك، حيث سيتم استخدامه لتحويل البيانات النصية إلى تضمينات.

الخطوة 4: الاستخدام الأول

  • مع نموذج التضمين جاهزًا، يمكنك الآن المتابعة لتكامله مع باقي مكونات LlamaIndex، مثل محمل المستندات وفهرس المتجهات.
  • اختبر الإعداد بنص عينة للتأكد من أن التضمينات تُنشأ كما هو متوقع:
sample_text = "Hello, world of RAG systems!" 
embeddings = embedding_model.get_text_embedding(sample_text) 
print(embeddings)

لمزيد من المعلومات حول مشروع RAG مع Huggingface و LlamaIndex، يمكنك الاطلاع على هذه المدونة: بناء “أمين مكتبة” RAG للكتب الإلكترونية باستخدام LlamaIndex.

اختيار نموذج التضمين المناسب

اختيار نموذج التضمين المناسب أمر محوري لأداء نظام RAG الخاص بك. التضمينات هي جوهر فهم النظام للبيانات واسترجاعها. يمكن أن يؤثر اختيار النموذج على دقة عمليات الاسترجاع وملاءمتها وكفاءتها.

استكشاف النماذج المتاحة

توفر Hugging Face مجموعة كبيرة من النماذج، لكل منها خصائص فريدة. لاستكشاف النماذج المتاحة، يمكنك زيارة مركز نماذج Hugging Face. استخدم المرشحات لتضييق النطاق حسب اللغة أو المهمة أو مجموعة البيانات. انتبه لملاحظات المجتمع ومعايير الأداء وتوافق النموذج مع متطلبات نظامك.

الاختيار بناءً على اللغة والمهمة

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

اعتبارات الأداء

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

أمثلة الاستخدام في الكود

الآن وقد اخترت النموذج المناسب، حان وقت استخدامه. فيما يلي أمثلة برمجية مفصلة توضح كيفية إنشاء تضمينات نصية باستخدام وحدة llama_index.embeddings.huggingface.

إنشاء التضمينات الأساسية:

from llama_index.embeddings.huggingface import HuggingFaceEmbedding

# تهيئة نموذج التضمين
embedding_model = HuggingFaceEmbedding(model_name="BAAI/bge-small-en-v1.5")

# النص المراد تضمينه
text = "This is a sample text for embedding."

# إنشاء التضمين
embedding = embedding_model.get_text_embedding(text)
print(embedding)

التضمين باستخدام نموذج مخصص:

# التهيئة بنموذج مختلف
custom_embedding_model = HuggingFaceEmbedding(model_name="YourCustomModelName")

# إنشاء التضمين باستخدام النموذج المخصص
custom_embedding = custom_embedding_model.get_text_embedding(text)

إنشاء التضمينات بشكل مجمع:

# قائمة النصوص
texts = ["text1", "text2", "text3", ...]

# إنشاء تضمينات لجميع النصوص
embeddings = embedding_model.get_text_embedding(texts)

التخصيص لاحتياجات محددة:

# تخصيص إنشاء التضمين
embeddings = embedding_model.get_text_embedding(text, max_length=512)

التكامل مع فهرس المتجهات:

from llama_index.core import SimpleDirectoryReader, VectorStoreIndex

# تحميل المستندات
documents = SimpleDirectoryReader("./data").load_data()

# إنشاء فهرس المتجهات
index = VectorStoreIndex.from_documents(documents, embed_model=embedding_model)

# الآن، يمكن استخدام `index` لعمليات استرجاع فعالة

نصائح لتحسين إنشاء التضمينات

النصيحة 1: اختيار نماذج فعالة

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

النصيحة 2: المعالجة المجمعة

استخدم إمكانيات المعالجة المجمعة لوحدة llama_index.embeddings.huggingface لإنشاء تضمينات لنصوص متعددة في عملية واحدة، مما يقلل من الحمل الزائد للإعداد المتكرر.

النصيحة 3: ضبط حجم القطعة

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

النصيحة 4: تخصيص الموارد

تأكد من أن نظامك يحتوي على موارد كافية (CPU/GPU، ذاكرة) للتعامل مع عملية إنشاء التضمين، خاصة عند استخدام نماذج معقدة. يقدم Novita AI GPU Instance سحابة GPU فعالة من حيث التكلفة وبنظام الدفع حسب الاستخدام لتوسيع نطاق ابتكاراتك.

علاوة على ذلك، يوفر Novita AI GPU Instance وصولاً فوريًا إلى Jupyter، مع تثبيت مسبق لـ Tensorflow و Pytorch و cuDNN و CUDA و TensorRT و Llama3 و Stable Diffusion. تتيح Novita AI الوصول إلى خدمات سحابة GPU مباشرة من خلال متصفحك.

النصيحة 5: آليات التخزين المؤقت

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

النصيحة 6: مراقبة حمل النظام

راقب حمل النظام وقم بتحسين عدد العمليات المتزامنة لمنع التحميل الزائد على النظام وضمان أداء ثابت.

التكامل مع واجهة برمجة تطبيقات LLM

يوفر دمج LLM مع وحدة تضمين مثل llama_index.embeddings.huggingface مزايا كبيرة لمهام معالجة اللغة الطبيعية. يتيح هذا التكامل إنشاء أنظمة RAG عالية الكفاءة والدقة من خلال الاستفادة من التضمينات المتطورة التي تلتقط الفروق الدلالية للنص. إليك دليل خطوة بخطوة للتكامل مع واجهة برمجة تطبيقات LLM من Novita AI:

1. اذهب إلى novita.ai وقم بتسجيل الدخول

يمكنك تسجيل الدخول باستخدام Google أو GitHub. سيتم إنشاء حساب جديد عند أول تسجيل دخول.

بدلاً من ذلك، يمكنك الاشتراك باستخدام عنوان بريدك الإلكتروني.

2. إدارة مفتاح API

تستخدم Novita AI مصادقة Bearer للوصول إلى API باستخدام مفتاح API في رأس الطلب، على سبيل المثال: “Authorization: Bearer {API Key}”.

اذهب إلى “إدارة المفاتيح” في الإعدادات لإدارة مفاتيحك.

عند أول تسجيل دخول، يتم إنشاء مفتاح افتراضي تلقائيًا. يمكنك إنشاء مفاتيح إضافية بالنقر على “+ إضافة مفتاح جديد”.

3. إجراء استدعاء API

فيما يلي مثال باستخدام عميل Python مع واجهة برمجة تطبيقات Novita AI Chat Completions.

pip install 'openai>=1.0.0'

from openai import OpenAI

client = OpenAI(
    base_url="https://api.novita.ai/v3/openai",
    # احصل على مفتاح API من Novita AI بالرجوع إلى: https://novita.ai/docs/get-started/quickstart.html#_2-manage-api-key.
    api_key="<YOUR Novita AI API Key>",
)

model = "Nous-Hermes-2-Mixtral-8x7B-DPO"
stream = True # أو False
max_tokens = 512

chat_completion_res = client.chat.completions.create(
    model=model,
    messages=[
        {
            "role": "system",
            "content": "تصرف وكأنك مساعد مفيد.",
        },
        {
            "role": "user",
            "content": "مرحبًا!",
        }
    ],
    stream=stream,
    max_tokens=max_tokens,
 )

if stream:
    for chunk in chat_completion_res:
        print(chunk.choices[0].delta.content or "", end="")
else:
    print(chat_completion_res.choices[0].message.content)

لمزيد من المعلومات، يرجى مراجعة مرجع واجهة برمجة تطبيقات نموذج Novita AI.

4. شحن الرصيد

نقدم للمستخدمين الجدد قسيمة تحتوي على بعض الرصيد لتجربة منتجاتنا. لإضافة المزيد من الرصيد، يرجى زيارة الفوترة والمدفوعات واتبع الدليل الخاص بـ طرق الدفع.

الخاتمة

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

الأسئلة الشائعة

[خطأ]: لا توجد وحدة باسم ‘llama_index.embeddings.huggingface’

قم بتشغيل pip install llama-index-embeddings-huggingface

[خطأ]: تحميل نموذج التضمين من Hugging Face في Llama Index يظهر خطأ في السمة

تحقق من إصدار torch لديك: !python -c "import torch; print(torch.version)". قد يعمل تخفيض الإصدار: !python -m pip install — upgrade torch==1.13.0

Novita AI هي منصة سحابية شاملة تعزز طموحاتك في الذكاء الاصطناعي. واجهات برمجة تطبيقات متكاملة، حوسبة بدون خادم، مثيل GPU — الأدوات الفعالة من حيث التكلفة التي تحتاجها. تخلص من البنية التحتية، ابدأ مجانًا، وحقق رؤيتك في الذكاء الاصطناعي.

قراءة موصى بها

ما هو RAG: مقدمة شاملة عن التوليد المعزز بالاسترجاع

دليل خطوة بخطوة حول دمج التوليد المعزز بالاسترجاع (RAG) مع نماذج اللغة الكبيرة

الاختيار بين LlamaIndex و LangChain: دليل شامل