VOL77: RAG Architecture Explained
أهلًا وسهلا بكم في العدد السابع والسبعين من النشرة الأسبوعية لاقرأ-تِك 🚀
لا تنسوا أهلنا من صالح الدعاء,اللهم إنّا استودعناك اياهم، اللهم كُن عوناً لهم، اللهم انصرهم واحفظهم. 🇵🇸
أهلًا وسهلا بكم في العدد السابع والسبعين من النشرة الأسبوعية لاقرأ-تِك 🚀
سواء كنت مهندس برمجيات مبتدئ أو محترف، فنشرتنا هدفها انها تثري المحتوى التقني العربي سعيا للتطوير من جودة المحتوى باللغة العربية، من خلال تقديم أحدث المستجدات والتطورات في عالم البرمجيات، بالإضافة إلى أفضل الممارسات والنصائح القيمة، ونشر أحدث المقالات وترشيحات الكتب ومحتوى ورقة وقلم اللي بينزلوا بشكل مستمر في موقع اقرأ-تِك.
في الإصدار ده الفهرس هيكون كالآتي:
RAG Architecture Explained
Model Context Protocol
Level Up Your CI/CD - Fastlane Magic & GitHub Actions
الإصدار الأول من مدونات فطين في تصميم النظم
RAG Architecture Explained
مٌبرمجنا الفاضل هناخدك بكوباية الشاى زي ما أنت ونسألك بعض الأسئلة في مجال الكيمياء الحيوية و هنقيم اجاباتك ( دا لو عرفت تجاوب) و في مرة ثانية هنديك كتب ومصادر تذاكر منها وتعرف أكثر عن الكيمياء الحيوية وبعديها نسألك ونقيم اجاباتك ثاني, أكيد في المرة الثانية إجابتك هتكون أحسن بكثير. اللي عملناه في المرة الثانية هو دا ال RAG اللي هنتعرف عليه النهارده فكوباية الشاي معاك وهيا بنا
ما هي نماذج RAG ؟
نماذج RAG (استرجاع معزز بالتوليد للترجمة الحرفية ^^ - Retrieval-Augmented Generation) هي نوع من أنواع ال AI Models بتجمع بين فكرتين أساسيتين:
الاسترجاع (Retrieval): بنقوم بالبحث عن معلومات في مصادر خارجية (مثل قاعدة بيانات أو وثائق نصية).
التوليد (Generation): يقوم النموذج باستخدام المعلومات المُسترجعة لتوليد إجابة أو نص جديد.
ببساطة، بدلًا من أن النموذج يعتمد فقط على ما اللي اتدرب عليه (مثل GPT)، بتقوم نماذج RAG بجلب معلومات حديثة ودقيقة من مصادر خارجية وبعدين تستخدمها عشان ترد علي طلبك أو سؤالك. يعني بيذاكر وبعدين يجاوب.
أهمية وأسباب استخدام ال RAG Architecture
ال RAG Architecture بيتم استخدامها في أكثر من 60% من تطبيقات ال LLM في الشركات تبعًا لإحصاء من Databricks و دا لأن الإجابات اللي بتوفرها بتكون أدق بنسبة 40% من ال Models اللي معتمدة فقط على الـ fine tuning.
ودا بيرجع لأكثر من سبب:
Static Datasets محدودية البيانات التي يتدرب عليها ال LLM Model: لو استخدمت LLM Model لوحده غالبًا هيبقي متدرب علي بيانات لحد سنة معينة و معندوش أي معلومات بعدها ودا بيقلل من دقة الإجابات أو يديك معلومات قديمة.
No Local Data Access: وكذلك البيانات دي بتكون عامة لأنه ميقدرش يوصل للبيانات الخاصة بالشركات فلو سألته عن شىء/مصطلح محدد بتستخدموه في شركتكم بس غالبًا هيهلوس بأي إجابات ملهاش صلة بالموضوع.
Hallucinations: ال LLM Models متدربة علي أنها تدي معلومات بشكل Generic أو عام لو معندهاش Context مخصص من باب “إجابة عامة ترضي الكل” ودا بيحد من استفادتنا بيها في التطبيقات الخاصة بالشركات واللي بتحتاج دراية بالسياق ومستوى أعلى من التفاصيل و في بعض .الأسئلة ممكن توصل معلومات خاطئة تمامًا أو تهلوس
كيفية عمل RAG Application ؟
هنتكلم أولاً عن ال Offline Stage وهي إننا نقوم بتجميع البيانات من مصادر مختلفة, سواء ملفات أو APIs أو غيرها و تقسيمها لقطع Chuncks و بعدين نديها لل Embedding Model اللي هيقوم بتحويلها ل Vectors ولكنه يأخذ في الاعتبار “المعنى” في طريقة تقسيمه وتحويله للبيانات.
Model Context Protocol
الـ MCP هو اختصار لـ Model Context Protocol، وده ببساطة بروتوكول أو أسلوب تواصل بيخلي نماذج الذكاء الاصطناعي (زي ChatGPT و Claude و Deepseek وغيرها) تقدر تفهم وتتفاعل مع العالم الخارجي زي التعامل مع الملفات، والـ APIs، والأدوات المختلفة، وقواعد البيانات.
كأننا بنوصّل مخ الذكاء الاصطناعي بالعالم الخارجي بشكل منظم أكتر وآمن.
بداية المشكلة
لنتخيل إننا عندنا مساعد ذكي زي ChatGPT، وعاوزين نطلب منه الآتي:
احنا عندنا وليكن E-Commerce Application وعملنا Export لملف Excel بالـ Orders اللي وصلتنا وعاوز اطلب من ChatGPT يشوفلي كام عميل طلب منتج معين بدل ماعمل ده بشكل يدوي ، وعاوزه يقولي شوية احصائيات كده على الطلبات اللي موجودة ونسب الطلب عليها.
هنعمل ده ازاي ؟
في الحالة العادية: بنروح نكلم ChatGPT واكتبله الـ Prompt وبالشكل ده لاني بكلمه من الـ Browser على سبيل المثال فأنا بروح اخد البيانات بتاعتي Copy أو برفعله الملف عشان يكون ليه Access عليه ويبدأ يفهم الطلب بتاعي ويبدأ في تنفيذه مش كده ؟
النموذج في الحالة دي مش هيقدر يفتح ملفات على جهازنا من نفسه. هو “ذكي” أه، ولكن ملوش Access ومش مربوط بالعالم الخارجي. يعني مش شايف جهازنا، ولا المتصفح، ولا أي أدوات بره السياق بتاعه.
فلو عاوز اطلب منه مثلا يعمل Code-Review على Code انا كاتبه ، مش هعرف اديله Access على الـ Repo بتاعتي ولو قدرت اعمل ده فمش هعرف اعمله بطريقة آمنة.
طب فيها ايه لو كتبنا Script يعمل Integration بالموضوع ده ؟
هنكتب Script يقدر يقرأ السياق من الـ Local Repository
ويـ Integrate مع الـ LLM Model ويبعتلهم الـ Prompt
وبعدين ننفذ الكلام ده
هنا هنلاقي اننا محتاجين كل واحد يعمل الموضوع ده ، عشان بس نقدر ندي Access للـ LLM Models على سبيل المثال انها تقدر تقرأ الـ Repositories والـ Codebase بتاعنا مش كده ؟
وهنا بالظبط بييجي دور الـ MCP.
ربط الذكاء الاصطناعي بالعالم الخارجي
الـ MCP بيخلّي الذكاء الاصطناعي يقدر يتواصل مع الأدوات الخارجية من خلال (MCP Servers).
يعني بدل ما النموذج يحاول يفتح الملف بنفسه (وده مش آمن)، هو بيبعت request
بلغة مفهومة، والـ MCP Server بيروح ينفذ الطلب ويرجعله بالنتيجة.
زي بالظبط لما نقول للسكرتير على سبيل المثال:
“شوفلي جدول المبيعات الخاص بشهر مارس في ملف الـ Excel ورد عليا.”
فهو يروح يفتح الملف، يرجعلنا بالمعلومة، واحنا نتكلم معاه بس، وملناش علاقة بالتعامل مع الملفات مباشرة.
أمثلة على الـ MCP Servers
الـ Servers دي هي اللي بتنفذ أوامر النموذج. ومن أمثلتها:
الـ File System MCP Server: يفتح ملفات من جهازك أو يقرأ محتوياتها.
الـ GitHub MCP Server: يفتح ملفات من مشاريع GitHub ويعدل عليها.
الـ Slack MCP Server: يخلي النموذج يرد على الرسائل في Slack.
الـ PostgreSQL MCP Server: يدي النموذج قدرة يقرأ قواعد بيانات PostgreSQL.
الـ Google Maps MCP Server: يسأل عن أماكن ويستخدم خرائط جوجل.
Level Up Your CI/CD - Fastlane Magic & GitHub Actions
مع وجود GitHub Actions بمجرد ما تضيف كود جديد، بيبدأ يشتغل من وراك: يبني التطبيق، يختبره، ويتأكد إن كل حاجة تمام. ولو فيه أي مشكلة بيقولك عليها و مش بيطلع النسخة الجديدة الا اما تحلها .
في المقال ده هنتعرف اكتر ازاي نستخدم GitHub Actions علشان نخلي شغلنا Automated اكتر 🚀
هنتكلم النهاردة عن:
📌 ايه هو GitHub Actions
📌 مميزاته ايه
📌 نظرة عامة على GitHub Actions
📌 ايه هو GitHub Market Place
📌 إعداد GitHub Actions للـ Flutter
📌 هنكتب اول workflow
ايه هو GitHub Actions
هي عبارة عن CI/CD Platform وفرتها GitHub بتخلي عملية الـ build , test , deploy تكون automated بطريقة اسهل بمجرد ما بتوصل للريبو بتاعك ... طب ازاي برضو ؟
المرة اللي فاتت بعد ما ربطنا ب fastlane كنا بنضطر نكتب command علشان نعمل build و نطلع نسخة جديدة في GitHub Actions بقي تقدر تعمل build بمجرد ما تعمل push او merge او pull request حتي ، و بيبدأ ينفذ شوية اوامر عن طريق workflow بنكتبه ولو كل حاجة تمام، يرفع الإصدار الجديد على Firebase أو حتى يرفعه على Google Play.
طب ايه هي مميزات الـ GitHub Actions
تاريخ محفوظ من الـ releases: من غير ما تكتب أوامر، بيبقى عندك سجل كامل لكل الـ releases المختلفة اللي عملتها. وإمكانية عمل release على أكتر من بيئة: سواء ويب، موبايل، أو ديسكتوب، وكمان لأنظمة زي Android وiOS.
الكاشينج (Caching): دي ميزة بتخليك تقدر تخزن الـ dependencies اللي بتستخدمها، وده بيساعد إن وقت الـ build يكون أسرع ويقلل استهلاك الـ resources.
تخزين الـ GitHub Action Logs: بيحتفظ بالـ logs، وده بيخلي الوصول ليها سهل ومشاركتها مع التيم بتاعك أسهل.
الأمان (Security): بيحمي أي بيانات حساسة زي الـ configurations أو الـ tokens، وبيخليها أكثر أمان، بحيث محدش يقدر يوصل ليها أو يشوف قيمتها. كمان بيعمل (code scanning)، و(secret scanning)، ومراجعة للـ dependencies عشان يتأكد إن مفيش مشاكل.
تقليل وقت الـ merge: بيساعدك تطلع البرودكت أسرع، وتختصر وقت كبير في عمليات الدمج بين الكود.
سهولة البدء: GitHub Actions بييجي جاهز مع GitHub، يعني مش هتحتاج تدور على خدمات خارجية أو تربطها، كل اللي عليك تبدأ تكتب الـ workflows بتاعتك.
طيب قبل ما نبتدي نعمل workflow للابلكيشن بتاعنا خلونا نشوف بشكل مختصر ازاي GitHub Actions بيشتغل.
ازاي GitHub Action بيشتغل
📌 Event
هو حدث بيحصل في وقت ما بقول مثلا كل يوم الساعة 5 نزل تحديث جديد للموقع ، و زيه انه اما اعمل push علي main يعمل build
و هكذا عندنا كذا event زي pull request , create issue , merge , schedule
📌 Workflow
هي process كلها اللي عايزة اعملها run بيكون جواها ( event, runner, action - job ) .
📌 Actions
دا بقي الحاجة اللي بعملها بسطب حاجة او بعمل run test بتعمل build كدا وفي ناس عملت شوية actions علشان تسهل على المطورين حاجات كتير و دا موجود علي GitHub Market Place هنعرف عنه اكتر كمان شوية .
📌 Runner
هو المكان اللي بيشتغل فيه الـ workflows. يعني هو زي الخادم (server) اللي بتنزل عليه الكود وبيشغل الأوامر اللي كتبتها زي انظمة التشغيل المختلفة windows , ubuntu , macos
📌 Jobs
هو مجموعة من الخطوات (steps) اللي بتتنفذ على الـ Runner. يعني بتكون مجموعة من الأوامر اللي بتحصل في وقت واحد.
📌 Steps
ده الجزء اللي بيعمل حاجة محددة جوا الـ
الـ Workflow جواه job أو أكتر.
كل Job فيه step أو أكتر.
وكل Step هو أمر معين أو action محدد.
هنجيب ال actions دي منين ؟
خصم 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 بتاعتنا من خلال اقرأ-تِك والنشرة الأسبوعية 👇
رؤيتنا هي إثراء المحتوى التقني العربي وجعل التعلم من خلال القراءة أمتع، وذلك من خلال إثراء المحتوى التقني باللغة العربية وتشجيع المبرمجين على القراءة بلغتهم الأم والتفكير أيضًا بها.
لذلك اتحنا الفرصة أمام الجميع للمساهمة ومساعدتنا في نشر واثراء المحتوى التقني باللغة العربية, من خلال كتابة المقالات التقنية في مختلف مجالات هندسة البرمجيات.
وجب التنويه أنه لن يتم نشر كافة الأعمال التي تصل إلينا، وإنما سيتم الانتقاء منها ما يحقق هدفنا بإثراء المحتوى التقني العربي، ولذلك قد تُطلب بعض التعديلات من الكاتب قبل النشر.
لمعرفة المزيد بخصوص :
💬 المعايير العامة لكتابة ونشر المقالات
⚡️ كيفية الإرسال
🔥 التزامات اقرأ-تِك تجاه الكتاب
يمكنكم قراءة كافة التفاصيل من هنا 👇