المرحلة الثانية: التضمينات والبحث الدلالي (Embeddings & Semantic Search)
يفشل البحث بالكلمات المفتاحية عندما لا تتطابق الكلمات تماماً.
إذا ذكرت السيرة الذاتية "إدارة الفريق" (team management) وطلب الوصف الوظيفي "القيادة" (leadership)، فإن البحث الأساسي لن يعيد أي نتائج. الكلمات مختلفة، لكن المعنى واحد.
تحل المرحلة الثانية هذه المشكلة باستخدام التضمينات (embeddings) والبحث الدلالي (semantic search).
كيف تعمل:
• التجزئة (Tokenization): لا تقرأ الحواسيب الكلمات، بل تقرأ الأرقام. يقوم المُجزئ (tokenizer) بتقسيم النص إلى قطع صغيرة تسمى رموزاً (tokens) ويحولها إلى معرفات رموز (Token IDs). الكلمات الشائعة تصبح رمزاً واحداً، بينما تنقسم الكلمات النادرة إلى رموز متعددة.
• التضمينات (Embeddings): معرف الرمز (Token ID) هو مجرد تسمية. تقوم طبقة التضمين بتحويل هذا المعرف إلى متجه (vector). المتجه هو قائمة طويلة من الأرقام التي تمثل المعنى. بدلاً من استخدام رقم واحد، يستخدم النموذج أبعاداً متعددة لوصف المفهوم.
• الأبعاد (Dimensions): فكر في هذه الأرقام كإحداثيات. قد يمثل أحد الأبعاد "الواجهة الأمامية مقابل الواجهة الخلفية" (frontend vs backend)، وقد يمثل آخر "الويب مقابل الأنظمة" (web vs systems). تسمح المتجهات عالية الأبعاد للنموذج بوضع "React" و"JavaScript" بالقرب من بعضهما البعض في فضاء رياضي.
• البحث الدلالي (Semantic Search): عندما تطرح سؤالاً، يقوم النظام بتحويل سؤالك إلى متجه. ثم يقارن متجهك بمتجهات المستندات المخزنة لديك.
• تشابه جيب التمام (Cosine Similarity): يقيس هذا الزاوية بين متجهين. إذا كان المتجهان يشيران إلى نفس الاتجاه، فهما متشابهان. يتيح ذلك للنظام العثور على "متطلبات الاستقالة" (resignation requirements) حتى لو بحثت فقط عن "فترة الإخطار" (notice period).
دروس رئيسية لمرحلة الإنتاج:
- قواعد بيانات المتجهات (Vector Databases): البحث في ملايين المتجهات عملية بطيئة. تستخدم قواعد بيانات مثل Pinecone أو Qdrant الفهرسة (indexing) للعثور على أقرب الجيران في أجزاء من الثانية.
- ترحيل النماذج (Model Migrations): يستخدم كل نموذج تضمين فضاءً رياضياً مختلفاً. لا يمكنك مقارنة متجه OpenAI بمتجه Cohere. إذا قمت بتغيير النماذج، يجب عليك إعادة تضمين جميع بياناتك.
- التكلفة مقابل العائد على الاستثمار (Cost vs ROI): إعادة تضمين ملايين الأجزاء (chunks) أمر مكلف. غالباً ما تلتزم الشركات بالنماذج القديمة ما لم يكن التحسن في الدقة يبرر تكلفة الترحيل.
- احرص دائماً على تخزين أجزاء النص الخام (raw text chunks). إذا قمت بترقية نموذجك لاحقاً، يمكنك استخدام النص القديم لإنشاء متجهات جديدة.
المرحلة الثانية هي حيث يحدث الذكاء.
المصدر: https://dev.to/surajrkhonde/phase-2-embeddings-semantic-search-3lco
مجتمع تعليمي اختياري: https://t.me/GyaanSetuAi
