Skip to main content

مقدمة

تحتوي مجموعة بيانات Hacker News على 28.74 مليون منشور وتضميناتها المتجهية. وقد أُنشئت هذه التضمينات باستخدام نموذج SentenceTransformersall-MiniLM-L6-v2. ويبلغ بُعد كل متجه تضمين 384. يمكن استخدام مجموعة البيانات هذه لاستعراض جوانب التصميم وتقدير السعة والأداء لتطبيق بحث متجهي واسع النطاق وواقعي، مبني على بيانات نصية ينشئها المستخدمون.

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

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

خطوات

1

إنشاء جدول

أنشئ جدول hackernews لتخزين المنشورات وتضميناتها والسمات المرتبطة بها:
إن id مجرد عدد صحيح متزايد. ويمكن استخدام السمات الإضافية في عبارات الشرط لفهم البحث عن تشابه المتجهات عند دمجه مع التصفية اللاحقة/التصفية المسبقة، كما هو موضح في الوثائق
2

تحميل البيانات

لتحميل مجموعة البيانات من ملف Parquet، نفّذ تعليمة SQL التالية:
سيستغرق إدخال 28.74 مليون صف في الجدول بضع دقائق.
3

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

شغّل عبارة SQL التالية لتعريف فهرس تشابه المتجهات وإنشائه على العمود vector في الجدول hackernews:
تَرِد المعلمات واعتبارات الأداء الخاصة بإنشاء الفهرس والبحث في الوثائق. تستخدم العبارة الواردة أعلاه القيمتين 64 و512 على الترتيب للمعاملين الفائقين M وef_construction في HNSW. تحتاج إلى اختيار القيم المثلى لهذه المعلمات بعناية، وذلك من خلال تقييم وقت بناء الفهرس وجودة نتائج البحث المرتبطة بالقيم المحددة.قد يستغرق بناء الفهرس وحفظه بضع دقائق، أو حتى ساعة، لمجموعة البيانات الكاملة التي تضم 28.74 مليونًا، وذلك حسب عدد أنوية CPU المتاحة ومعدل نقل وحدة التخزين.
5

توليد تضمينات لاستعلام البحث

توفر Sentence Transformers نماذج تضمين محلية وسهلة الاستخدام لالتقاط المعنى الدلالي للجمل والفقرات.تحتوي مجموعة بيانات HackerNews هذه على تمثيلات متجهية (تضمينات) تم إنشاؤها باستخدام نموذج all-MiniLM-L6-v2.يُقدَّم فيما يلي مثال على سكريبت بايثون يوضح كيفية توليد متجهات التضمين برمجيًا باستخدام حزمة بايثون sentence_transformers. يُمرَّر بعد ذلك متجه تضمين البحث كوسيط إلى دالة cosineDistance() في استعلام SELECT.
يظهر أدناه مثال على تشغيل نص بايثون البرمجي أعلاه ونتائج بحث التشابه (يُطبع 100 حرف فقط من كل منشور من أعلى 20 منشورًا):

تطبيق تجريبي للتلخيص

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