اكتب "apple" في تطبيق بقالة → هتلاقي فاكهة.
اكتب "apple" في تطبيق بورصة → هتلاقي شركة بـ 3 تريليون دولار.
نفس الأربع حروف. معنيين مختلفين تماماً. إزاي الذكاء الاصطناعي بيميّز بينهم — من غير ما يقرا الكلمة فعلاً؟
الإجابة في خدعة رياضية اسمها Embeddings — وهي المحرك الصامت اللي بيشغّل كل أداة ذكاء اصطناعي بتستخدمها النهارده.
أبحاث Netflix الخاصة سنة 2016 قدّرت توفيراً بمليار دولار سنوياً من تقليل معدل إلغاء الاشتراكات بسبب محرك التوصيات — وده كله مبني على نفس الرياضيات اللي هتتعلمها دلوقتي.
في المقال اللي فات، اتعلمنا إن الذكاء الاصطناعي بيقسّم الكلام لأرقام اسمها Tokens. بس الـ Tokens مجرد IDs. هي تسميات فارغة من المعنى. الـ Token رقم #27438 اللي هو {" Meta"} مش معناه حاجة بالنسبالكمبيوتر.
طب إزاي الذكاء الاصطناعي بيفهم المعنى فعلاً؟ أهلاً بيك في المفهوم اللي خلى الذكاء الاصطناعي الحديث ممكن: Embeddings و Vectors.
عشان نفهم إزاي الذكاء الاصطناعي بيشفّر المعنى، لازم الأول نفهم إزاي الأرقام ممكن تعبّر عن التشابه.
أهلاً بك في نظام الإحداثيات
عشان نفهم إزاي الذكاء الاصطناعي بيفكر، لازم نبص على إزاي البشر بيصنّفوا العالم.
لو طلبت منك توصف شخص بثلاث أرقام بس، ممكن تختار:
- الطول (سم)
- الوزن (كجم)
- السن (سنة)
لو رسمنا ثلاث أشخاص باستخدام هذه المقاييس بالضبط:
-
Alex:
[180, 75, 25] -
Sarah:
[165, 60, 30] -
Marcus:
[178, 74, 26]الطول مقابل الوزن (شريحة ثنائية الأبعاد من الـ Vectors)
الوزن (كجم) الطول (سم)Sarah
[165, 60]Marcus
[178, 74]Alex
[180, 75]Alex و Marcus واقعين جنب بعض في الفضاء. Sarah بعيدة. الكمبيوتر بيعرف إنهم متشابهين — من غير ما يشوف صورة واحدة.
دي شريحة ثنائية الأبعاد — في الواقع، الذكاء الاصطناعي بيشتغل في 384+ بُعد، مما يخلي التجمعات دي أدق بكتير.
لو رميت الأرقام دي على رسم بياني ثلاثي الأبعاد، Alex و Marcus هيبقوا جنب بعض. Sarah هتكون أبعد.
الكمبيوتر ما احتاجش يشوف صورهم. ما احتاجش يقابلهم. من خلال ملاحظة إن الأرقام قريبة رياضياً، الكمبيوتر استنتج إنهم بيتشاركوا خصائص جسدية متشابهة.
القايمة دي من الأرقام [180, 75, 25] اسمها Vector.
النموذج الذهني اللي مش هتنساه
الـ Embeddings هي إحداثيات GPS للمعنى.
القاهرة موجودة على (30.04°N, 31.23°E). باريس على (48.85°N, 2.35°E). المدن المتقاربة جغرافياً ليها إحداثيات متشابهة. الكلمات والجمل اللي معناها متقارب ليها إحداثيات Embedding متشابهة — بس في 384 بُعد بدل 2.
الـ Vectors شغالة — بس الـ 3 أبعاد مش كافية خالص عشان تعبّر عن تعقيد المعنى الحقيقي.
مشكلة الـ 3 أبعاد
الـ Vectors حلوة، بس 3 أرقام مش كافية لتوصيف تعقيد العالم الحقيقي.
خلينا نقول إننا بنوصف أجهزة ذكية لـ AI باستخدام Vector ثلاثي الأبعاد: [السعر، الوزن، عدد المميزات]
Ray-Ban Smart Glasses
[549, 48, 5]
Xreal Air 3 Glasses
[449, 72, 4]
Galaxy Smart Ring
[349, 3, 4]
الـ AI بيبص على الرياضيات: الـ Ray-Bans والـ Xreals قريبين من بعض في الفضاء الـ Vector. الـ Galaxy Ring بعيد. الـ AI صنّف النظارات مع بعض بشكل صح.
بس في هنا العيب القاتل: إيه لو احتجنا نعرف عن عمر البطارية؟ أو جودة الكاميرا؟ هل بيترجم لغات؟ مش قادرين نحكي عن ده كله في 3 أبعاد بس.
عشان نحكي فعلاً عن المعنى و_السياق_ لكلمة أو لشيء، محتاجين أرقام أكتر. أكتر بكتير.
هنا بقى الموضوع يبدأ يبقى مثير — بدل ما البشر يختاروا الأبعاد، إحنا بنخلي الـ AI يكتشفها لوحده أوتوماتيكياً.
من Vector لـ Embedding: التحفة الفنية
لما البشر بيختاروا الخصائص (السعر، الوزن)، ده Vector عادي. ذاتي ومحدود.
لما الـ AI يقرا مليارات الوثائق ويقرر رياضياً الخصائص بنفسه؟ ده بيتسمى Embedding.
كل بُعد من المئات دي بيمثل طبقة مخفية من المعنى اتعلمها الـ AI من قراءته للإنترنت. إحنا كبشر ما بنعرفش بالضبط البُعد رقم #247 بيمثل إيه. ممكن يمثل "إلكترونية الشيء". البُعد رقم #89 ممكن يمثل "إمكانية ارتداء الشيء".
مع بعض، المئات من الأرقام دي بتكوّن بصمة رقمية للمعنى.
إيه اللي ممكن تعنيه الأبعاد المخفية دي؟
"إمكانية الارتداء"0.92
"الإلكترونية"0.84
"البصرية"0.71
"قابلية الأكل"0.04
إحنا فعلاً مش بنعرف التسميات — الـ AI ابتكر المفاهيم دي لوحده. إحنا بنشوف الأرقام بس.
إزاي الـ AI بيتعلم الأرقام دي فعلاً؟
ممكن تتساءل: مين اللي بيقرر معنى البُعد رقم #89؟ محدش. النموذج بيتعلم الأبعاد دي أوتوماتيكياً من خلال عملية اسمها contrastive learning.
أثناء التدريب، النموذج بيتعرض لملايين من أزواج الجمل مع تسميات:
بعد مشاهدة مليارات الأزواج دي، النموذج بيطوّر أبعاداً داخلية بتعبّر عن المعنى — مش لأن حد عرّفها، لكن لأن الهندسة دي هي الطريقة الوحيدة اللي بتحقق كل القيود في نفس الوقت.
دلوقتي ممكن نشوف الهندسة المتعلّمة دي شكلها إيه عبر اللغات المختلفة.
الخدعة السحرية بين اللغات
خلينا نبص جوا عقل نموذج الـ Embedding (تحديداً النموذج متعدد اللغات).
لو طلبنا من النموذج يحوّل ثلاث جمل لـ Embeddings ثلاثية وثمانين وثلاثمية بُعد بتاعتها، وبعدين نتحقق إزاي الأرقام دي متشابهة رياضياً (باستخدام Cosine Similarity — معادلة بتقيس الزاوية بين Vectors اتنين: 1.0 = نفس الاتجاه تماماً، 0 = مش مترابطين، -1 = متعاكسين):
Cosine Similarity — قد إيه المعنيين دول قريبين من بعض؟
تطابق شبه كامل — نفس المعنى، لغة مختلفة
مش مترابطين خالص — الرياضيات عارفة كده
نفس النية، صفر كلمات مشتركة — ده سبب تفوق البحث بالـ AI على البحث بالكلمات المفتاحية في كل مرة
نفس المعنى = نفس الأرقام. في أي لغة كانت.
الـ AI مش بيترجم "café" لـ "coffee". هو لاحظ بس إن في بيانات التدريب بتاعته، كلمة "café" بتظهر في نفس السياقات بالضبط، جنب نفس الكلمات، زي ما "coffee" بتيجي. وبالتالي، بصماتهم الرقمية بتبقى متطابقة تقريباً.
الـ matching ده عبر اللغات شغّال لأن النموذج اتدرّب على ملايين من أزواج الجمل متعددة اللغات — نصوص مترجمة بواسطة البشر فيها نفس الفكرة بتظهر في عشرات اللغات جنب بعض. عملية الـ contrastive learning اللي وصفناها في الخطوة الثالثة بتجبر "Necesito café" و"I need coffee" ناحية نفس النقطة في فضاء الـ Embedding، لأنهم دايماً اتصنّفوا كمعادلَين لبعض.
مرجع سريع لدرجات Cosine Similarity
| الدرجة | المعنى | مثال |
|---|---|---|
| 0.95+ | معنى متطابق تقريباً | "I need coffee" vs "Necesito café" |
| 0.7–0.9 | متقاربَين بشكل واضح | "Smart glasses" vs "AR eyewear" |
| 0.3–0.6 | متقاربَين بشكل فضفاض | "Smart glasses" vs "Wearable tech" |
| < 0.3 | مش مترابطَين | "I need coffee" vs "Je veux dormir" |
دلوقتي وإحنا فاهمين إزاي المعنى بيتشفّر في أرقام، خلينا نشوف ليه ده قلب البحث التقليدي رأساً على عقب.
ليه ده غيّر الإنترنت: الـ Semantic Search
المعادلة الرياضية دي غيّرت العالم. قتلت "البحث بالكلمة المفتاحية" التقليدي.
فكّر في الإنترنت القديم. لو دوّرت في متجر إلكتروني على "جهاز لعينيّا".
البحث بالكلمات المفتاحية
بيدوّر بدقة على تطابق الحروف.
Semantic Search
بيحوّل الاستعلام لرياضيات، ويدوّر على أقرب نقاط.
ده بالضبط إزاي خوارزمية TikTok بتعرف إيه اللي عايز تتفرّج عليه. ده إزاي Netflix بتوصي بأفلام. تاريخ المشاهدة بتاعك بيتحوّل لـ Vector، وهما بيدوّروا على أفلام الـ Vector بتاعتها أقرب للـ Vector بتاعك في الفضاء الرياضي.
شوف الرياضيات شغّالة (Python)
أنت مطوّر؟ تقدر تشغّل ده على لابتوبك دلوقتي مجاناً. هنستخدم نموذج open-source اسمه paraphrase-multilingual-MiniLM-L12-v2. بيدعم 50 لغة وبيطلع Vector بـ 384 بُعد.
from sentence_transformers import SentenceTransformer
from sklearn.metrics.pairwise import cosine_similarity
# حمّل "البوصلة" (نموذج الـ Embedding)
encoder = SentenceTransformer('paraphrase-multilingual-MiniLM-L12-v2')
# خلينا نقول عندنا كتالوج أجهزة
devices = [
"Ray-Ban Meta Ultra - Smart glasses with camera and translation",
"Sony LinkBuds Open - Lightweight earbuds with translation",
"Garmin Fenix 9 - Rugged sports watch for running",
]
# الخطوة 1: حوّل الكتالوج لأرقام (Embeddings)
device_embeddings = encoder.encode(devices)
# دلوقتي عندنا إحداثيات الـ 384 رقم لكل منتج
# الخطوة 2: المستخدم بيدوّر على حاجة صعبة
query = "I want something very light for translating that isn't too expensive"
query_embedding = encoder.encode(query)
# الخطوة 3: وقت الرياضيات! دوّر على أقرب أرقام متطابقة
scores = cosine_similarity([query_embedding], device_embeddings)[0]
# الخطوة 4: اطبع النتايج مترتّبة
print(f"Query: \"{query}\"\n")
ranked = scores.argsort()[::-1]
for i in ranked:
print(f" {scores[i]:.3f} {devices[i]}")
Output:
Query: "I want something very light for translating that isn't too expensive"
0.421 Sony LinkBuds Open - Lightweight earbuds with translation
0.287 Ray-Ban Meta Ultra - Smart glasses with camera and translation
0.031 Garmin Fenix 9 - Rugged sports watch for running
الـ AI رتّب Sony LinkBuds في الأول رغم إن المستخدم ما كتبش "Sony" ولا "Earbuds" ولا "LinkBuds". الـ AI بس حاذى رياضياً "light translating" مع "lightweight translation". والـ Garmin — ساعة الرياضة — جابت درجة قريبة من الصفر.
قلب الـ RAG
لو إنت بتبني تطبيقات AI النهارده، على الأغلب بتبني حاجة اسمها RAG (Retrieval-Augmented Generation). ده هو عملية إنك تدي الـ AI وصول لبيانات شركتك الخاصة (PDFs، قواعد بيانات) عشان يقدر يجاوب أسئلة مبنية على معلوماتك الفعلية.
الـ Embeddings هي محرك الـ RAG. هنا بقى خط سير العملية الكاملة:
خط سير الـ RAG — الـ Embeddings بتشغّل كل سهم في السلسلة دي.
مش تقدر تعمل RAG من غير Embeddings. ومش تقدر تعمل بحث حديث من غير Embeddings.
الـ AI مش بيفهم كلمات. بيفهم المسافة بين الأرقام في فضاء عشرة آلاف بُعد. وده اتضح إنه طريقة أقوى بكتير لفهم الكون.
جرّبها في دماغك
لو بعتّ كلمتين لنموذج Embedding:
"Apple" (الفاكهة) و"Apple" (شركة التكنولوجيا).
هل الـ Embeddings بتاعتهم هتبقى قريبة رياضياً من بعض، ولا بعيدة؟
فكّر في السياق!
▶ اكشف الإجابة
هتبقوا بعيدين جداً من بعض — لأن السياق مهم.
كلمة "Apple" (الفاكهة) في بيانات التدريب بتيجي جنب كلمات زي fruit، tree، juice، red، eat، orchard. كلمة "Apple" (الشركة) بتيجي جنب iPhone، MacBook، Tim Cook، stock، CEO، App Store.
لأن السياقات المحيطة مختلفة تماماً، الـ AI بيعيّن لهم Embeddings مختلفة جداً — حتى لو الكلمة مكتوبة بنفس الطريقة.
ده هو القوة الخارقة للـ Embeddings مقارنة بمطابقة الكلمات المفتاحية البسيطة.
نفس الكلمة ممكن يبقى ليها Embeddings متعددة بناءً على سياقها في الجملة.
ده السبب اللي بيخلي الـ Semantic Search يتفوق على البحث بالكلمات المفتاحية في كل مرة — نفس الهجاء، معنى مختلف تماماً، Embedding مختلف تماماً.
نصايح للمطورين
paraphrase-multilingual-MiniLM-L12-v2 ممتاز للنصوص العامة. للقانوني أو الطبي أو الكود، استخدم نماذج متخصصة في المجال.مفاهيم غلط شائعة عن الـ Embeddings
حاجات بتسمع صح بس مش صح
❌ "الـ AI بيفهم المعنى"
الـ Embeddings بتقرّب المعنى من خلال أنماط إحصائية اتعلمتها أثناء التدريب. النموذج ما عندوش فهم — هو بس اتعلم إن الكلمات اللي بتظهر في سياقات متشابهة المفروض يبقى ليها إحداثيات متشابهة. ده مطابقة أنماط متطورة، مش استيعاب حقيقي.
❌ "نفس الكلمة دايماً بتاخد نفس الـ Embedding"
في النماذج الحديثة المبنية على Transformer، السياق بيغيّر الـ Embedding. كلمة "Apple" في "I ate an apple" وكلمة "Apple" في "Apple's stock dropped" بتطلعوا Vectors مختلفة تماماً — زي ما المثال الأول بيّن.
❌ "محتاج الـ Embeddings تبقى بنفس اللغة عشان تقارنهم"
نماذج الـ Embedding متعددة اللغات بتحوّل كل اللغات لفضاء مشترك واحد. "I need coffee" و"Necesito café" بيقعوا على إحداثيات بعيدة بـ 0.97 — اللغة مش بتفرق، المهم المعنى بس.
أهم النقاط
إيه اللي اتعلمته في المقال ده
sentence-transformersجرّبها بنفسك
شغّل الكود اللي فوق وجرّب التجارب الثلاث دي عشان تبني حدسك:
- اختبار الاستعلام بالإسبانية: غيّر الاستعلام لـ
"Quiero algo ligero para traducir que no sea muy caro". هل Sony LinkBuds لسه جايّة الأول؟ المفروض آه — نفس المعنى، لغة مختلفة. - اختبار Apple: ضيف منتجَين جديدَين:
"Apple fruit - fresh red apple from the orchard"و"Apple MacBook - laptop computer". بعدين ابحث بـ"I want something to eat"— أنهي Apple هتقع أقرب؟ - غيّر النموذج: استبدل
paraphrase-multilingual-MiniLM-L12-v2بـall-MiniLM-L6-v2(إنجليزي بس، أسرع). شغّل الاستعلام الإسباني — شوف الدرجة كيف بتانهار. ده بيثبت إن النموذج متعدد اللغات بيعمل عمل حقيقي بين اللغات، مش مجرد مطابقة كلمات مفتاحية.
إيه اللي جاي في السلسلة
الـ Embeddings هي الأساس. هنا بقى مشوارهم:
التالي في السلسلة · #3 من 14
How AI Finds Your Answer in 30 Million Documents in Under a Second
عرفت إيه هي الـ Embeddings. دلوقتي اتعلم إزاي قواعد البيانات الـ Vector بتدوّر في مليارات منهم في ميلي ثانية.
قادم لاحقاً · #14 من 14
RAG: Give Your AI a Memory
إزاي تربط أي LLM ببياناتك الخاصة باستخدام خط سير الـ Embedding اللي اتعلمته للتوّ.
الـ Embeddings هي من أهم لبنات البناء في الذكاء الاصطناعي الحديث. فهمها بيفتحلك القدرة على بناء محركات بحث دلالية، وشاتبوتات ذكية، ومساعدين آليين بيقدروا يستنتجوا من بياناتك الخاصة. كل تطبيق AI هتبنيه من هنا للأمام هيستخدم الرياضيات دي — وإنت دلوقتي بتاع فاهم اللي بيحصل تحت الغطاء.
الـ Jupyter Notebook الكامل للمقال ده — كل الأمثلة، ومحاكي الـ Cosine Similarity، ومحرك الـ Semantic Search — موجود في مستودع AI Fundamentals.
Open Vectors.ipynb →