إنشاء بحث في المحتوى المستنِد إلى الذكاء الاصطناعي (AI) باستخدام وكيل "مستندات Google"

البحث عن المعلومات هو أحد الاستخدامات الأكثر شيوعًا لنماذج الذكاء الاصطناعي التوليدي. إنّ إنشاء واجهة بحث حوارية للمحتوى الخاص بك باستخدام الذكاء الاصطناعي يتيح للمستخدمين طرح أسئلة محدّدة والحصول على إجابات مباشرة.

يشرح لك هذا البرنامج التعليمي كيفية إنشاء واجهة بحث حوارية مستندة إلى الذكاء الاصطناعي (AI) للمحتوى الخاص بك. وهو يعتمد على وكيل المستندات، وهو مشروع مفتوح المصدر يستخدم Google Gemini API لإنشاء واجهة بحث حوارية، بدون تدريب نموذج ذكاء اصطناعي جديد أو ضبط النماذج باستخدام نماذج Gemini. هذا يعني أنه يمكنك إنشاء إمكانية البحث هذه بسرعة واستخدامها لمجموعات المحتوى الصغيرة والكبيرة.

للحصول على نظرة عامة في فيديو حول المشروع وكيفية تمديده، بما في ذلك إحصاءات من المسؤولين عن إنشائه، يمكنك الاطّلاع على مقالة: AI Content Search | Build with Google AI. خلاف ذلك، يمكنك البدء في تمديد المشروع باتباع الإرشادات أدناه.

نظرة عامة

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

رسم توضيحي وظيفي لوكيل "مستندات Google" الشكل 1. رسم توضيحي وظيفي لتطبيق مشروع وكيل "مستندات Google"

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

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

إعداد المشروع

ترشدك هذه التعليمات خلال إعداد مشروع "وكيل المستندات" للتطوير والاختبار. وتتمثل الخطوات العامة في تثبيت بعض البرامج المطلوبة، وإعداد بعض متغيرات البيئة، ونسخ المشروع من مستودع التعليمات البرمجية وتشغيل عملية تثبيت التكوين. يستخدم مشروع الترميز Python Poetry لإدارة الحزم وبيئة وقت تشغيل Python.

تثبيت المتطلبات الأساسية

يستخدم مشروع وكيل المستندات كلاً من Python 3 وPython Poetry لإدارة الحزم وتشغيل التطبيق. تعليمات التثبيت التالية مخصصة لجهاز مضيف يعمل بنظام التشغيل Linux.

لتثبيت البرنامج المطلوب:

  1. ثبِّت Python 3 وvenvحزمة البيئة الافتراضية لـ Python.
    sudo apt update
    sudo apt install git pip python3-venv
    
  2. ثبِّت Python Poetry لإدارة التبعيات والحزم الخاصة بالمشروع.
    curl -sSL https://install.python-poetry.org | python3 -
    

يمكنك استخدام Python Poetry لإضافة المزيد من مكتبات Python إذا تم تمديد المشروع.

ضبط متغيرات البيئة

اضبط بعض متغيرات البيئة المطلوبة للسماح بتشغيل مشروع رمز وكيل "مستندات Google"، بما في ذلك مفتاح واجهة برمجة تطبيقات Google Gemini وإعداد Python Poetry. ننصحك بإضافة هذه المتغيرات إلى ملف $HOME/.bashrc إذا كنت تستخدم نظام التشغيل Linux، لضبطها كإعدادات تلقائية لجلسات التطبيق الطرفية.

لضبط متغيرات البيئة:

  1. احصل على مفتاح واجهة برمجة تطبيقات Google Gemini وانسخ سلسلة المفتاح.
  2. ضبط مفتاح واجهة برمجة التطبيقات كمتغيّر للبيئة على مضيفي نظام التشغيل Linux، استخدِم الأمر التالي.
    export API_KEY=<YOUR_API_KEY_HERE>
    
  3. حل مشكلة معروفة في Python Poetry عن طريق ضبط المعلمة PYTHON_KEYRING_BACKEND. على مضيفي نظام التشغيل Linux، يمكنك استخدام الأمر التالي.
    export PYTHON_KEYRING_BACKEND=keyring.backends.null.Keyring
    

نسخ المشروع وإعداده

قم بتنزيل كود المشروع واستخدم أمر Poetry install لتنزيل التبعيات المطلوبة وتهيئة المشروع. تحتاج إلى برنامج التحكم في المصدر git لاسترداد رمز المصدر للمشروع. خارجي لتنزيل رمز المشروع وإعداده:

  1. استنسِخ مستودع git باستخدام الأمر التالي.
    git clone https://github.com/google/generative-ai-docs
    
  2. يمكنك اختياريًا ضبط مستودع git المحلي لاستخدام عمليات الدفع المتفرقة، بحيث يكون لديك الملفات الخاصة بمشروع وكيل المستندات فقط.
    cd generative-ai-docs/
    git sparse-checkout init --cone
    git sparse-checkout set examples/gemini/python/docs-agent/
    
  3. انتقِل إلى الدليل الجذري لمشروع docs-agent.
    cd examples/gemini/python/docs-agent/
    
  4. شغِّل الأمر Poetry install لتنزيل التبعيات وإعداد المشروع:
    poetry install
    

إعداد المحتوى

تم تصميم مشروع وكيل المستندات للعمل مع المحتوى النصي، ويتضمن أدوات مخصصة للعمل على مواقع الويب التي تستخدم Markdown كتنسيق مصدر. إذا كنت تعمل على محتوى موقع إلكتروني، عليك الحفاظ على (أو تكرار) بنية دليل الموقع الإلكتروني المعروض لتمكين مهمة معالجة المحتوى من ربط وإنشاء روابط تؤدي إلى هذا المحتوى.

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

لإعداد المحتوى للمعالجة:

  1. أنشِئ دليلاً للمحتوى الذي تريد أن يبحث عنه وكيل الذكاء الاصطناعي.
    mkdir docs-agent/content/
    
  2. انسخ المحتوى إلى دليل docs-agent/content/. إذا كان المحتوى عبارة عن موقع إلكتروني، احتفِظ (أو انسخ) بنية دليل الموقع الإلكتروني المعروض.
  3. نقح المحتوى أو عدّله حسب الحاجة لإزالة المعلومات غير العلنية أو المعلومات الأخرى التي لا تريد تضمينها في عمليات البحث.

استخدام مستندات Flutter للاختبار

إذا كنت بحاجة إلى مجموعة من المحتوى لاختبار "وكيل المستندات"، يمكنك استخدام مستندات مطوّري برامج Flutter للاختبار.

للحصول على مستندات مطوّري Flutter، يُرجى اتّباع الخطوات التالية:

  1. انتقِل إلى دليل المحتوى للمحتوى الذي تريد أن يبحث عنه وكيل الذكاء الاصطناعي.
    cd docs-agent/content/
    
  2. استنسِخ مستندات Flutter في دليل docs-agent/content/.
    git clone --recurse-submodules https://github.com/flutter/website.git
    

معالجة المحتوى

لكي يتمكن وكيل البحث من البحث بشكل فعال عن المحتوى المتعلق بأسئلة المستخدمين، تحتاج إلى إنشاء قاعدة بيانات للمتجهات التي تمثل المحتوى الخاص بك. ويتم إنشاء المتجهات باستخدام إحدى وظائف النموذج التوليدي المستندة إلى الذكاء الاصطناعي (AI) التي تُعرف باسم تضمين النص. تضمينات النص هي تمثيلات رقمية للمحتوى النصي. وهي تقترب من المعنى الدلالي للنص كمجموعة من الأرقام. إنّ توفّر تمثيلات رقمية للمعلومات يتيح للنظام أخذ سؤال أحد المستخدمين وتحديد معناه التقريبي باستخدام دالة تضمين النص نفسها، ثم العثور على المعلومات ذات الصلة كعملية حسابية رياضية باستخدام خوارزمية الجار الأقرب (k-NN).

تقسيم المحتوى النصي

مقدار النص الذي يمكن أن يمثله متجه تضمين النص بشكل فعال محدود. يحد هذا المشروع من النص الوارد في متجه إلى 3000 حرف أو أقل، وهذا يعني أنه عليك تقسيم المحتوى إلى أجزاء أقل من هذا الحد المسموح به. يصف هذا القسم كيفية استخدام نص برمجي مقدَّم مع مشروع وكيل المستندات لتقسيم ملفات Markdown إلى أجزاء نصية أصغر. للحصول على نصائح حول استخدام تنسيقات محتوى أخرى، يُرجى قراءة المقالة حول استخدام تنسيقات أخرى.

لتقسيم محتوى تنسيق Markdown:

  1. اضبط مَعلمات الإدخال للنص البرمجي للمعالجة من خلال تعديل ملف docs-agent/config.yaml. يستهدف المثال التالي مجموعة فرعية من مستندات Flutter:
    input:
    - path: "content/website/src/ui"
      url_prefix: "https://docs.flutter.dev/ui"
    
  2. احفظ التغييرات التي أجريتها في ملف الإعداد هذا.
  3. انتقِل إلى دليل مشروع "docs-agent":
    cd docs-agent/
    
  4. يمكنك تقسيم محتوى المصدر Markdown من خلال تنفيذ الأمر agent chunk:
    agent chunk
    

يعالج النص البرمجي محتوى الإدخال وينشئ ملفات نصية للمخرجات في دليل docs-agent/data، ما يؤدي إلى تقسيم النص بناءً على العناوين والعناوين والفقرات ذات الصلة. قد تستغرق المعالجة بعض الوقت حسب حجم المحتوى.

إنشاء متجهات تضمين النص

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

لإنشاء تضمينات النص وملء قاعدة بيانات المتجه:

  1. انتقِل إلى دليل مشروع "docs-agent":
    cd docs-agent/
    
  2. عليك تعبئة قاعدة بيانات المتجه بالمحتوى باستخدام الأمر agent populate:
    agent populate
    

يستخدم هذا النص البرمجي واجهة برمجة التطبيقات Google Gemini API لإنشاء متّجهات تضمين النص ثم حفظ الناتج في قاعدة بيانات المتّجهات. قد تستغرق المعالجة بعض الوقت حسب حجم المحتوى

استخدام تنسيقات أخرى

تم تصميم مشروع "وكيل المستندات" للعمل مع محتوى موقع الويب بتنسيق Markdown. لقد أنشأ مؤلفو المشروع بعض النصوص البرمجية لتحويل لإنشاء أنواع أخرى من المحتوى إلى تنسيق Markdown، بما في ذلك مستندات Google وتنسيق المستندات المتنقلة (PDF) وGmail. لمزيد من المعلومات عن استخدام هذه المحولات، راجع دليل docs-agent/apps_script لمستودع الرموز.

تحويل تنسيقات المحتوى الأخرى

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

إنّ الرمز الرئيسي الذي يجب إنشاؤه لإتاحة تنسيقات المحتوى الأخرى هو نص برمجي مُقسَّم، مثل النص البرمجي files_to_plain_text.py. استهدف إنشاء نص أو برنامج ينتج عنه مخرجات مماثلة لهذا النص. تذكر أن مخرجات النص النهائية يجب أن تحتوي على الحد الأدنى من التنسيق والمعلومات الغريبة. إذا كنت تستخدم تنسيقات محتوى مثل HTML أو JSON، احرص على إزالة أكبر قدر ممكن من التنسيقات غير الإعلامية (العلامات والنص البرمجي وCSS) قدر الإمكان، بحيث لا يؤدي إلى تحريف قيم عمليات تضمين النص التي تنشئها منها.

بعد إنشاء نص برمجي مُقسَّم لتنسيق المحتوى، من المفترض أن تكون قادرًا على تشغيل النص البرمجي populate_vector_database.py لملء قاعدة بيانات المتّجهات. ولمزيد من المعلومات عن معالجة الملفات لاستخدامها مع "وكيل المستندات"، يُرجى الرجوع إلى الملف التمهيدي لمرحلة ما قبل المعالجة في "وكيل المستندات".

اختبار التطبيق

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

لتشغيل واجهة الويب الخاصة بالمشروع واختبارها:

  1. انتقِل إلى دليل مشروع "docs-agent":
    cd docs-agent/
    
  2. شغِّل النص البرمجي لتشغيل تطبيق الويب:
    agent chatbot
    
  3. باستخدام متصفح الويب، انتقِل إلى عنوان الويب لعنوان URL المبيَّن في مُخرج النص البرمجي للتشغيل واختبِر التطبيق.
    * Running on http://your-hostname-here:5000
    

خيارات الاستخدام

توفّر واجهة برمجة التطبيقات Gemini API أدوات برمجة يمكنها أن تحل محل مكوّنات تنفيذ وكيل المستندات، وتحديدًا صيغة نموذج Gemini مثل "استرداد دلالي" و"الإجابة عن الأسئلة المحالة" (AQA). يمكنك استخدام ميزة استرداد معنى لواجهة برمجة تطبيقات Gemini API لاستبدال قاعدة بيانات المتجه المنفصلة. تتيح لك ميزة استرداد دلالي إنشاء تضمينات للمحتوى الخاص بك، وتخزين هذا المحتوى. تم ضبط نموذج AQA Gemini للإجابة عن الأسئلة باستخدام المواد المصدر الواردة في الطلب. يمكنك استخدام "الاسترجاع الدلالي" مع نموذج AQA للإجابة عن أسئلة حول المحتوى الخاص بك، وكل ذلك ضمن Gemini API.

يتضمن وكيل المستندات خيارات الضبط لاستخدام ميزة واجهة برمجة التطبيقات لاسترداد البيانات الدلالية، أو نموذج AQA Gemini أو كليهما. لمزيد من المعلومات، يُرجى الاطّلاع على النسخة التمهيدية من موظّفي الدعم في "مستندات Google".

مراجع إضافية

لمزيد من المعلومات حول مشروع "وكيل المستندات"، يُرجى الاطّلاع على مستودع الرموز. إذا كنت بحاجة إلى المساعدة في إنشاء التطبيق أو كنت تبحث عن متعاونين للمطوّرين، يمكنك مراجعة خادم Google Developers Community Discord.

تطبيقات الإنتاج

إذا كنت تخطِّط لنشر وكيل المستندات لعدد كبير من المستخدمين، يُرجى العِلم أنّ استخدامك لواجهة Google Gemini API قد يخضع لقيود على معدّل الاستخدام وقيود الاستخدام الأخرى. إذا كنت تفكر في إنشاء تطبيق إنتاج باستخدام واجهة برمجة تطبيقات Gemini مثل docs Agent، راجِع خدمات Google Cloud Vertex AI لزيادة قابلية توسّع تطبيقك وموثوقيته.