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

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

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

تعلم أسرعوصول مباشر للدورات والمسارات من الموبايل.
تنقل أوضحالروابط الأساسية والدعم في مكان واحد بدون تشتيت.

المنصة

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

الدعم

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

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

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

الـ Embeddings للمبتدئين: كيف يفهم الحاسوب معنى الكلمات؟

مبتدئ٦ يوليو ٢٠٢٦4 دقائق قراءة
الـ Embeddings للمبتدئين: كيف يفهم الحاسوب معنى الكلمات؟

مستوى المقال: مبتدئ. لو سمعت كلمة Embeddings كتير وحسّيت إنها كلمة تخويف، المقال ده هيفكّها لك من الصفر بمثال بسيط وكود تقدر تشغّله بنفسك في دقيقتين.

الـ Embeddings للمبتدئين: كيف يفهم الحاسوب أن "قطة" و"كلب" متقاربتان؟

الحاسوب لا يعرف معنى كلمة "قطة". هو يتعامل مع أرقام فقط. ومع ذلك، لو سألت ChatGPT أو محرك بحث ذكي عن "قطة" فقد يرشّح لك محتوى عن "كلب" أو "حيوان أليف". السر وراء ده حاجة اسمها Embeddings. في نهاية المقال هتعرف بالظبط إيه هي، وهتشغّل كود يقيس التشابه بين كلمتين بنفسك.

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

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

الفكرة بمثال بسيط: مدينة الأحياء

تخيّل مدينة سكانها بيتوزّعوا حسب المهنة. كل الأطباء يسكنون في حي واحد، وكل المهندسين في حي تاني، والفنانين في حي ثالث. لو أعطيتك عنوان بيت شخص لا تعرفه، تقدر تخمّن مهنته من الحي اللي هو فيه. والأقرب في العنوان غالبًا الأقرب في المهنة.

الـ Embeddings بتعمل نفس الحاجة بالظبط مع الكلمات. بتدّي كل كلمة "عنوانًا" (إحداثيات) في فضاء. الكلمات المتقاربة في المعنى بتاخد عناوين متجاورة. "قطة" و"كلب" جيران في حي الحيوانات، و"سيارة" و"شاحنة" جيران في حي بعيد. المسافة بين العنوانين هي مقياس قرب المعنى.

التعريف العلمي بدقة

الـ Embedding هو متجه (قائمة أرقام حقيقية) بيمثّل الكلمة. مثلًا نموذج شائع زي all-MiniLM-L6-v2 بيحوّل أي جملة لمتجه من 384 رقمًا. النموذج بيتدرّب على كميات ضخمة من النصوص بحيث الكلمات اللي بتظهر في سياقات متشابهة تاخد متجهات متقاربة. النتيجة: المعنى بقى موقعًا في مكان، والقرب في المكان = قرب في المعنى.

كيف يقيس الحاسوب "القرب"؟

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

كود شغّال تجرّبه بنفسك

الكود ده يشتغل فورًا بدون أي تحميل، لأننا كتبنا المتجهات بأيدينا للتوضيح:

Python
# مثال قابل للنسخ والتشغيل مباشرة
import numpy as np

embeddings = {
    "قطة":   np.array([0.90, 0.80, 0.10, 0.00]),
    "كلب":   np.array([0.85, 0.82, 0.12, 0.00]),
    "سيارة": np.array([0.10, 0.05, 0.90, 0.80]),
}

def cosine(a, b):
    return a @ b / (np.linalg.norm(a) * np.linalg.norm(b))

print(round(cosine(embeddings["قطة"], embeddings["كلب"]), 2))    # 1.0
print(round(cosine(embeddings["قطة"], embeddings["سيارة"]), 2))  # 0.22

في الواقع مش هتكتب المتجهات بنفسك. هتستخدم نموذجًا جاهزًا يولّدها لك من الجُمل:

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

model = SentenceTransformer("all-MiniLM-L6-v2")  # 384 رقمًا لكل جملة
sents = ["القطة تلعب في الحديقة",
         "الكلب يجري في الحديقة",
         "السيارة تسير في الطريق"]
emb = model.encode(sents)

print(round(float(util.cos_sim(emb[0], emb[1])), 2))  # ~0.63
print(round(float(util.cos_sim(emb[0], emb[2])), 2))  # ~0.18

سيناريو واقعي: بحث بالمعنى

لو عندك متجر فيه 100 ألف منتج، وحوّلت كل عنوان منتج لمتجه مرة واحدة وخزّنته، البحث بالمعنى بيرجّع أقرب النتائج في أقل من 50 مللي ثانية على معالج عادي (CPU) باستخدام مكتبة زي FAISS. فلمّا العميل يكتب "عربية عائلية" هيلاقي منتجات مكتوب فيها "سيارة SUV" رغم اختلاف الكلمات، لأن المعنى قريب.

الـ trade-off هنا

الـ Embeddings بتكسب المعنى، بس بتخسر الدقة الحرفية. لو دوّرت على "آيفون 13" ممكن يرجّعلك "آيفون 14" كنتيجة شديدة الشبه، وده ممتاز للمعنى وسيّئ لما تحتاج تطابقًا حرفيًا. التكلفة كمان في التخزين: 384 رقمًا × 4 بايت = حوالي 1.5 كيلوبايت لكل عنصر، يعني مليون عنصر يقرب من 1.5 جيجابايت، بالإضافة لقاعدة بيانات متجهات.

الافتراض إن هذا الشرح مبني على استخدام نموذج جاهز (pre-trained)، مش تدريب نموذج من الصفر.

متى لا تستخدم هذه الطريقة

متستخدمش Embeddings لما تحتاج تطابقًا حرفيًا دقيقًا: أرقام تعريفية، أكواد منتجات، أو استعلام SQL على مفتاح مضبوط. في الحالات دي البحث النصي العادي أسرع وأدق وأرخص. وكمان لو بياناتك صغيرة جدًا (عشرات السطور)، البحث بمطابقة النص كافي ومش محتاج التعقيد ده.

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

ثبّت المكتبة بأمر pip install sentence-transformers، وخُد 10 عناوين من منتجاتك أو مقالاتك، حوّلها لمتجهات، واحسب التشابه بينها. شوف أي جوز النموذج شايفهم الأقرب، وقارن بحدسك أنت.

المصادر

  • Mikolov et al., 2013 — "Efficient Estimation of Word Representations in Vector Space": arxiv.org/abs/1301.3781
  • Reimers & Gurevych, 2019 — "Sentence-BERT": arxiv.org/abs/1908.10084
  • Google ML Crash Course — Embeddings: developers.google.com/machine-learning/crash-course/embeddings
  • Sentence-Transformers: sbert.net

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

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

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