المستوى: مبتدئ — المقال ده موجّه للي لسه بادئ في عالم الذكاء الاصطناعي، وعايز يفهم ازاي AI بيقيس المعنى. مش هتحتاج رياضيات ثقيلة. بس Python أساسي وفضول.
لو فتحت محرك بحث وكتبت «دكتور قلب في القاهرة» وجالك نتايج فيها كلمة «طبيب قلب» من غير ما تكتبها، ده مش صدفة ولا قاموس مرادفات. ده شغل حاجة اسمها Embeddings.
Embeddings: لما المعنى يتحوّل لأرقام
المشكلة باختصار
الكمبيوتر مش بيفهم لغة. هو بيشوف الكلمات كسلاسل حروف. بالنسباله «دكتور» و«طبيب» مختلفين تمامًا، زي الفرق بين «دكتور» و«طماطم». بس انت كإنسان عارف إنهم نفس المعنى. السؤال: ازاي نخلّي الموديل يعرف ده؟
الحل اللي ظهر سنة 2013 مع ورقة Word2Vec من Google غيّر شكل البحث والـ AI بالكامل. الفكرة بسيطة: حوّل كل كلمة لقائمة أرقام (vector)، بحيث الكلمات اللي معناها قريب يبقى الأرقام بتاعتها قريبة كمان.
المثال البسيط: خريطة المدن
تخيّل خريطة مصر. القاهرة على إحداثيات معينة، الإسكندرية على إحداثيات تانية. لو حسبت المسافة بين الاتنين بقاعدة فيثاغورس البسيطة، هتلاقي الرقم بيقولّك إنهم قريبين من بعض.
طب لو طلبت منك تجيب «أقرب مدينة للقاهرة»؟ هتقارن المسافات وتختار الأصغر. كده انت عملت بحث بالقرب الجغرافي، مش بالاسم.
Embeddings بتعمل نفس الكلام بالظبط، بس مش في خريطة عاديّة. في فضاء فيه 1024 أو 1536 بُعد بدل البُعدين بتوع الخريطة. كل كلمة (أو جملة كاملة) بتتحط في نقطة من نقاط الفضاء ده. الكلمات اللي معناها قريب بتلاقيها متجمّعة في نفس المنطقة.
«دكتور» و«طبيب» في نفس الحي. «دكتور» و«طماطم» على بعد آلاف الكيلومترات.
التعريف العلمي بدقة
الـ Embedding هو تمثيل عددي كثيف (dense vector) لقطعة بيانات — كلمة، جملة، صورة، أو فيديو — في فضاء متعدد الأبعاد. الموديل بيتعلّم الفضاء ده من ملايين الأمثلة، بحيث المسافة بين أي نقطتين تعكس درجة التشابه الدلالي بينهم.
المسافة بتتحسب عادةً بـ Cosine Similarity: زاوية بين الـ vectors. لو الزاوية صفر، الكلمتين متطابقين دلاليًا. لو 90 درجة، مالهومش علاقة. لو 180 درجة، عكس بعض. القيمة بتتراوح من 1 (نفس المعنى) لـ -1 (معنى عكسي).
المصدر الأصلي للمفهوم: ورقة Mikolov et al. (Google, 2013) بعنوان "Efficient Estimation of Word Representations in Vector Space"، وبعدها OpenAI ونماذج Cohere وVoyage طوّروا embedding models تجارية بدقة أعلى.
مثال تنفيذي شغّال بـ Python
السكربت ده بياخد 4 جمل، يحوّلهم لـ embeddings عبر Voyage AI (نفس النموذج اللي Anthropic بترشّحه مع Claude)، ويطلعلك أقرب جملتين من بعض.