الرئيسيةمن أناالدوراتالمدونةسوق الأوامرالمناهج والباقاتالشركاء

دورات عربية متخصصة في التقنية والبرمجة والذكاء الاصطناعي.

المنصة مبنية على الوضوح، التطبيق، والنتيجة النافعة: شرح مرتب يساعدك تفهم الأدوات، تكتب كودًا أفضل، وتستخدم الذكاء الاصطناعي بوعي داخل العمل الحقيقي.

المنصة

  • الرئيسية
  • من أنا
  • الدورات
  • المناهج والباقات
  • سوق الأوامر
  • المدونة

الدعم

  • الأسئلة الشائعة
  • تواصل معنا
  • سياسة الخصوصية
  • شروط استخدام التطبيق
  • سياسة الاسترجاع

© 2026 أحمد حايس. جميع الحقوق محفوظة.

الرئيسيةالدوراتالمناهجالمدونةالدخول
الذكاء الاصطناعي

التضمين Embeddings: إزاي يتحوّل الكلام لأرقام تحمل معناه؟

مبتدئ29 يوليو 20265 دقائق قراءة
التضمين Embeddings: إزاي يتحوّل الكلام لأرقام تحمل معناه؟

مستوى المقال: مبتدئ. يكفي أن تعرف إن "المتجه" مجرد قائمة أرقام. لا تحتاج أي رياضيات متقدمة، هنشرح كل حاجة بمثال أول.

التضمين (Embeddings): تحويل الكلمات لأرقام لها معنى

بعد المقال ده هتعرف إزاي الكمبيوتر يقيس إن كلمة "قط" أقرب لـ"قطة" منها لـ"سيارة"، وتقدر تبني بحث بيفهم المعنى مش بس الحروف المتطابقة.

المشكلة باختصار

الكمبيوتر مبيفهمش كلام. بيفهم أرقام بس. لو خزّنت كلمة "قط" كنص، الكمبيوتر يقدر يقارنها حرفيًا بكلمة تانية: متطابقة ولا لأ. خلاص. مفيش عنده فكرة إن "قط" و"قطة" معناهم قريب، وإن "سيارة" بعيدة عنهم. المشكلة دي بتظهر بوضوح لما تبني بحث. لو المستخدم كتب "موبايل" وانت مخزّن "هاتف محمول"، البحث الحرفي هيرجّع صفر نتائج رغم إنهم نفس الحاجة.

مثال يقرّب الفكرة: خريطة المعاني

تخيّل إن عندك خريطة، لكن بدل ما تحط عليها مدن، بتحط عليها كلمات. كل كلمة ليها إحداثيات (زي خطوط الطول والعرض). القاعدة الوحيدة في الخريطة دي: الكلمات اللي معناها قريب، بتتحط قريّبة من بعض في المكان.

يبقى "قط" و"قطة" هيبقوا جنب بعض في ركن الحيوانات. و"تفاحة" و"موزة" في ركن تاني بعيد، ركن الفاكهة. لو سألت "إيه أقرب كلمة لـقط؟"، بترد بأقرب نقطة على الخريطة. الصورة اللي فوق دي بالظبط خريطة زي كده: شوف "king" و"queen" و"prince" متجمّعين، و"dog" و"cat" في ناحية، والفاكهة في ناحية تالتة.

الإحداثيات دي هي الـ Embedding. الفرق الوحيد إن الخريطة الحقيقية مش بُعدين (طول وعرض) بس، دي مئات الأبعاد. بس الفكرة واحدة: مكان = معنى.

يعني إيه Embedding بالظبط؟

الـ Embedding هو قائمة أرقام (متجه) بتمثّل كلمة أو جملة. نموذج مدرّب على كميات ضخمة من النصوص بيتعلّم يدّي كل كلمة متجه، بحيث الكلمات اللي بتظهر في سياقات متشابهة تاخد متجهات متقاربة. مثلًا نموذج زي paraphrase-multilingual-MiniLM-L12-v2 بيطلع لكل جملة متجه فيه 384 رقم. النموذج مشافش تعريف "قط" في قاموس؛ اتعلّم معناها من إنها بتيجي جنب كلمات زي "مواء" و"حيوان" و"ذيل" في ملايين الجمل.

الافتراض المهم هنا: الكلمات اللي بتشترك في السياق، بتشترك في المعنى. ده مبدأ لغوي قديم اسمه "الدلالة التوزيعية"، والنماذج الحديثة بتطبّقه بالأرقام.

إزاي نقيس التشابه؟ التشابه بالكوني

بعد ما بقى كل كلمة متجه، التشابه بقى مسألة هندسية بسيطة. بنقيس الزاوية بين المتجهين. زاوية صغيرة معناها اتجاه متقارب، يعني معنى متقارب. المقياس ده اسمه Cosine Similarity، وبيطلع رقم بين 1 (نفس الاتجاه، تشابه تام) و0 (مالهمش علاقة).

ركز في الصورة: "قط" و"قطة" الزاوية بينهم صغيرة، فالتشابه عالي. "سيارة" اتجاهها بعيد، فالتشابه واطي. الكود ده بيعمل نفس الحساب فعليًا:

Python

# pip install sentence-transformers
from sentence_transformers import SentenceTransformer, util

# نموذج بيدعم العربي، ويطلع متجه فيه 384 رقم لكل جملة
model = SentenceTransformer("paraphrase-multilingual-MiniLM-L12-v2")

words = ["قط", "قطة", "سيارة"]
emb = model.encode(words)

print(util.cos_sim(emb[0], emb[1]).item())  # قط  vs قطة   ≈ 0.82
print(util.cos_sim(emb[0], emb[2]).item())  # قط  vs سيارة ≈ 0.18

الأرقام دي تقريبية وبتختلف حسب النموذج، لكن الترتيب ثابت: قط/قطة أعلى بكتير من قط/سيارة. دي الحاجة اللي بتخلّي البحث يفهم إن "موبايل" و"هاتف محمول" نفس الشئ.

سيناريو واقعي بالأرقام

لو عندك متجر فيه 10,000 منتج، وعايز بحث دلالي. بتحوّل وصف كل منتج لمتجه 384-بُعد مرة واحدة وتخزّنه. المساحة المطلوبة: 10,000 × 384 × 4 بايت ≈ 15 ميجابايت بس. وقت البحث الواحد: بتحوّل كلمة المستخدم لمتجه، وتقارنها بالكل، وده بياخد أقل من 50 مللي ثانية على سيرفر عادي. النتيجة: المستخدم يكتب "حاجة أعيّط بيها" ويلاقي "منبّه"، رغم إن مفيش حرف مشترك.

المقايضات (trade-offs)

الـ trade-off هنا واضح. بتكسب: فهم المعنى، فبحثك بيشتغل حتى مع المرادفات والصياغات المختلفة. بتخسر: تكلفة حساب وتخزين، لأنك محتاج تطلّع متجه لكل عنصر وتخزّنه. وفيه مقايضة تانية في حجم المتجه نفسه: متجه 1536 رقم (زي نماذج OpenAI) بيمسك تفاصيل أدق من متجه 384، بس بياخد ذاكرة وحساب أكتر بأربع مرات تقريبًا. الافتراض إن بياناتك بالآلاف أو الملايين؛ لو أقل من كده، المكسب مش هيبان.

متى لا تستخدم Embeddings

مش كل بحث محتاج فهم معنى. متستخدمهاش في الحالات دي:

  • مطابقة حرفية دقيقة: لو بتدوّر على كود منتج (SKU) أو رقم فاتورة أو بريد إلكتروني، انت عايز تطابق بالظبط. البحث الحرفي أدق وأرخص هنا، والـ Embeddings ممكن ترجّعلك "قريب" وانت مش عايز قريب.
  • بيانات صغيرة جدًا: لو عندك 30 عنصر بس، بحث بالكلمة المفتاحية أبسط وأسرع في التنفيذ، ومش مستاهل تعقيد النماذج.
  • لما تحتاج تفسير واضح للنتيجة: الـ Embedding بيقولك "دول متشابهين" لكن مش بيقولك "ليه". لو محتاج سبب صريح لكل نتيجة، ده مش أداتك.

الخطوة التالية

ثبّت sentence-transformers بأمر واحد: pip install sentence-transformers، وشغّل الكود اللي فوق على 5 جمل حقيقية من مجالك انت. بصّ لقيم التشابه: هتلاقي الجمل المتقاربة معناها بتطلع فوق 0.6، والبعيدة تحت 0.3. لو الترتيب طلع منطقي، انت جاهز تبني عليه بحث حقيقي.

مصادر

  • ورقة word2vec الأصلية، Mikolov وآخرون 2013: arxiv.org/abs/1301.3781
  • Google Machine Learning Crash Course — Embeddings: developers.google.com/machine-learning/crash-course/embeddings
  • توثيق مكتبة Sentence-Transformers (SBERT): sbert.net
  • دليل OpenAI للـ Embeddings وأبعاد المتجهات: platform.openai.com/docs/guides/embeddings

هل استفدت من المقال؟

اطّلع على المزيد من المقالات والدروس المجانية من نفس المسار المعرفي.

تصفّح المدونة