في هذا البرنامج التعليمي، ستستخدم Docling من IBM ورؤية IBM Granite مفتوحة المصدر، والتضمينات النصية ونماذج الذكاء الاصطناعي التوليدي من أجل إنشاء نظام توليد معزز بالاسترجاع. تتوفر هذه النماذج عبر العديد من أُطر العمل مفتوحة المصدر. في هذا البرنامج التعليمي، سنستخدم Replicate للاتصال برؤية IBM Granite ونماذج الذكاء الاصطناعي التوليدي، وHuggingFace للاتصال بنموذج التضمينات.
التوليد المعزز بالاسترجاع (RAG) هو تقنية تُستخدم مع النماذج اللغوية الكبرى لربط النموذج بقاعدة معرفية تضم معلومات غير البيانات التي تدرب عليها النموذج من دون الحاجة إلى إجراء ضبط دقيق. يقتصر استخدام نظام التوليد المعزز بالاسترجاع التقليدي على حالات الاستخدام النصية مثل تلخيص النصوص وروبوتات المحادثة.
يمكن لنظام التوليد المعزز بالاسترجاع متعدد الوسائط استخدام نماذج لغوية كبرى متعددة الوسائط (MLLM) لمعالجة المعلومات من أنواع متعددة من البيانات وتضمينها كجزء من القاعدة المعرفية الخارجية المستخدمة في نظام التوليد المعزز بالاسترجاع. يمكن أن تتضمن البيانات متعددة الوسائط النصوص أو الصور أو المقاطع الصوتية أو مقاطع فيديو أو أشكالاً أخرى. تشمل النماذج اللغوية الكبرى متعددة الوسائط الشهيرة Gemini من Google، وLlama 3.2 من Meta، وGPT-4 وGPT-4o من OpenAI.
لهذه الوصفة، ستستخدم نموذج IBM Granite يتمكن من معالجة الوسائط المختلفة. ستُنشئ نظام ذكاء اصطناعي للرد على استعلامات المستخدمين في الوقت الفعلي من بيانات غير منظمة في ملف PDF.
مرحبًا بك في هذا البرنامج التعليمي حول Granite. في هذا البرنامج التعليمي، ستتعلم كيفية استغلال إمكانات الأدوات المتقدمة لإنشاء مسار توليد معزز بالاسترجاع متعدد الوسائط ومدعوم بالذكاء الاصطناعي. سيرشدك هذا البرنامج التعليمي خلال العمليات التالية:
يستخدم هذا البرنامج التعليمي ثلاث تقنيات متطورة:
بحلول نهاية هذا البرنامج التعليمي، ستتمكن من إنجاز ما يلي:
هذا البرنامج التعليمي مصمم لمطوري الذكاء الاصطناعي والباحثين والهواة الذين يتطلعون إلى تعزيز معرفتهم بإدارة المستندات وتقنيات معالجة اللغة الطبيعية (NLP). يمكن أيضًا العثور على هذا البرنامج التعليمي في Granite Snack Cookbook GitHub من IBM Granite Community في شكل Jupyter Notebook.
! echo "::group::Install Dependencies"
%pip install uv
! uv pip install git+https://github.com/ibm-granite-community/utils.git \
transformers \
pillow \
langchain_classic \
langchain_core \
langchain_huggingface sentence_transformers \
langchain_milvus 'pymilvus[milvus_lite]' \
docling \
'langchain_replicate @ git+https://github.com/ibm-granite-community/langchain-replicate.git'
! echo "::endgroup::"
لرؤية بعض معلومات التسجيل، يمكننا تكوين مستوى سجل INFO.
ملاحظة: يمكن تخطي تنفيذ هذه الخلية دون مشكلة.
حدد نموذج التضمينات المراد استخدامه في إنشاء متجهات تضمين النص. هنا سنستخدم أحد نماذج تضمينات Granite
لاستخدام نموذج تضمينات آخر، استبدل خلية التعليمات البرمجية هذه بخلية من وصفة نموذج التضمينات هذه.
حدد النموذج اللغوي الكبير متعدد الوسائط المراد استخدامه في فهم الصور. سوف نستخدم نموذج رؤية Granite.
حدد النموذج اللغوي المراد استخدامه في عملية إنشاء نظام التوليد المعزز بالاسترجاع. هنا نستعين بعميل Replicate LangChain للاتصال بنموذج Granite من مؤسسة ibm-granite على Replicate.
للإعداد باستخدام Replicate، راجع البدء باستخدام Replicate. للاتصال بنموذج من مقدم خدمة آخر غير Replicate، استبدل خلية التعليمات البرمجية هذه بواحدة من وصفة عنصر النموذج اللغوي الكبير.
للاتصال بنموذج من مقدم خدمة آخر غير Replicate، استبدل خلية التعليمات البرمجية هذه بواحدة من وصفة عنصر النموذج اللغوي الكبير.
from langchain_replicate import ChatReplicate
model_path = "ibm-granite/granite-4.0-h-small"
model = ChatReplicate(
model=model_path,
replicate_api_token=get_env_var("REPLICATE_API_TOKEN"),
model_kwargs={
"max_tokens": 1000, # Set the maximum number of tokens to generate as output.
"min_tokens": 100, # Set the minimum number of tokens to generate as output.
},
)
في هذا المثال، من خلال مجموعة من المستندات المصدر، نستخدم Docling لتحويل المستندات إلى نصوص وصور. ثم يُقسم النص إلى أجزاء. تُعالج الصور باستخدام نموذج لغوي كبير متعدد الوسائط لإنشاء ملخصات للصور.
سيعمل Docling على تنزيل مستندات PDF ومعالجتها حتى نتمكن من الحصول على النصوص والصور التي تحتوي عليها المستندات. يوجد في ملف PDF أنواع مختلفة من البيانات، بما في ذلك النصوص والجداول والرسوم البيانية والصور.
بعد معالجة المستندات، نعالج عناصر النص الموجودة في المستندات بشكل أكبر. نقسمها إلى أحجام مناسبة لنموذج التضمينات الذي نستخدمه. تُنشأ قائمة بمستندات LangChain من أجزاء النص.
بعد ذلك، نعالج أي جداول موجودة في المستندات. ونحول بيانات الجداول إلى تنسيق Markdown لتمريره إلى النموذج اللغوي. تُنشأ قائمة بمستندات LangChain من تصورات الجداول بتنسيق Markdown.
وأخيرًا، نعالج أي صور موجودة في المستندات. نستخدم هنا نموذج اللغة والرؤية لفهم محتوى الصورة. في هذا المثال، نحن مهتمون بأي معلومات نصية موجودة في الصورة. قد ترغب في تجربة موجه مختلف لترى كيف يمكن تحسين النتائج.
ملاحظة: قد تستغرق معالجة الصور وقتًا طويلاً جدًا اعتمادًا على عدد الصور والخدمة التي تشغل نموذج اللغة والرؤية.
يمكننا بعد ذلك عرض مستندات LangChain التي تم إنشاؤها من مستندات الإدخال.
باستخدام نموذج التضمينات، نحمل المستندات، بدءًا من أجزاء النص إلى التسميات التوضيحية المولدة للصور، إلى قاعدة بيانات متجهات. يتيح لنا إنشاء قاعدة بيانات المتجهات هذه إمكانية إجراء بحث عن التشابه الدلالي بسهولة عبر مستنداتنا.
ملاحظة: قد تستغرق عملية تجميع قاعدة بيانات المتجهات بعض الوقت اعتمادًا على نموذج التضمينات والخدمة.
حدِّد قاعدة البيانات لاستخدامها لتخزين واسترجاع متجهات التضمين.
للاتصال بقاعدة بيانات متجهات غير Milvus، استبدل خلية التعليمات البرمجية هذه بواحدة من وصفة مخزن المتجهات هذه.
نضيف الآن جميع مستندات LangChain الخاصة بالنصوص والجداول وأوصاف الصور إلى قاعدة بيانات المتجهات.
الآن وبعد أن نجحنا في تحويل مستنداتنا وتحويلها إلى متجهات، يمكننا إعداد مسار التوليد المعزز بالاسترجاع.
في هذه الخطوة، نختبر قاعدة بيانات المتجهات من خلال البحث عن أجزاء تحتوي على معلومات ذات صلة باستعلامنا في فضاء المتجهات. نعرض المستندات المرتبطة بوصف الصورة المسترد.
لا تتردد في تجربة استعلامات مختلفة.
يجب أن يكون المستند المسترد مستجيبًا للاستعلام. هيا بنا نمضي قدمًا ونُنشئ مسار التوليد المعزز بالاسترجاع.
يتعين علينا أولاً إنشاء موجهات Granite لإجراء استعلام توليد معزز بالاسترجاع. نستخدم قالب دردشة Granite ونوفر القيم المؤقتة التي سيستبدلها مسار LangChain للتوليد المعزز بالاسترجاع.
بعد ذلك، نُنشئ مسار التوليد المعزز بالاسترجاع باستخدام قوالب موجهات Granite المُنشأة مسبقًا.
from ibm_granite_community.langchain.chains.combine_documents import create_stuff_documents_chain
from langchain_classic.chains.retrieval import create_retrieval_chain
from langchain_core.prompts import ChatPromptTemplate
# Create a Granite prompt for question-answering with the retrieved context
prompt_template = ChatPromptTemplate.from_template("{input}")
# Assemble the retrieval-augmented generation chain
combine_docs_chain = create_stuff_documents_chain(
llm=model,
prompt=prompt_template,
)
rag_chain = create_retrieval_chain(
retriever=vector_db.as_retriever(),
combine_docs_chain=combine_docs_chain,
)
يستخدم المسار الاستعلام لتحديد موقع المستندات من قاعدة بيانات المتجهات واستخدامها كسياق للاستعلام.
from ibm_granite_community.notebook_utils import wrap_text
output = rag_chain.invoke({"input": query})
print(wrap_text(output['answer']))
رائع! لقد أنشأنا تطبيق ذكاء اصطناعي يمكنه الاستفادة بنجاح من المعرفة المستخرجة من نصوص وصور المستندات المصدر.
تدريب الذكاء الاصطناعي التوليدي والتحقق من صحته وضبطه ونشره، وكذلك قدرات نماذج الأساس والتعلم الآلي باستخدام IBM watsonx.ai، وهو استوديو الجيل التالي من المؤسسات لمنشئي الذكاء الاصطناعي. أنشئ تطبيقات الذكاء الاصطناعي بسرعة أكبر وببيانات أقل.
استفد من الذكاء الاصطناعي في عملك بالاستعانة بخبرة IBM الرائدة في مجال الذكاء الاصطناعي ومحفظة حلولها المتوفرة لك.
أعدّ ابتكار عمليات ومهام سير العمل الحساسة بإضافة الذكاء الاصطناعي لتعزيز التجارب وصنع القرارات في الوقت الفعلي والقيمة التجارية.