الانتقال إلى المحتوى الرئيسي

مقدمة

تحتوي مجموعة بيانات 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 المتاحة ومعدل نقل وحدة التخزين.
4

إجراء بحث ANN

بعد إنشاء فهرس تشابه المتجهات، ستستخدم استعلامات البحث المتجهي هذا الفهرس تلقائيًا:
Query
قد يستغرق تحميل الفهرس المتجهي إلى الذاكرة لأول مرة بضع ثوانٍ/دقائق.
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.يُوضّح هذا التطبيق حالة استخدام للذكاء الاصطناعي التوليدي (Generative AI) قابلة للتطبيق في مجالات مؤسسية متعددة، منها: تحليل مشاعر العملاء، وأتمتة الدعم الفني، واستخراج المعلومات من محادثات المستخدمين، والوثائق القانونية، والسجلات الطبية، ومحاضر الاجتماعات، والبيانات المالية، وغير ذلك.
كود التطبيق المذكور أعلاه:
آخر تعديل في ٢٥ يونيو ٢٠٢٦