المستوى: مبتدئ — لا يفترض أي خلفية في تعلم الآلة، يكفي أن تعرف Python على مستوى print و loop.
لو سألت Claude أو ChatGPT: "اقترحلي مهنة قريبة من الدكتور" وجاوبك "ممرض" أو "صيدلي"، الموديل مش بيفكّر زيّك. هو بيحوّل الكلمة لرقم له موقع هندسي في فضاء متعدّد الأبعاد. الكلمات اللي معناها قريب، أرقامها قريبة. ده هو Embedding باختصار، وفي الـ 8 دقايق الجاية هتفهمه بمثال يومي وتشغّله بـ 18 سطر Python.
Embeddings: من الكلمة إلى نقطة في الفضاء
تخيّل الموقف ده الأول
افتح Google Maps وحدّد موقع مستشفى وسط القاهرة. هتلاقي حواليه على مسافة قريبة: صيدليات، عيادات، مختبرات تحاليل. أبعد شويّة: مدارس وبنوك. وبعيد جدًا: ملاهي ومطاعم. الكمبيوتر مش بيشوف الكلمات، لكن لو رتّب كل كلمة في خريطة مشابهة، يقدر يقول إن "دكتور" قريبة من "مستشفى" بنفس الطريقة اللي بيها قصر العيني قريب من صيدلية على ناصيته.
الـ Embedding هو إحداثيات الكلمة في خريطة كهذه. لكنها مش خريطة في بُعدين زي خريطة جوجل، دي خريطة في 384 أو 1024 أو 1536 بُعد. عقلك مش هيتخيّلها، لكن المعادلات الرياضية بتشتغل عليها بنفس قواعد المسافة اللي بتعرفها من هندسة الإعدادي.
التعريف العلمي بدقة
الـ Embedding هو متّجه (vector) من أرقام عشرية، طوله ثابت (مثلًا 384 أو 1024 رقم)، يمثّل قطعة نص (كلمة، جملة، أو مستند كامل) في فضاء متعدّد الأبعاد. النموذج بيتدرّب على كميات ضخمة من النصوص بحيث يضع النصوص اللي بتظهر في سياقات متشابهة قريبة من بعضها هندسيًا. هذا مبدأ يُعرف بفرضية التوزيع (Distributional Hypothesis): الكلمات اللي بتعيش في سياقات متشابهة، معانيها متشابهة.
القياس المستخدم لتحديد القُرب اسمه Cosine Similarity، وقيمته بين 1- و 1+. كلما اقتربت من 1 كلما كان المعنى أقرب. صفر يعني محايدة. السالب يعني عكس المعنى.
ليه ده يهمّك كمطوّر مبتدئ
كل تطبيق "ذكي" بتستخدمه فيه Embeddings تحت الكاپوت:
- البحث الدلالي في موقعك (شخص يكتب "ألم في الصدر" ويلاقي مقال عنوانه "أعراض احتشاء عضلة القلب").
- RAG — لما تخلّي الموديل يجاوب من ملفات شركتك بدل ما يخترع.
- تصنيف الإيميلات والتذاكر تلقائيًا.
- اقتراح منتجات قريبة في متجر إلكتروني.
- كشف التكرار في المقالات أو رسائل الدعم.
مثال شغّال بـ 18 سطر Python
هنستخدم موديل embeddings مفتوح اسمه all-MiniLM-L6-v2 من مكتبة sentence-transformers. خفيف، شغّال على CPU بدون GPU، وحجمه 90MB.
pip install sentence-transformers numpy