المستوى: مبتدئ
لو دوّرت في Google عن "أحسن لاب توب لطالب جامعي"، أول نتيجة ممكن يكون عنوانها "أفضل أجهزة كمبيوتر محمول لطلاب الكليات". مفيش كلمة واحدة مشتركة بين السؤال والإجابة، ومع ذلك Google لقى الصفحة دي وحطّها فوق كل حاجة. السحر اللي بيخلّي ده يحصل اسمه Vector Embeddings، وهتفهمه كله في 10 دقايق قراية.
إيه هي الـ Vector Embeddings بالظبط
قبل ما ندخل في التعريف العلمي، خد المثال ده الأول علشان الفكرة تثبت في دماغك.
أمين المكتبة الذكي
تخيّل مكتبة فيها 10 آلاف كتاب، وأمين المكتبة قرّر يرتّبهم على الرفوف بطريقة غير عادية. مش بترتيب أبجدي ولا بحسب اسم الكاتب. الترتيب بحسب المعنى والموضوع: كتب الطبخ المصري جنب الطبخ الشامي، كتب فيزياء الكم جنب ميكانيكا الكم، الشعر الجاهلي جنب الشعر الأموي.
دلوقتي لما تيجيله وتقول له "عايز كتاب عن الذرّة"، هو مش هيدوّر على كلمة "ذرّة" في الفهرس. هيمشيك على رف الفيزياء وهيقولك: "الكتب اللي حواليك دي كلها قريبة من اللي بتدوّر عليه". ممكن تلاقي كتاب عنوانه "أساسيات الجسيمات الأولية"، كلمة "ذرّة" مش موجودة في العنوان أصلاً، لكن مكانه على الرف بيقول إن المعنى قريب جداً.
الـ Vector Embeddings بتعمل نفس الكلام بالظبط، بس بدل رف واحد طوله 50 متر، الفضاء ده فيه 384 محور أو 768 أو 1,536 (حسب النموذج). كل كلمة أو جملة بتاخد إحداثيات في الفضاء ده. الكلام اللي معناه قريب، بياخد إحداثيات قريبة.
التعريف العلمي بدقة
الـ Embedding هو متجه (vector) من أرقام عشرية، بيتولّد من نموذج neural network مدرّب على كميات ضخمة من النصوص. النموذج بيشوف ملايين الجمل وبيتعلّم إن الكلمات اللي بتظهر في سياقات متشابهة لازم ياخدوا متجهات متقاربة.
الفكرة دي اتقدّمت رسمياً في ورقة Word2Vec بتاعة Tomas Mikolov سنة 2013، وبتقول حاجة بسيطة: "الكلمة بتعرّفها الكلمات اللي بتجيلها جنبها" (Distributional Hypothesis). يعني كلمة "كلب" بتظهر جنب "ينبح" و"ذيل" و"حيوان" أكتر من ما بتظهر جنب "محرك" و"بنزين". النتيجة: المتجه بتاع "كلب" بيكون قريب من "جرو" وبعيد عن "سيارة".
الـ "قُرب" هنا بيتقاس بـ cosine similarity، رقم بين -1 و 1. القريب جداً = 1، المعاكس تماماً = -1، اللي مالوش علاقة = حوالي 0.
كود Python شغّال في 12 سطر
هنستخدم نموذج multilingual-e5-small اللي بيدعم العربية. ركّب المكتبة الأول:
pip install sentence-transformers numpyوبعدين الكود ده يقيس قُرب المعنى بين 3 جمل عربية: