هذا المقال يتطلب مستوى: مبتدئ
الـ Embeddings: إزاي الذكاء الاصطناعي بيحوّل الكلام لأرقام يفهم بيها المعنى
بعد المقال ده هتعرف إزاي محرك البحث الدلالي وChatGPT بيعرفوا إن كلمة "قطة" أقرب لـ "كلب" من "سيارة"، من غير ما حد يعلّمهم ده صراحةً. السر كله في فكرة اسمها الـ Embeddings.
المشكلة باختصار
الكمبيوتر مبيفهمش كلام، هو بيفهم أرقام بس. لو خزّنت كلمة "قطة" كنص، الكمبيوتر يقدر يقارنها حرف بحرف مع "قطط"، لكنه ملوش أي فكرة إن معناهم قريب. ولو دوّرت بكلمة "سيارة" مش هيرجّعلك نتيجة فيها "عربية"، لأن الحروف مختلفة تمامًا. المطلوب طريقة تخلّي المعنى نفسه رقمًا يتقارن. دي بالظبط وظيفة الـ Embeddings.
المثال الأول: تخيّل خريطة GPS للكلمات
تخيّل خريطة زي جوجل مابس، بس بدل المدن فيها كلمات. كل كلمة ليها إحداثيات، زي خط الطول وخط العرض. الكلمات اللي معناها قريب بتتحط جنب بعض. "قطة" و"كلب" هيبقوا في حيّ واحد اسمه "حيوانات". "تفاح" و"موز" في حيّ تاني اسمه "فاكهة". و"سيارة" بعيدة خالص في ناحية تانية.
دلوقتي عشان تعرف كلمتين قريبين ولا لأ، مش محتاج تفهم معناهم — بتقيس المسافة بينهم على الخريطة وبس. ده بالظبط اللي بيعمله الكمبيوتر، لكن بدل بُعدين (طول وعرض)، بيستخدم مئات الأبعاد. الصورة اللي فوق دي نفس الفكرة: فضاء اتّرسم فيه كل مجموعة كلمات متقاربة المعنى في ركن لوحدها.
المفهوم علميًا: يعني إيه Embedding؟
الـ Embedding هو تمثيل الكلمة (أو الجملة أو الصورة) كمتجه أرقام — قائمة أرقام بطول ثابت. نموذج زي all-MiniLM-L6-v2 بيطلّع لكل جملة متجهًا فيه 384 رقم. النماذج دي اتدرّبت على ملايين النصوص، فتعلّمت تحط الكلمات اللي بتيجي في سياقات متشابهة قريبة من بعض في الفضاء ده.
النقطة المهمة: الأرقام دي مش عشوائية. اتجاه المتجه نفسه بيحمل المعنى. عشان كده عملية زي king - man + woman بتديك متجهًا قريبًا جدًا من queen. ده مش سحر، ده نتيجة إن العلاقات المعنوية اتحوّلت لعلاقات هندسية بين المتجهات.
إزاي بنقيس التشابه؟ جيب التمام (Cosine)
عشان نعرف متجهين قريبين قد إيه، بنستخدم تشابه جيب التمام (Cosine Similarity): بنقيس الزاوية بين المتجهين. زاوية صغيرة معناها معنى متقارب وقيمة قريبة من 1، وزاوية كبيرة معناها معنى بعيد وقيمة قريبة من 0.
بُص للرسم: "قطة" و"كلب" بينهم زاوية صغيرة فالتشابه عالي، لكن "سيارة" طالعة في اتجاه مختلف فالتشابه منخفض. لاحظ إننا بنقيس الزاوية مش طول المتجه، عشان كده كلمة نادرة وكلمة متكررة ممكن يبقى بينهم تشابه عالي طالما المعنى واحد.
مثال تنفيذي: احسبها بنفسك
ثبّت المكتبة الأول:
pip install sentence-transformers