الانتقال إلى المحتوى الرئيسي
تحتوي مجموعة بيانات dbpedia على مليون مقالة من Wikipedia، مع تضميناتها المتجهية المُولَّدة باستخدام نموذج text-embedding-3-large من OpenAI. تُعد مجموعة البيانات هذه نقطة انطلاق ممتازة لفهم التضمينات المتجهية، والبحث عن تشابه المتجهات، والذكاء الاصطناعي التوليدي. ونستخدمها لعرض البحث التقريبي عن أقرب الجيران في ClickHouse، إلى جانب تطبيق أسئلة وأجوبة بسيط لكنه فعّال.

تفاصيل مجموعة البيانات

تتضمن مجموعة البيانات 26 ملفًا بتنسيق Parquet موجودة على huggingface.co. وتحمل هذه الملفات الأسماء 0.parquet و1.parquet و… و25.parquet. للاطلاع على بعض الصفوف النموذجية من مجموعة البيانات، يُرجى زيارة صفحة Hugging Face هذه.

إنشاء جدول

أنشئ الجدول dbpedia لتخزين معرّف المقالة والعنوان والنص ومتجه التضمين:

تحميل الجدول

لتحميل مجموعة البيانات من جميع ملفات Parquet، شغِّل أمر الشل التالي:
بدلًا من ذلك، يمكن تنفيذ عبارات SQL كلٌّ على حدة، كما هو موضح أدناه، لتحميل كل واحد من ملفات Parquet الخمسة والعشرين:
تأكد من ظهور مليون صف في جدول dbpedia:
قراءة موصى بها: “التضمينات المتجهية ” دليل OpenAPI يتضمن البحث الدلالي (ويُشار إليه أيضًا باسم البحث بالتشابه) باستخدام التضمينات المتجهية الخطوات التالية:
  • تلقّي عبارة بحث من مستخدم بلغة طبيعية، مثل “أخبرني عن بعض رحلات القطارات ذات المناظر الخلابة” أو “روايات تشويق تدور أحداثها في أوروبا” وما إلى ذلك
  • إنشاء متجه تضمين لعبارة البحث باستخدام نموذج LLM
  • العثور على أقرب الجيران لمتجه تضمين البحث في مجموعة البيانات
تمثل أقرب الجيران مستندات أو صورًا أو محتوى يشكّل نتائج ذات صلة بعبارة بحث المستخدم. وتُعد النتائج المسترجعة المدخل الأساسي في التوليد المعزّز بالاسترجاع (RAG) في تطبيقات الذكاء الاصطناعي التوليدي. يتضمن بحث KNN ‏(k - أقرب الجيران) أو البحث بطريقة brute-force حساب المسافة بين كل متجه في مجموعة البيانات ومتجه التضمين المستخدم في البحث، ثم ترتيب هذه المسافات للحصول على أقرب الجيران. ومع مجموعة البيانات dbpedia، فإن من أسرع الطرق لملاحظة البحث الدلالي بصريًا استخدام متجهات التضمين من مجموعة البيانات نفسها كمتجهات للبحث. على سبيل المثال:
Query
Response
دوّن زمن استجابة الاستعلام حتى نتمكن من مقارنته بزمن استجابة استعلام ANN (باستخدام فهرس المتجهات). وسجّل أيضًا زمن استجابة الاستعلام مع ذاكرة التخزين المؤقت الباردة لملفات نظام التشغيل ومع max_threads=1 لتحديد الاستخدام الفعلي لقدرة المعالجة واستهلاك عرض نطاق التخزين (واستقرئه على مجموعة بيانات إنتاجية تضم ملايين المتجهات!)

إنشاء فهرس لتشابه المتجهات

نفّذ عبارة SQL التالية لتعريف فهرس لتشابه المتجهات وإنشائه على العمود vector:
ترد المعلمات واعتبارات الأداء الخاصة بإنشاء الفهرس والبحث في الوثائق. قد يستغرق إنشاء الفهرس وحفظه بضع دقائق، بحسب عدد أنوية CPU المتاحة وعرض النطاق الترددي للتخزين. يشير أقرب الجيران التقريبيون أو ANN إلى مجموعة من التقنيات (مثل هياكل البيانات المتخصصة كالرُّسوم البيانية والغابات العشوائية) التي تحسب النتائج بسرعة أكبر بكثير من البحث المتجهي الدقيق. وتكون دقة النتائج عادةً “جيدة بما يكفي” للاستخدام العملي. كما توفّر العديد من التقنيات التقريبية معلمات لضبط الموازنة بين دقة النتائج ووقت البحث. بمجرد إنشاء فهرس لتشابه المتجهات، ستستخدم استعلامات البحث المتجهي هذا الفهرس تلقائيًا:
Query
Response

إنشاء متجهات التضمين لاستعلام البحث

تستخدم استعلامات البحث بالتشابه التي رأيناها حتى الآن أحد المتجهات الموجودة في الجدول dbpedia باعتباره متجه البحث. في التطبيقات العملية، يجب إنشاء متجه البحث لاستعلام يُدخله المستخدم، وقد يكون بلغة طبيعية. وينبغي إنشاء متجه البحث باستخدام نموذج LLM نفسه المستخدَم لإنشاء متجهات التضمين لمجموعة البيانات. يَرِد أدناه مثال لبرنامج نصي بلغة بايثون يوضح كيفية استدعاء OpenAI API برمجيًا من أجل إنشاء متجهات التضمين باستخدام النموذج text-embedding-3-large. ثم يُمرَّر متجه التضمين الخاص بالبحث كوسيط إلى الدالة cosineDistance() في استعلام SELECT. يتطلب تشغيل البرنامج النصي تعيين مفتاح OpenAI API في متغير البيئة OPENAI_API_KEY. ويمكن الحصول على مفتاح OpenAI API بعد التسجيل على https://platform.openai.com.

التطبيق التجريبي للأسئلة والأجوبة

أوضحت الأمثلة أعلاه البحث الدلالي واسترجاع المستندات باستخدام ClickHouse. ونستعرض فيما يلي تطبيقًا بسيطًا جدًا، لكنه واعد للغاية، للذكاء الاصطناعي التوليدي. ينفّذ التطبيق الخطوات التالية:
  1. يستقبل موضوعًا كمدخل من المستخدم
  2. يُنشئ متجه تضمين للـ موضوع عبر استدعاء OpenAI API باستخدام النموذج text-embedding-3-large
  3. يسترجع مقالات/مستندات Wikipedia عالية الصلة باستخدام البحث عن تشابه المتجهات على الجدول dbpedia
  4. يستقبل من المستخدم سؤالًا مفتوح الصياغة بلغة طبيعية يتعلق بالـ موضوع
  5. يستخدم OpenAI gpt-3.5-turbo Chat API للإجابة عن السؤال استنادًا إلى المعرفة الواردة في المستندات المسترجعة في الخطوة رقم 3. وتُمرَّر المستندات المسترجعة في الخطوة رقم 3 باعتبارها سياقًا إلى Chat API، وهي حلقة الوصل الأساسية في الذكاء الاصطناعي التوليدي.
يُعرض أولًا أدناه مثالان لمحادثات ناتجة عن تشغيل تطبيق الأسئلة والأجوبة، يليهما الكود الخاص بتطبيق الأسئلة والأجوبة. ويتطلب تشغيل التطبيق ضبط مفتاح OpenAI API في متغير البيئة OPENAI_API_KEY. ويمكن الحصول على مفتاح OpenAI API بعد التسجيل على https://platform.openai.com.
الكود:
آخر تعديل في ٢ يوليو ٢٠٢٦