VOL80: Vector Databases Explained
أهلًا وسهلا بكم في العدد الثمانين من النشرة الأسبوعية لاقرأ-تِك 🚀
لا تنسوا أهلنا من صالح الدعاء,اللهم إنّا استودعناك اياهم، اللهم كُن عوناً لهم، اللهم انصرهم واحفظهم. 🇵🇸
أهلًا وسهلا بكم في العدد الثمانين من النشرة الأسبوعية لاقرأ-تِك 🚀
سواء كنت مهندس برمجيات مبتدئ أو محترف، فنشرتنا هدفها انها تثري المحتوى التقني العربي سعيا للتطوير من جودة المحتوى باللغة العربية، من خلال تقديم أحدث المستجدات والتطورات في عالم البرمجيات، بالإضافة إلى أفضل الممارسات والنصائح القيمة، ونشر أحدث المقالات وترشيحات الكتب ومحتوى ورقة وقلم اللي بينزلوا بشكل مستمر في موقع اقرأ-تِك.
في الإصدار ده الفهرس هيكون كالآتي:
Vector Databases for Beginners
Open AI Atlas : A short view on Agentic Browsers
Top 24 System Design Terminologies
HTTP Caching
إصدارات - الإصدار الأول من مدونات فطين في تصميم النظم
Vector Databases for Beginners
بنسمع عن ال Vector database في أي شيء ليه علاقة بال AI تقريبًا, ولكن ايه هي ال Vector database ؟ ليه أصلا بنحتاجها؟! وإيه فرقها عن قواعد البيانات التقليدية؟ ورقة وقلم ويلا بينا
ما هي الـ Vector Database؟
الـ Vector Database هي قاعدة بيانات متخصصة في تخزين وفهرسة والتعامل مع الـ Vectors.
فبدل ما بتخزَن فيها نصوص أو أرقام تقليدية، بتخزّن تمثيلات رقمية (Embeddings) للبيانات،
وبتقدر تدور فيها بناءً على “المعنى” مش “الكلمة”.
فبدل ما تبحث عن تطابق تام (exact match) زي الـ SQL، تبحث عن تشابه في المعنى (similarity search) بين المتجهات.
مثال بسيط: لو عندك قاعدة بيانات فيها وصف منتجات، وسألتها:
“عايز منتج مناسب للسفر والشتا”
الـ Vector DB مش هتدور على الكلمات دي بالحروف، لكن هتدور على المنتجات اللي معناها قريب من الجملة دي — زي “جاكيت مقاوم للمطر” أو “حقيبة ظهر مقاومة للمياه”.
التعريف وضح لنا الفكرة العامة ولكن ما هو الـ Vector و ما هو ال Embedding ؟
ما هو الـ Vector ؟
ال Vector أو المٌتجه بالعربية هو مجموعة مرتّبة من الأرقام بتمثل نقطة في مساحة (فضاء) رياضية. بمعنى أبسط، هو “قائمة أرقام Numbers Array” بتعبّر عن موقع أو اتجاه أو معنى في نظام معين.
مثلاً: المتجه [2, 3] بيمثل نقطة في مستوى ثنائي الأبعاد (زي محور س وص).
المتجه [1, 0, -1] بيمثل نقطة في فضاء ثلاثي الأبعاد.
في الرياضيات، بنستخدم المتجهات عشان نمثل الاتجاهات أو السرعات. أما في مجال ال AI بنستخدمها عشان نمثل المعاني, باختصار الـ Vector هو Array من الأرقام تمثل معنى معين.
ما هو ال Embedding ؟
الـ Embedding هو العملية اللي بتحوّل البيانات (زي نص، صورة، أو صوت) إلى Vector.
العملية دي بتخلي النموذج يفهم العلاقات بين المعاني.
فمثلاً، لو قلت “قهوة” و“بٌن”، الـ Embedding بتاعهم هيكون قريب جدًا لأن المعنى متشابه.
بالمقابل، “قهوة” و“بحر” هيبقوا بعيد جدًا في الفضاء ده لأن مافيش علاقة مباشرة بينهم.
في Embedding Models مٌخصصة لهذه العملية متاحة من أشهرهم OpenAI’s text-embedding-3 و Cohere Embeddings
لماذا نحتاج ال Vector Databases ؟
ال Vector Database بتحللنا مشكلتين كبار في عالم البحث (Searching):
البحث بالمعني والتشابه بدل البحث الحرفي :لأن قواعد البيانات العادية (زي SQL أو MongoDB) مش بتفهم المعنى، هي بتدور بالكلمة زي ما هي. لكن في تطبيقات الذكاء الاصطناعي، بنحتاج نفهم السياق والمعاني القريبة.الـ Vector DB بتخلي البحث “ذكي” — زي لما تسأل ChatGPT أو Gemini وبيفهم قصدك مش بس الكلمات.
سرعة البحث في كميات ضخمة من البيانات : البحث بالطرق التقليدية في كميات ضخمة من البيانات ممكن ياخذ وقت طويل جدًا ويكون في النهاية غير مٌجدي لأنه زي ما قلنا بيفتقر للشعور بالمعنى أو السياق. علي عكس ال Vector DB لأنها بتستخدم ال Vectors و خوارزميات بحث قائمة على التشابه أو ال Nearest neighbour.
Open AI Atlas : A short view on Agentic Browsers
Iالأسبوع الماضي Open Ai اتحفتنا وأطلقت ChatGPT Atlas وهو متصفح في فئة ال Agentic Browser ودا معناه أن المتصفح يقدر يقوم ببعض المهام بدلاً عنك زي أنه يطلب طلبات من موقع معين أو يدور علي ال Promocodes وأنت بتشتري منتج ويجربهم لحد ميلاقي Promocode شغال ومهام أخري…
الشركة بتسوق للمتصفح دا بشراسة و لكن استقبال كل العاملين في قطاع التقنية ليه كان سيء جدًا لأسباب كثيرة جدًا, عد معانا عزيزنا المبرمج:
معظم اللي استخدم المتصفح بالفعل بيقول إنه بيحل مشكلة مش موجودة, بيحاول يحسن في تجربة التصفح بطرق غير فعالة بيختصر في اغلب الوقت خطوة أو خطوتين علي الأغلب
المشاكل الأمنية كانت هي الاهتمام الأكبر لأن المتصفح عنده صلاحية وصول لكل ال Browsing History و قادر يشوف كل ال Tabsالمفتوحة و قادر يوصل لكل الحسابات بكلمات المرور بتاعتها وكل دا طبعًا عشان ال Agentic mode
دا بيعرض المستخدم لمشاكل أمنية كثيرة جدًا:
ممكن ال Ai يزور مواقع غير أمنة و كمثال يتكى علي أي Melicious Script مش واضح يسحب بيه كل معلومات الحسابات المفتوحة, الويب معتمد علي “عزل المواقع” عن بعض عشان لو موقع فيه malicious code ميقدرش يوصل لبقية ال tabs المفتوحة طبعًا احنا جايبين Agent قادر يشوف كل ال tabs المفتوحة بينسفلنا هذه الخاصية.
طبعًا ال Prompt Injection معانا كتهديد في أي استخدام لأي Ai Agent ^^
ممكن ال Ai يملأ معلومات حساسة في Input Fields غلط ويعملها Submit
وصول Open Ai للكم دا من المعلومات الخاصة بالمستخدمين ممكن يفتحلهم منجم ذهب في بيع البيانات لجهات مختلفة بتستخدم Highly Targeted Marketing
والأهم بالتأكيد تجميع كل بيانات المستخدم بالدقة دي في مكان واحد بيخليه عرضة لخطر أكبر لو حصل هجوم
المراجعين كلهم بيدعوا إننا ناخد بالنا لو هننزله ونستخدمه ب:
متفعلن “ Agentic Mode ” على مواقع حساسة،
استخدم وضع التصفح المخفي،
خلي ذاكرتك مغلقة إلا لو مضطر لتفعيلها.
طبعًا لو طبقنا كل النصايح الأمنية استخدامه لن يضيف أي شيء يذكر علي متصفحك الطيب غير إن chatgpt هيكون مفتوح جمب كل موقع بدل ما تفتحه في موقع منفصل!
Top 24 System Design Terminologies
تعالوا نشوف مع بعض شوية من أهم المصطلحات المستخدمة في تصميم الأنظمة والـ (System Design) في مجال هندسة البرمجيات باللغة العربية ، مع شرح مبسط لكل مصطلح 🎉
الـ Scalability: هي قدرة النظام إنه يكبر ويستوعب عدد أكبر من المستخدمين أو البيانات من غير ما يتأثر الأداء.
الـ Load Balancer: جهاز أو برنامج بيقوم بتوزيع الأحمال على عدة سيرفرات بحيث ميكنش في ضغط على سيرفر معين.
الـ Sharding: تقسيم قاعدة البيانات الكبيرة لعدة أجزاء أصغر على عدة سيرفرات عشان نحسن الأداء.
الـ Cache: تخزين بيانات مؤقتًا في مكان قريب من المستخدم عشان الوصول ليها يكون أسرع.
الـ Latency: الوقت اللي بياخده النظام عشان يستجيب لطلب معين من المستخدم.
الـ Throughput: كمية البيانات اللي يقدر النظام يعالجها أو ينقلها في فترة زمنية معينة.
الـ Redundancy: وجود نسخ احتياطية من البيانات أو الأنظمة لتجنب الفشل في حالة حدوث مشكلة.
الـ Replication: نسخ البيانات عبر عدة مواقع أو سيرفرات عشان نحافظ عليها في حالة فشل أحدهم.
الـ Load Shedding: طريقة لتخفيف الحمل عن النظام في أوقات الضغط العالي بتجاهل طلبات أقل أهمية.
الـ Fault Tolerance: قدرة النظام على الاستمرار في العمل حتى لو حصلت مشكلة في جزء معين.
الـ Consistency: التأكد إن البيانات في النظام متطابقة في كل الأجزاء.
الـ Partitioning: تقسيم البيانات في قاعدة البيانات لأجزاء أصغر للتعامل مع كل جزء بشكل مستقل.
HTTP Caching
هل سئلت نفسك قبل كده ليه موقع معين أسرع من حيث التحميل مقارنة بمواقع أخرى مشابهة ؟الإجابة علي السؤال دا هو الـ HTTP Cache أو التخزين المؤقت للبيانات من خلالـ تخزين بيانات وملفات الموقع محليًا (داخل جهاز المستخدم سواء موبايل او لابتوب او تابلت الخ..) في المقالـ دا هناقش ازاي الـ HTTP Cache بيخزن ملفات الموقع و كيف نتحكم فيه .
تعريف الـ HTTP Cache
الـ HTTP Cache هو تقنية تُستخدم لتسريع تحميل صفحات الويب عن طريق تخزين ملفات الموقع محليًا على جهاز المستخدم، عند زيارة موقع ويب لأول مرة، يقوم الـ browser بتنزيل الملفات المطلوبة زي الصور، الأكواد (HTML، CSS، JavaScript)، والخطوط. ويتم تخزين الملفات بحيث لا يحتاج الـ browser إلى إعادة تنزيلها في كل مرة بتزور فيها نفس الموقع.
كيفية عمل الـ HTTP Cache
أي request بيتم إرساله الى الـ server بيمر في الأول علي الكاش وبيقوم الـ browser بفحص الـ resource إلى راجع في ال response هل موجود عنده في الـ cache ولو موجود بيرجعة بدون ما يضطر يعمل request جديد ل الـ server ولو مش موجود بيحصل ما يسمى بالـ Cache miss وهنا يبدأ الـ browser يبعت request ل الـ server علشان يجيب الـ resource اللي محتاجه.
وبعد ما بيستلمه من ال browser بيبدأ يخزنه في الـ Cache Database علي جهاز المستخدم ويبدأ الـ browser يعرضه للمستخدم في المرات القادمة اللي بيبعت فيها المستخدم يطلب نفس الـ resource من الكاش بدون ما يضطر يبعت request ل الـ server مرة كمان، وهنا بيجي سؤالـ مهم هو الـ browser بيعرف منين إنه الداتا اللي متخزنة في الكاش updated وأنه الـ cache الي عنده هي اخر نسخة موجودة على الـ server ؟ الاجابة علي السؤال دا تتلخص فيما يسمى Cache Revalidation
خصم 50% على جميع خطط الاشتراك السنوية لفترة محدودة، تقدروا دلوقتي تشتركوا في اقرأ-تِك وتستمتعوا بكافة المقالات في كل ما يخص هندسة البرمجيات باللغة العربية والمحتوى المميز من ورقة وقلم ومدونات فطين اللي بيتميزوا بتصاميم ذات جودة عالية وكل ده بحرية كاملة وكمان مفاجآت اقرأ-تِك الجاية 🚀
وبرضو متاح الاشتراك من خلال InstaPay و VodafoneCash 🎁
مدونات فطين في تصميم النظم - الإصدار الأول 🚀
كتابة هذا الكتاب لم تكن قرارًا مخططًا... بل كانت نتيجة لتراكمات من الحيرة، الإحباط، والدهشة اللي بيواجهوا أغلب الشباب حاليًا خصوصًا في رحلة البحث عن تعلم مهارات تصميم النظم واللي أصبحت من المهارات الأساسية في الانترفيوهات بالإضافة لكونها مهمة فعلًا على جميع المستويات.
على مدار سنوات من العمل داخل شركات تكنولوجية متعددة، وجدت نفسي مرارًا أواجه بعض الأسئلة زي:
لماذا صُمّم هذا النظام بهذه الطريقة؟
لماذا لم نرَ المشكلة إلا بعد فوات الأوان؟
هل كان يمكن أن نصمم الأمر بشكل أبسط؟
الإجابات كانت دائمًا معقدة، وتعود لأبعاد تقنية وتنظيمية ونفسية أيضًا.
هذا الكتاب ليس دليلًا أكاديميًا، بل هو مجموعة من التجارب والخبرات العملية كتبتها بعين المهندس الذي يراقب، يسأل، ويُخطئ ثم يتعلّم. المجموعة دي لم يتم ترجمتها للعربية من مدونات الشركات العالمية .. بل تم اعادة شرحها وتبسيطها باللغة العربية بأسلوب مختلف حتى تتسم بالبساطة بالإضافة لتميزها بالرسوم التوضيحية الجذابة.
اخترت اسم "فَطين" لأنه الشخصية التي تمنيت لو كانت موجودة معي منذ البداية— يسأل الأسئلة الصحيحة، ويفكّر بصوت عالٍ، ويحكي لك الدروس المستفادة.
إن كنت مهندسًا في بداية الطريق، أو تعمل منذ سنين ولديك خبرة متوسطة أو متقدمة في تصميم وبناء النظم فهذا الكتاب كتبته لك ليكون مرجعًا عمليًا لك يساعدك في تطوير مهاراتك التحليلية والفكرية في بناء وتطوير النظم الضخمة.
يتناول الكتاب ما يعادل من 15 تجربة عملية مميزة من داخل الشركات العالمية في تصميم النظم الضخمة بأكتر من 160 صفحة ويضم الآتي :
Introduction Into System Design
How Uber Serves Over 40 Million Reads Per Second
How Discord Stores Trillions of Messages
Dropbox's Chrono: Scalable, Consistent and Metadata Caching Solution
Unlocking Notion's Power - The Data Model Explained
How Shopify Mitigates Deadlocks in High Concurrency Environments
How LinkedIn Improves Microservices Performance With Protobuf
How Figma Secures Internal Web Applications
How GitHub Improves Reliability of Code Push Processing
How Meta Leverages AI For Efficient Incident Response
How Stripe Architected Massive Scale Observability Solution on AWS
Change Data Capture at Pinterest
How Canva Built Scalable and Reliable Content Usage Counting Service
How Netflix Migrates Critical Traffic at Scale With No Downtime
How Slack Handles Billions of Tasks in Milliseconds
How YouTube Supports Billions of Users With MySQL
System Design Comprehensive Guide
تقدروا تشوفوا النسخة كاملة من هنا كـ E-Book ، وحاولنا نخليها بسعر رمزي يناسب الجميع 👇
وكمان وفرناه على Kindle عشان الناس اللي بتحب تجربة القراءة على الـ Kindle منحرمهاش من التجربة الممتعة دي 🎉
بفضل الله أصبح متاح حاليا دعمنا من خلال الرعاة والشراكات وفعلنا الـ Sponsorship واحنا بنرحب بجميع الشراكات مع المؤسسات والشركات وأصحاب الأعمال لبناء مجتمع عربي يشجع على القراءة والتعلم ومشاركة التجارب والخبرات العملية في هندسة البرمجيات.
دورك كشريك أو راعي هيكون محوري في دعم المحتوى وتوسيع نطاق تأثيره. فانضم لرحلتنا وكن جزءًا من صناعة مستقبل التكنولوجيا في المنطقة 🚀
تقدروا تشوفوا التفاصيل كاملة من هنا والـ Analytics بتاعتنا من خلال اقرأ-تِك والنشرة الأسبوعية 👇
رؤيتنا هي إثراء المحتوى التقني العربي وجعل التعلم من خلال القراءة أمتع، وذلك من خلال إثراء المحتوى التقني باللغة العربية وتشجيع المبرمجين على القراءة بلغتهم الأم والتفكير أيضًا بها.
لذلك اتحنا الفرصة أمام الجميع للمساهمة ومساعدتنا في نشر واثراء المحتوى التقني باللغة العربية, من خلال كتابة المقالات التقنية في مختلف مجالات هندسة البرمجيات.
وجب التنويه أنه لن يتم نشر كافة الأعمال التي تصل إلينا، وإنما سيتم الانتقاء منها ما يحقق هدفنا بإثراء المحتوى التقني العربي، ولذلك قد تُطلب بعض التعديلات من الكاتب قبل النشر.
لمعرفة المزيد بخصوص :
💬 المعايير العامة لكتابة ونشر المقالات
⚡️ كيفية الإرسال
🔥 التزامات اقرأ-تِك تجاه الكتاب
يمكنكم قراءة كافة التفاصيل من هنا 👇













