التضمينات Embeddings والبحث الدلالي بالعربي: عبدالله عبدالرحيم سنكر يشرح
عبدالله عبدالرحيم سنكر يشرح التضمينات Embeddings والبحث الدلالي في النص العربي: كيف يتحول المعنى لأرقام، ومطبّات الهمزات واللهجات، ومتى تحتاج بحثاً هجيناً.

البحث الدلالي
عبدالله عبدالرحيم سنكر
عندك قاعدة معرفة فيها مئات المقالات أو السياسات، والموظف يكتب في البحث «كيف ألغي اشتراك عميل» والمستند اسمه «إجراءات إنهاء التعاقد». البحث العادي ما يلقى شي، لأن ولا كلمة متطابقة. هنا يجي البحث الدلالي اللي يبحث بالمعنى مو بالحروف، والتقنية اللي وراه اسمها التضمينات. عبدالله عبدالرحيم سنكر يشرحها هنا مع تركيز على اللي يخص العربي بالذات، لأن أغلب الشروحات مكتوبة للإنجليزي، والعربي له مطبّاته الخاصة.
المعنى كإحداثيات
نموذج التضمين ياخذ نصاً، جملة أو فقرة، ويرجّع قائمة طويلة من الأرقام، مئات أو آلاف. هالقائمة اسمها متجه، واعتبرها إحداثيات النص في «فضاء المعاني». النموذج متدرّب بحيث النصوص المتقاربة في المعنى تطلع إحداثياتها متقاربة: «إلغاء الاشتراك» و«إنهاء التعاقد» قريبين من بعض، و«وصفة كبسة» بعيدة عنهم.
البحث بعدها بسيط في فكرته: تحوّل كل مستنداتك لمتجهات مرة وحدة وتخزنها. ولما يجي سؤال، تحوّله لمتجه بنفس النموذج، وتدوّر على أقرب المتجهات له، غالباً بمقياس اسمه تشابه جيب التمام. والتخزين يكون في قاعدة بيانات تدعم المتجهات، مثل إضافة pgvector في PostgreSQL أو قواعد متخصصة.
تفاصيل تفرق في التنفيذ
- نفس النموذج للمستندات والأسئلة: متجهات نموذجين مختلفين ما تنقارن ببعض. ولو قررت تغيّر النموذج، لازم تعيد تحويل كل المستندات من جديد.
- التقطيع: المستند الطويل ما ينحوّل لمتجه واحد، ينقسم لمقاطع. المقطع الكبير يخلط مواضيع ويضعف التطابق، والصغير جداً يفقد السياق. قسّم على حدود منطقية مثل العناوين والفقرات.
- البيانات الوصفية: احفظ مع كل مقطع مصدره وتاريخه وقسمه، عشان تقدر تفلتر قبل البحث، مثل «سياسات قسم المالية فقط».
- اختبر النموذج بالعربي قبل ما تختار: جودة النماذج متعددة اللغات في العربي تتفاوت، والاختبار على أسئلتك أنت هو الحكم، مو الترتيب العام.
سؤال واحد يمر بالنظام
خلنا نتابع سؤالاً حقيقياً في قاعدة معرفة لشركة توصيل. الموظف يكتب: «العميل يبي يغيّر عنوانه بعد ما طلع الطلب، وش أسوي؟». النظام أول شي ينظّف النص: يوحّد الهمزات ويشيل أي تشكيل. بعدها يحوّل السؤال لمتجه بنفس نموذج التضمين اللي حوّل المستندات. ثم يدوّر في قاعدة المتجهات على أقرب عشرة مقاطع، مع فلتر «مستندات قسم العمليات فقط».
النتائج ترجع: مقطع من «سياسة تعديل بيانات الشحنة بعد الإرسال»، ومقطع من «التعامل مع طلبات العملاء أثناء التوصيل»، ومقطع ثالث عن «تغيير موعد التسليم» قريب في المعنى بس مو المطلوب بالضبط. ولا واحد منها فيه كلمة «عنوانه» ولا «طلع»، ومع ذلك أول نتيجتين هي الصح. هنا قوة البحث الدلالي. وفي نظام RAG، هالمقاطع هي اللي تنرسل للنموذج اللغوي عشان يصيغ منها الجواب للموظف.
مطبّات العربي
النماذج الجيدة تتحمل كثيراً من الاختلافات، بس ما تعتمد على هالشي بشكل أعمى. هذي الأشياء اللي تستاهل انتباهك في النص العربي:
- أشكال الألف والهمزة: «إلغاء» و«الغاء» و«ألغاء» كلها تنكتب في الواقع. وكذلك التاء المربوطة والهاء، والياء والألف المقصورة. التوحيد قبل التحويل يقلل التشتت، خصوصاً في البحث النصي اللي تدمجه مع الدلالي.
- التشكيل والتطويل: «مُحَمَّد» و«محـــمد» لازم ترجع «محمد». احذفها في مرحلة التنظيف.
- اللهجات: المستندات بالفصحى والأسئلة بالعامية. «وش أسوي إذا الشحنة تأخرت» لازم تلقى «الإجراءات المتبعة عند تأخر الشحن». هنا النموذج القوي في العربي يفرق كثيراً، واختبره بأسئلة عامية حقيقية.
- المصطلحات المختلطة: نص عربي فيه «API» و«الداشبورد» و«لوحة التحكم» لنفس الشي. بعض النماذج تربطها ببعض وبعضها لا.
- الأرقام: «١٢» و«12» لنفس الرقم. وحّد الشكل في النصوص اللي تتعامل فيها مع أرقام.
متى يخذلك البحث الدلالي؟
البحث بالمعنى ممتاز في الأسئلة المفتوحة، وضعيف في الأشياء الدقيقة. رقم منتج مثل «SKU-4471»، أو اسم شخص، أو رقم مادة في عقد: هذي ما لها «معنى» يقرّبها من شي، والمتجه ممكن يرجّع لك منتجاً مشابهاً بدل المنتج المطلوب بالضبط. والبحث بالكلمات المفتاحية التقليدي يلقاها فوراً.
عشان كذا الأنظمة الجادة تستخدم البحث الهجين: بحث نصي وبحث دلالي في نفس الوقت، ثم دمج النتائج في ترتيب واحد. وفيه خطوة ثالثة اختيارية لما تحتاج دقة أعلى: نموذج إعادة ترتيب ياخذ أفضل النتائج ويقرأ كل واحدة مع السؤال ويرتبها من جديد. أبطأ، بس أدق.
والبحث الهجين له فائدة إضافية في العربي بالذات: البحث النصي يلقط الأسماء والأرقام والمصطلحات الإنجليزية الدقيقة اللي ممكن يضيّعها المتجه، والبحث الدلالي يلقط الصياغات العامية والمرادفات اللي ما يعرفها البحث النصي. كل واحد يغطي ضعف الثاني. وعشان يشتغل الجزء النصي صح، لازم التوحيد الإملائي اللي تكلمنا عنه يكون مطبّقاً على المستندات وعلى السؤال بنفس الطريقة، وإلا «الغاء» ما بتلقى «إلغاء».
مو كل مشكلة بحث تحتاج متجهات
في مكتبة «سكيلز» اللي بناها عبدالله عبدالرحيم بن سنكر الكندي، الكتالوج فيه أكثر من ألف سكِل، وأوصافها بالإنجليزي، والمستخدم يكتب بالعربي. الحل هناك اعتمد على قاموس يترجم المصطلحات العربية لمقابلها الإنجليزي، ثم فلترة محلية تختار أفضل عشرين مرشحاً قبل ما ترسلهم للنموذج. والدرس العام من هالتجربة: قبل ما تبني بنية متجهات كاملة، اسأل هل حل أبسط، مثل قاموس مرادفات أو توحيد إملائي، يسد الفجوة بتكلفة أقل.
وأياً كان الحل، قِسه. اكتب ثلاثين سؤالاً حقيقياً بلغة المستخدمين، وحدد لكل سؤال المستند الصحيح، وشوف كم مرة يطلع المستند في أول خمس نتائج. هالرقم البسيط يقول لك أكثر من أي مقارنة نظرية، وهو اللي تعتمد عليه منصة أزهل الرقمية قبل ما تختار نموذجاً أو طريقة تقطيع لأي نظام بحث عربي.
عندك فكرة؟ الاستشارة الأولى علينا
كلّم عبدالله مباشرة على واتساب — رسالتك توصل له هو، مو لرد آلي. نسمع فكرتك ونقول لك وش تحتاج وكم تكلّف، ببلاش.
مقالات ذات صلة
كل المقالات
كتابة متطلبات المشروع
عبدالله سنكر
قائمة عبدالله سنكر: اكتب متطلبات مشروعك قبل ما تكلّم مبرمج
قائمة تحقق عملية من عبدالله سنكر تعبّيها قبل أول مكالمة مع أي مبرمج: الهدف، والمستخدمين، والرحلة الأساسية، والتفاصيل اللي ترفع السعر، والميزانية، وحدود النسخة الأولى.
اقرأ المقال
مقارنة Firebase و Supabase
عبدالله عبدالرحيم سنكر
Firebase أو Supabase أو باك إند خاص؟ إطار قرار من عبدالله عبدالرحيم سنكر
Firebase أو Supabase أو باك إند خاص؟ عبدالله عبدالرحيم سنكر يعطيك أربعة أسئلة تحسم القرار: شكل بياناتك، وتكلفتك عند النمو، والارتباط بالمزوّد، ومكان تخزين البيانات.
اقرأ المقال
ملكية الكود المصدري
عبدالله سنكر
عبدالله سنكر يجاوب: ليش لازم يكون مستودع Git لمشروعك باسمك؟
عبدالله سنكر يجاوب أصحاب المشاريع عن Git: وش هو المستودع، وليش لازم يكون باسمك مو باسم المطوّر، ووش تتأكد منه قبل التسليم عشان ما تنحبس عند أحد.
اقرأ المقال