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

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

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

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

المنصة

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

الدعم

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

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

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

Vector Embeddings للمبتدئ: ليه الـ AI بيفهم إن "كلب" و"جرو" متشابهين

📅 ٨ مايو ٢٠٢٦⏱ 5 دقائق قراءة
Vector Embeddings للمبتدئ: ليه الـ AI بيفهم إن "كلب" و"جرو" متشابهين

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

لو دوّرت في Google عن "أحسن لاب توب لطالب جامعي"، أول نتيجة ممكن يكون عنوانها "أفضل أجهزة كمبيوتر محمول لطلاب الكليات". مفيش كلمة واحدة مشتركة بين السؤال والإجابة، ومع ذلك Google لقى الصفحة دي وحطّها فوق كل حاجة. السحر اللي بيخلّي ده يحصل اسمه Vector Embeddings، وهتفهمه كله في 10 دقايق قراية.

تصور بصري لنقاط بيانات متصلة في فضاء متعدد الأبعاد يمثل الـ Vector Embeddings في الذكاء الاصطناعي

إيه هي الـ 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.

لوحة دوائر إلكترونية تمثل البنية التحتية للنماذج العصبية المسؤولة عن توليد الـ Embeddings

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

هنستخدم نموذج multilingual-e5-small اللي بيدعم العربية. ركّب المكتبة الأول:

Bash
pip install sentence-transformers numpy

وبعدين الكود ده يقيس قُرب المعنى بين 3 جمل عربية:

Python
from sentence_transformers import SentenceTransformer
import numpy as np

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

texts = [
    "query: الكلب بينبح في الحديقة",
    "query: الجرو الصغير بيلعب",
    "query: السيارة الجديدة سريعة جداً",
]
embeddings = model.encode(texts, normalize_embeddings=True)

def cos_sim(a, b):
    return float(np.dot(a, b))

print("كلب vs جرو:    ", round(cos_sim(embeddings[0], embeddings[1]), 4))
print("كلب vs سيارة:  ", round(cos_sim(embeddings[0], embeddings[2]), 4))
print("جرو vs سيارة: ", round(cos_sim(embeddings[1], embeddings[2]), 4))

الناتج المتوقّع (مقاس على نموذج multilingual-e5-small):

كلب vs جرو:     0.8847
كلب vs سيارة:  0.7392
جرو vs سيارة:  0.7194

لاحظ إن "كلب" و"جرو" أقرب لبعض من "كلب" و"سيارة". الأرقام كلها فوق 0.7 لأن النموذج multilingual بيعتبر إن أي جملة عربية فيها قُرب لغوي أساسي. ده طبيعي مع نماذج e5 المتعددة اللغات. لو عايز فروقات أوضح، استخدم multilingual-e5-large أو BGE-M3 وهتلاقي الفروقات بتتسع.

فين هتحتاج ده فعلاً

  • البحث الدلالي (Semantic Search): المستخدم يكتب "ازاي أوقف الاشتراك" والنظام يلاقي مقال عنوانه "إلغاء العضوية" بدون كلمات مشتركة.
  • RAG (Retrieval-Augmented Generation): قبل ما تسأل LLM زي Claude، تجيب أقرب 5 وثائق من قاعدة المعرفة بناءً على الـ embeddings.
  • التوصيات: مستخدم اشترى منتج، توصّيله بالمنتجات اللي embeddings أوصافها أقرب.
  • كشف التكرار: مقالين مكتوبين بأسلوب مختلف لكن نفس الموضوع، embeddings قريبة، يعني تكرار.
  • تصنيف النوايا (Intent Classification): رسائل العملاء تتصنّف لـ "شكوى" أو "استفسار" أو "طلب استرجاع" بقُرب المعنى من جملة مرجعية.

الـ Trade-offs الأربعة اللي لازم تعرفهم

  1. التخزين: كل وثيقة بمتجه 1,536 رقم عشري (float32) = 6KB تقريباً. مليون وثيقة = 6GB في الذاكرة. لازم vector database زي Qdrant أو Pinecone أو pgvector، مش هتعمله بـ NumPy array لو وصلت لـ 100K وثيقة.
  2. وقت الـ Encoding: نموذج e5-small بيشتغل حوالي 800 جملة/ثانية على CPU عادي، لكن نموذج e5-large أبطأ 4 مرات. لازم توازن بين الدقة والسرعة حسب الـ workload.
  3. اللغة: النماذج العربية النقية (زي Arabic-BERT) أحسن في الدقة على نصوص عربية بحتة، لكن المتعددة اللغات بتديك مرونة لو عندك خليط عربي/إنجليزي. e5 و BGE-M3 بيدعموا العربية بدرجة محترمة.
  4. التحديث: لو غيّرت النموذج، لازم تعيد encoding للـ database كلها. مع ملايين الوثائق، ده عملية مكلفة وقت ومال. اختار النموذج بعناية من البداية.

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

مش كل مشكلة محتاجة embeddings. الحالات اللي ما تنفعش فيها:

  • البحث عن أكواد منتجات أو IDs أو أرقام: "ابحث عن المنتج SKU-A4521"، استخدم البحث النصي العادي (full-text search). الـ embeddings هتديك نتائج عشوائية.
  • قواعد بيانات صغيرة (أقل من 500 وثيقة): SQLite + LIKE أو Postgres tsvector كافي تماماً. تكلفة الـ embeddings مش مبررة.
  • مطابقة دقيقة: "اعرضلي كل الفواتير في 2026-04-12"، ده شغل WHERE clause في SQL، مش embeddings.
  • محتوى متغيّر باستمرار: أخبار live بتتحدث كل ثانية، تكلفة الـ re-embedding عالية جداً مقارنة بالفايدة.

المصادر

  • Mikolov et al., "Efficient Estimation of Word Representations in Vector Space" (Word2Vec) — arXiv:1301.3781
  • Wang et al., "Text Embeddings by Weakly-Supervised Contrastive Pre-training" (E5) — arXiv:2212.03533
  • توثيق sentence-transformers الرسمي — sbert.net
  • نموذج multilingual-e5-small — huggingface.co/intfloat/multilingual-e5-small
  • BGE-M3 multilingual embeddings — huggingface.co/BAAI/bge-m3
  • Pgvector documentation — github.com/pgvector/pgvector

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

افتح Google Colab، نزّل sentence-transformers، شغّل الكود اللي فوق على 100 جملة من بيانات شركتك (FAQ، عناوين مقالات، أوصاف منتجات)، وقارن بين أزواج الجمل بـ cosine similarity. لو الأرقام منطقية (المتشابه أعلى من 0.85 والمختلف تحت 0.75)، ابدأ تجرّب pgvector أو Qdrant علشان تخزّن embeddings 10 آلاف وثيقة وتعمل بحث دلالي حقيقي. لو الأرقام شكلها غريب، جرّب نموذج أكبر زي e5-large أو BGE-M3 قبل ما تستسلم.

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

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

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