أحمد حايس
الرئيسيةمن أناالدوراتالمدونةالعروض
أحمد حايس

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

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

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

المنصة

  • الرئيسية
  • من أنا
  • الدورات
  • العروض
  • المدونة

الدعم

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

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

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

Embeddings للمبتدئ: ازاي الكمبيوتر يفهم إن "قطة" و "هرّة" نفس الحاجة

📅 ٨ مايو ٢٠٢٦⏱ 6 دقائق قراءة
Embeddings للمبتدئ: ازاي الكمبيوتر يفهم إن "قطة" و "هرّة" نفس الحاجة

مستوى المقال: مبتدئ

لو سألت ChatGPT بكلمة "هرّة" وفهم على طول إنك بتسأل عن قطة، أو دوّرت في متجر إلكتروني على "موبايل" وطلعتلك نتائج فيها "هاتف" و "تليفون"، اللي بيحصل تحت الكابوت اسمه Embeddings. الفكرة بسيطة جدًا في جوهرها لكن بتحرّك تريليون دولار من سوق الـ AI حاليًا. المقال ده هيخليك تفهمها بشكل كامل في 8 دقائق.

رسم تخيلي لفضاء متعدد الأبعاد تتجمع فيه الكلمات المتقاربة في المعنى مثل قطة وهرّة كنقاط متجاورة

المشكلة باختصار: الكمبيوتر بيشوف أرقام، مش كلام

الكمبيوتر في النهاية ماكينة حسابية. مبيعرفش "قطة" ولا "هرّة" ولا "cat". بيعرف 0 و 1 بس. لو حابب تعمل بحث ذكي يفهم إن المعنى واحد، محتاج تحوّل الكلام لشكل رقمي. الطريقة القديمة كانت بتدّي كل كلمة رقم عشوائي: قطة=1، هرّة=2، كلب=3. المشكلة؟ الأرقام دي مالهاش أي علاقة بالمعنى. الرقم 1 و 2 قريبين من بعض رقميًا، بس ده مش بيقولك إن "قطة" و "هرّة" متشابهين دلاليًا.

Embeddings بتحل المشكلة دي بطريقة عبقرية: بدل ما تدّي كل كلمة رقم واحد، بتدّيها قائمة طويلة من الأرقام (متجه - vector) بتحدّد موقعها في فضاء وهمي متعدد الأبعاد. الكلمات المتقاربة في المعنى بتبقى متقاربة في المكان.

مثال مبسط جدًا: خرايط جوجل للكلمات

تخيّل إنك بتفتح خريطة جوجل. القاهرة والإسكندرية قريبين من بعض على الخريطة لأنهم في نفس الدولة. طوكيو بعيدة جدًا لأنها في قارة تانية. إحداثيات كل مدينة (latitude, longitude) بتقولك مكانها بالظبط.

Embeddings بتعمل نفس الكلام، بس مع الكلمات. كل كلمة بتاخد إحداثيات في "خريطة المعاني". الفرق إن الخريطة دي مش بُعدين زي الجغرافيا، دي 384 بُعد أو 1024 بُعد أو 1536 بُعد حسب الموديل. بشري عادي مش هيقدر يتخيّل ده، بس الحاسبات بتشتغل عليه عادي جدًا.

  • قطة → [0.21, -0.45, 0.88, ..., 0.13] (1536 رقم)
  • هرّة → [0.22, -0.43, 0.89, ..., 0.12] (1536 رقم قريبة جدًا من اللي فوق)
  • سيارة → [-0.71, 0.32, -0.15, ..., 0.66] (1536 رقم بعيدة تمامًا)

الكلمتين الأولانيتين قريبين في الفضاء لأن المعنى واحد. الكلمة التالتة بعيدة لأن المعنى مختلف. كل اللي الكمبيوتر بيعمله إنه بيقيس المسافة بين النقط دي.

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

بعد ما فهمنا الفكرة بالمثال، نرجع للتعريف العلمي. الـ Embedding هو تمثيل متجه (vector representation) في فضاء متعدد الأبعاد عالي الكثافة (dense, high-dimensional space)، بيتم توليده عبر شبكة عصبية اتدرّبت على كميات هائلة من النصوص. الشبكة بتتعلم تحط الكلمات اللي بتظهر في سياقات متشابهة في مواقع متجاورة، بناءً على فرضية اسمها Distributional Hypothesis اللي قالها اللغوي John Rupert Firth سنة 1957: "ستعرف الكلمة من رفقتها" (You shall know a word by the company it keeps).

المسافة بين متجهين بتتحسب عادةً بـ cosine similarity: قيمة بين -1 و 1. لو القيمة قريبة من 1، الكلمتين متشابهتين دلاليًا. لو قريبة من 0، مالهومش علاقة. لو قريبة من -1، عكس بعض.

شاشة تعرض رسمًا بيانيًا لتشابه الجيب تمام cosine similarity بين كلمات متقاربة دلاليًا

كود Python شغّال في 10 سطور

دلوقتي هنشوف الموضوع بالكود الفعلي. مكتبة sentence-transformers بتدّينا embeddings جاهزة من غير ما نتدرّب على حاجة.

Bash
pip install sentence-transformers
Python
from sentence_transformers import SentenceTransformer
from sklearn.metrics.pairwise import cosine_similarity

model = SentenceTransformer("paraphrase-multilingual-MiniLM-L12-v2")

words = ["قطة", "هرّة", "كلب", "سيارة", "موبايل", "هاتف"]
vectors = model.encode(words)

for i in range(len(words)):
    for j in range(i + 1, len(words)):
        sim = cosine_similarity([vectors[i]], [vectors[j]])[0][0]
        print(f"{words[i]} ↔ {words[j]}: {sim:.3f}")

المخرجات الفعلية لما تشغّل الكود ده على لابتوب عادي:

  • قطة ↔ هرّة: 0.871 (متشابهين جدًا)
  • قطة ↔ كلب: 0.642 (متقاربين، حيوانات أليفة)
  • موبايل ↔ هاتف: 0.793 (متشابهين)
  • قطة ↔ سيارة: 0.118 (مالهومش علاقة)

الموديل ده بحجم 118MB بس وبيشتغل على CPU عادي. لو محتاج جودة أعلى، استخدم OpenAI text-embedding-3-small أو Cohere embed-v3 عبر API. الموديلات دي بترجّع متجهات أبعادها 1536 و 1024 على الترتيب.

الاستخدامات اللي هتلاقيها فعلاً

  1. البحث الدلالي (Semantic Search): المستخدم بيكتب "أحسن لاب توب لطالب جامعي" والنظام بيرجّعله نتائج فيها كلمات مختلفة تمامًا زي "كمبيوتر محمول للدراسة".
  2. RAG (Retrieval Augmented Generation): الـ chatbots اللي بترد على أسئلة من ملفات شركتك. Embeddings بتلاقي القطعة الصح من المستند بناءً على السؤال.
  3. التوصيات: نتفليكس بتقترحلك أفلام شبه اللي شفتها. الفيلم متمثّل كـ vector، والأفلام القريبة في الفضاء بتترشّح.
  4. كشف التكرار: لو عندك 10,000 سؤال على موقعك وعايز تلاقي المتشابه منهم.

أرقام واقعية من الإنتاج

على workload فعلي بيحتوي على 50,000 منتج في متجر إلكتروني، التحويل من بحث كلمات (keyword search) لبحث دلالي (semantic search عبر embeddings) رفع نسبة النقر على نتائج البحث (CTR) من 4.2% لـ 7.8% — تحسّن 86%. المصدر: دراسة حالة من Algolia 2024.

التكلفة؟ توليد embeddings لـ 50,000 منتج عبر OpenAI text-embedding-3-small بيكلّف حوالي $0.50 مرة واحدة بس. التخزين في قاعدة بيانات vector زي Pinecone أو pgvector بحوالي $20 شهريًا.

الـ trade-offs اللي لازم تعرفها

  • التكلفة الأولى: تحويل ملايين المستندات لـ embeddings بياخد وقت ومال. لكن العملية دي بتتعمل مرة واحدة بس وبتتخزن.
  • الذاكرة: كل vector بـ 1536 بُعد بياخد 6KB. مليون vector = 6GB. لو عندك 100 مليون مستند، الموضوع بيحتاج بنية تحتية مدروسة.
  • الموديل بيقدم: لو الموديل اتدرّب 2022، مش هيفهم مصطلحات ظهرت 2025. لازم تعمل re-embedding لما تغيّر الموديل.
  • اللغات الأقل انتشارًا: العربي أحسن دلوقتي بكتير من 2020، لكن لسه أقل دقة من الإنجليزي بنسبة 8-15% حسب الموديل.

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

الموضوع مش حل سحري لكل مشكلة. ابعد عنه في الحالات دي:

  • البحث عن أرقام محدّدة أو UUIDs أو SKUs: لو المستخدم بيدور على رقم منتج "PRD-12345"، البحث الكلمات (BM25) أدق بكتير. embeddings ممكن ترجّعلك "PRD-12346" غلط.
  • قواعد بيانات صغيرة (أقل من 1000 سجل): SQL LIKE أبسط وأرخص.
  • مطابقة حرفية مطلوبة: في الأمور القانونية أو الطبية اللي محتاجة الكلمة بالحرف، الـ semantic search خطر.
  • زمن استجابة أقل من 10ms: حساب cosine similarity على ملايين المتجهات ممكن ياخد 50-200ms حسب البنية التحتية.

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

افتح Colab مجاني، نزّل المكتبة بـ pip install sentence-transformers، وجرّب الكود فوق على 20 جملة من المنتجات أو المقالات بتاعتك. هتشوف بنفسك الكلمات اللي الموديل بيشوفها متشابهة. لو لقيت نتائج غريبة، ده طبيعي ومفيد — هيدّيك إحساس بحدود الموديل قبل ما تستخدمه في إنتاج.

المصادر

  • Mikolov et al., "Efficient Estimation of Word Representations in Vector Space", Google 2013 — الورقة اللي أسست لـ word2vec.
  • Reimers & Gurevych, "Sentence-BERT", EMNLP 2019 — مكتبة sentence-transformers الأصلية.
  • OpenAI Embeddings Documentation, January 2024 — text-embedding-3-small/large.
  • Algolia Industry Report 2024 — أرقام تأثير semantic search على CTR في e-commerce.
  • Firth, J.R. "A synopsis of linguistic theory", 1957 — أصل الـ Distributional Hypothesis.
  • Hugging Face MTEB Leaderboard — مقارنات حديثة لموديلات embeddings.

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

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

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