تخطّ إلى المحتوى
AISI
𝕏
دليل إرشادي

بناء RAG للأحكام القضائية بـ Haystack + Ollama (دليل قانوني)

إعداد محرك سؤال-جواب على أحكام قضائية مع prompt engineering قانوني.

20 دقائق قراءة legalRAG

أهمية دقة الاسترجاع في المجال القانوني

في المجال القانوني، يمثل “الهلوسة” (Hallucination) الصادرة من نماذج الذكاء الاصطناعي خطراً فادحاً. الباحثون والمحامون لا يبحثون عن إجابات عامة، بل يحتاجون إلى أدلة قاطعة تستند إلى أحكام قضائية موثقة مع ذكر مرجع الحكم ورقم المادة. لضمان هذه الدقة، يعتبر بناء نظام RAG (Retrieval-Augmented Generation) متخصص للأحكام القضائية العربية أمراً ضرورياً. في هذا الدليل، سنستخدم Haystack كإطار عمل مرن وقوي لبناء خط الأنابيب (Pipeline)، و Ollama لتشغيل نماذج اللغة محلياً لضمان سرية البيانات القضائية.

الأدوات والمفاهيم الأساسية

  • Haystack (من deepset): إطار عمل بايثون (Python Framework) متقدم ومفتوح المصدر لبناء أنظمة RAG والبحث الدلالي. يمتاز بقدرته على التعامل مع الوثائق الكبيرة والمعقدة بشكل تنظيمي ممتاز.
  • Ollama: لتشغيل النماذج محلياً (مثل Llama-3).
  • Prompt Engineering (الهندسة التلقينية القانونية): صياغة تعليمات صارمة تجبر النموذج على الاقتباس الحرفي من النصوص وعدم التأليف.

خطوات بناء خط أنابيب الـ RAG القانوني

1. استيعاب البيانات وتجهيز الوثائق (Document Pre-Processing)

الأحكام القضائية غالباً ما تكون وثائق طويلة جداً (PDF أو Word) تحتوي على سرد للوقائع ثم منطوق الحكم. باستخدام مكونات (Document Store) في Haystack، نقوم بتقطيع النص (Chunking). في المجال القانوني، يُفضل استخدام استراتيجية تقطيع تعتمد على الفقرات أو الصفحات مع وجود تداخل (Overlap) بنسبة 15% لكي لا نكسر تسلسل الحجج القانونية.

2. إعداد قاعدة البيانات الاتجاهية (Vector Database)

نستخدم قاعدة بيانات مثل Qdrant أو FAISS لربطها بـ Haystack. نعتمد نموذج تضمين (Embedding Model) يدعم اللغة العربية بكفاءة (مثل نماذج sentence-transformers/paraphrase-multilingual-mpnet-base-v2). يُحول هذا النموذج أحكام القضايا إلى متجهات ويحفظها، مما يسمح بالبحث عن “السوابق القضائية” عبر المعنى الدلالي وليس فقط التطابق اللفظي.

3. هندسة الـ Prompt القانوني الصارم

هذه هي الخطوة الأهم لضمان عدم هلوسة النموذج. داخل مكون PromptNode في Haystack، نكتب قالباً (Template) يشبه التالي باللغة العربية:

“أنت مستشار قانوني محترف. أجب على السؤال التالي بناءً فقط على الوثائق والأحكام القضائية المرفقة أدناه. إذا لم تتضمن الوثائق إجابة واضحة، قل ‘لا يوجد نص أو حكم قاطع في الوثائق المقدمة’ ولا تؤلف إجابة من عندك. عند الإجابة، يجب عليك وضع اقتباس نصي بين قوسين مع ذكر رقم القضية واسم المحكمة إن وجد.

الوثائق المستخرجة: {documents}
السؤال: {query}”

4. تجميع الـ Pipeline وتشغيله

في Haystack، نقوم بربط عقدة الاسترجاع (Retriever) التي تبحث في قاعدة البيانات، بعقدة المولد (Generator / PromptNode) التي تتصل بنموذج Ollama عبر واجهة الـ API الخاصة به.
عندما يسأل الباحث: “ما هي الأحكام المتعلقة بالتعويض عن الضرر المعنوي؟”، سيقوم النظام بجلب أقرب 3 وثائق، تمريرها للـ Prompt الصارم، وتقديم إجابة موثقة محلياً بالكامل.

نصائح متقدمة للمطورين

  • تحديد الميتا-داتا (Metadata): عند استيعاب المستندات في Haystack، تأكد من وسم كل فقرة ببيانات وصفية مثل (تاريخ الحكم، نوع المحكمة، الموضوع). هذا يتيح تطبيق فلاتر (Filters) قبل مرحلة الاسترجاع الدلالي (مثلاً: ابحث فقط في أحكام “محكمة النقض” لعام 2022).
  • التعامل مع النصوص العربية القانونية: المصطلحات القانونية العربية دقيقة جداً. قد تحتاج لتجربة عدة نماذج دلالية، أو تدريب نموذج تضمين دقيق (Fine-tuned Embedding) على معجم قانوني إن أمكن.

الخلاصة

دمج Haystack ذي المرونة العالية مع Ollama يُمكّن الباحثين والمطورين من بناء محرك RAG قانوني متقدم، يحافظ على سرية القضايا ويقدم إجابات مقيدة بالأدلة، مما يقلص من مخاطر الهلوسة ويرفع من كفاءة البحث القانوني بشكل هائل.