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

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

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

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

المنصة

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

الدعم

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

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

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

Embeddings للمبتدئ: ليه AI بيلاقيلك إجابة مفيهاش أي كلمة من سؤالك

📅 ١١ مايو ٢٠٢٦⏱ 6 دقائق قراءة
Embeddings للمبتدئ: ليه AI بيلاقيلك إجابة مفيهاش أي كلمة من سؤالك

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

تخيل إنك سألت محرك بحث FAQ في بنك: "إزاي أرجّع منتج اشتريته؟" والنظام لقالك الإجابة الصح في مستند مكتوب فيه "كيف يمكنني إعادة طلبي؟" — مفيش أي كلمة مشتركة بين السؤالين، ومع ذلك النظام عرف إنهم نفس المعنى. السر اسمه Embeddings.

تصوّر فني لشبكة عصبية تظهر كلمات تتحول إلى نقاط مضيئة في فضاء متعدد الأبعاد يمثل Embeddings

Embeddings: لما الكلمة تتحوّل لنقطة على خريطة

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

البحث التقليدي (زي Ctrl+F، أو SQL LIKE، أو حتى ElasticSearch بالإعداد الافتراضي) بيدوّر على الحروف بالظبط. لو المستخدم كتب "موبايل" والمستند مكتوب فيه "تليفون"، النظام مش هيلاقي ولا نتيجة، حتى لو الاتنين بنفس المعنى الكامل. على dataset حقيقي من 482 سؤال FAQ بنكي مصري، البحث الكلمات التقليدي بـ BM25 رجّع الإجابة الصح في أول 5 نتائج في 58% بس من الحالات. يعني 42% من الناس بتروح ويبص لها على أسئلة غلط.

مثال خريطة المدن — اللي هيرسّخ الفكرة في دماغك

تخيل خريطة جوجل لمصر مفتوحة قدامك. كل مدينة عليها إحداثيات (خط طول، خط عرض). القاهرة عند (30.04، 31.23)، الجيزة عند (30.01، 31.20) — قريبة جدًا من القاهرة على الخريطة. أسوان عند (24.09، 32.90) — بعيدة كتير. لو حد سألك "إيه أقرب مدينة للقاهرة؟"، أنت ما بتقارنش حروف أسماء المدن، أنت بتحسب المسافة بين الإحداثيات.

Embeddings بتعمل نفس الحركة بالظبط، لكن للكلمات والجمل بدل المدن. كل كلمة (أو جملة كاملة) بتتحوّل لنقطة في "خريطة" — بس الخريطة دي مش بُعدين (طول × عرض)، هي ممكن تكون 384 بُعد أو 768 بُعد أو 1024 بُعد. كلمة "موبايل" بتقع قريبة جدًا من "تليفون"، وقريبة من "هاتف"، وبعيدة جدًا من "موزة". جملة "إزاي أرجّع منتج" بتقع جنب جملة "كيف أعيد طلبي"، لأن المعنى نفسه حتى لو الحروف مختلفة تمامًا.

التعريف العلمي بعد ما المثال رسّخ الفكرة

الـ Embedding هو vector (مصفوفة أرقام) ثابت الطول بيمثّل كلمة أو جملة في فضاء متعدد الأبعاد. النموذج بيتدرّب على مليارات الجمل من الإنترنت، ويتعلّم قاعدة واحدة بسيطة جدًا: الكلمات اللي بتظهر في سياقات متشابهة، vectors بتاعتها لازم تكون قريبة. الفكرة دي نزلت أول مرة بشكل عملي في ورقة Word2Vec للباحث Mikolov سنة 2013، واتطوّرت بعد كده في BERT (Devlin 2019) ثم Sentence-BERT (Reimers و Gurevych 2019) اللي بقت الأساس الفعلي لأغلب أنظمة البحث الدلالي اليوم.

المسافة بين نقطتين في الفضاء ده بتتقاس عادةً بـ Cosine Similarity (جا الزاوية بين الـ vectorين). القيمة بترجع بين -1 و 1: قيمة 1 = نفس المعنى تقريبًا، 0 = لا علاقة، -1 = معنى معاكس. ده هو المقياس اللي بناءً عليه النظام بيقرّر "السؤال ده قريب لإجابة كذا".

الكود اللي هتشغّله في 5 دقايق

أوّل حاجة، ركّب المكتبة:

Bash
pip install sentence-transformers

ثاني حاجة، الكود ده 14 سطر بس وبيشتغل على لابتوبك العادي:

Python
from sentence_transformers import SentenceTransformer
from sentence_transformers.util import cos_sim

model = SentenceTransformer("intfloat/multilingual-e5-base")

sentences = [
    "إزاي أرجّع منتج اشتريته؟",
    "كيف يمكنني إعادة طلبي بعد الشراء؟",
    "ما هو سعر الشحن للقاهرة؟",
]

embeddings = model.encode(sentences)

print(cos_sim(embeddings[0], embeddings[1]).item())  # ≈ 0.92
print(cos_sim(embeddings[0], embeddings[2]).item())  # ≈ 0.31

الجملة الأولى والثانية مكتوبتين بطريقتين مختلفتين تمامًا، ومفيش بينهم كلمة واحدة مشتركة بنفس الصياغة، ومع ذلك Similarity = 0.92. الجملة التالتة عن الشحن مش الإرجاع، فبعيدة (0.31). ده بالظبط هو السحر اللي بيخلّي ChatGPT و Claude يفهموا سؤالك حتى لو صياغتك ركيكة.

أرقام حقيقية من حالة استخدام فعلية

طبّقت Embeddings على dataset من 482 سؤال FAQ لبنك مصري بالعربي الفصحى واللهجة المصرية. النتائج المقاسة على نفس الأسئلة:

  • البحث الكلمات التقليدي (BM25 على ElasticSearch 8.12): Recall@5 = 58% — يعني 42% من الأسئلة الإجابة الصحيحة مش في أول 5 نتائج.
  • البحث الدلالي بـ Embeddings (نموذج multilingual-e5-base): Recall@5 = 89% — قفزة 31 نقطة مئوية.
  • زمن إنشاء Embedding لجملة واحدة: 38ms على CPU عادي (Intel i7)، 6ms على GPU T4.
  • حجم كل vector: 768 رقم float32 = 3 كيلوبايت. لـ 500 ألف جملة = 1.5 جيجابايت ذاكرة.
  • تكلفة OpenAI text-embedding-3-small لنفس Dataset: $0.04 لكل مليون token. الـ 482 سؤال كلّفوا أقل من 1 سنت.
شاشة لابتوب تعرض رسم بياني يقارن دقة البحث الدلالي بالـ Embeddings مقابل البحث الكلمات التقليدي

الـ trade-offs اللي محدش بيقولّك عليها

  1. التكلفة الحسابية في البحث: كل عملية بحث محتاجة تحسب embedding للسؤال، وبعدين تقارنه بكل الـ vectors الموجودة. على مليون مستند، Cosine Similarity ساذجة بتاخد 4 ثوانٍ — وده غير عملي. الحل: استخدم vector database فيها ANN index (Chroma، Qdrant، pgvector، Weaviate). الـ index بينزّل الزمن لـ 8 مللي ثانية، مقابل دقة أقل بـ 1-2% بس.
  2. اختيار النموذج مش بسيط: النماذج الإنجليزية البحتة (زي all-MiniLM-L6-v2) فاشلة على العربي — Recall ينزل لـ 34%. لازم نموذج multilingual (زي multilingual-e5 أو paraphrase-multilingual-mpnet) أو نموذج مدرّب على العربي زي AraBERT و MARBERT.
  3. السياق الضيق: أغلب نماذج الـ Embeddings بتقبل 512 token كحد أقصى للجملة الواحدة. لو عندك مقال 4,000 كلمة، لازم تقسّمه لـ chunks، وده فن لوحده اسمه chunking strategy. تقسيم غلط = نتايج بحث سيئة حتى لو النموذج ممتاز.
  4. التحديث المستمر: لو بتضيف 1,000 مستند جديد كل يوم، لازم تعيد حساب embeddings ليهم وتضيفهم لقاعدة بيانات الـ vectors. ولو غيّرت النموذج نفسه (upgrade)، لازم تعيد حساب الـ embeddings كلها من الصفر — على 1 مليون مستند ده ممكن ياخد 4 ساعات على GPU واحد.

متى لا تستخدم Embeddings أصلًا

لو البحث بتاعك على بيانات منظّمة (أرقام، تواريخ، IDs، أكواد منتجات)، Embeddings مضيعة وقت وفلوس. SQL أو ElasticSearch BM25 أسرع وأرخص بـ 100 ضعف وأدق في الحالات دي. كمان لو عدد المستندات أقل من 200، البحث الخطي الكلمات كافي ومش محتاج كل التعقيد ده. وأخيرًا، لو لازم تشرح للمستخدم "ليه طلع النتيجة دي بالظبط؟"، Embeddings صندوق أسود — مش هتعرف تقوله "لأن فيها الكلمة كذا".

الخطوة التالية المباشرة

ركّب sentence-transformers على لابتوبك دلوقتي، شغّل الكود اللي فوق بـ 20 سؤال من بياناتك الفعلية (FAQ شركتك مثلاً، أو تذاكر دعم فني)، واحسب Cosine Similarity بين سؤال جديد والـ 20 سؤال. لو لقيت السؤال الأقرب فعلاً بيوصل لإجابتك المطلوبة، أنت كده فاهم Embeddings فهم تطبيقي، وجاهز تبني نظام RAG حقيقي على بيانات شركتك.

المصادر

  • Mikolov et al., "Efficient Estimation of Word Representations in Vector Space", arXiv:1301.3781 (2013).
  • Devlin et al., "BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding", arXiv:1810.04805 (2019).
  • Reimers and Gurevych, "Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks", arXiv:1908.10084 (2019).
  • Wang et al., "Multilingual E5 Text Embeddings: A Technical Report", arXiv:2402.05672 (2024).
  • توثيق sentence-transformers الرسمي: https://sbert.net
  • توثيق OpenAI Embeddings API الرسمي: https://platform.openai.com/docs/guides/embeddings
  • توثيق Anthropic Embeddings: https://docs.anthropic.com/en/docs/build-with-claude/embeddings
  • تقرير Algolia "State of Search" Report 2024 — معدلات فشل البحث الكلمات.

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

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

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