سلسلة مقابلات الذكاء الاصطناعي 11: كيفية تحسين RAG؟
تحسين RAG ليس تعديلًا في حلقة واحدة، بل هو عملية تحسين كامل السلسلة. سأقدم أدناه استراتيجيات تحسين منهجية من أربعة أبعاد: جانب فهرسة البيانات، جانب الاسترجاع، جانب التوليد، جانب التقييم، مع إرفاق الخبرات العملية التي يمكن ذكرها في المقابلات.
أولاً: تحسين جانب فهرسة البيانات (رفع جودة "قاعدة المعرفة")
هذا هو المكان الأكثر إهمالًا ولكنه الأسرع تأثيرًا.
| نقطة التحسين | المشكلة | الطريقة المحددة | مؤشر التأثير |
|---|---|---|---|
| تحليل المستندات | يتم تجاهل الجداول والمخططات الانسيابية في PDF، أو تشوش النص وترتيبه. | استخدام مكتبات تحليل أفضل (مثل unstructured، وضع الاحتفاظ بالتخطيط في pypdf)؛ استخراج الجداول باستخدام pandas وتحويلها إلى Markdown. |
معدل الاسترجاع +5~15% |
| حجم المقطع | مقطع صغير جدًا يفقد السياق (مثل ضمير "هو" في "ارتفاع إيراداته هذا العام")؛ مقطع كبير جدًا يسبب ضوضاء في الاسترجاع. | تجربة أحجام مقاطع مختلفة (256/512/768 رمز)، تعيين التداخل 10~20%؛ للمستندات الطويلة، التقسيم حسب الحدود الدلالية (فقرات/عناوين) بدلاً من الطول الثابت. | معدل الإصابة / الإخلاص |
| إرفاق البيانات الوصفية | تم استرجاع فقرة ذات صلة، لكن لا يمكن تتبع المصدر أو الوقت، أو الحاجة إلى التصفية حسب المجال. | إضافة بيانات وصفية لكل مقطع: source (اسم الملف/URL)، timestamp، page_num، doc_type. استخدام مرشحات أثناء الاسترجاع (مثل doc_type == 'legal'). |
دقة التصفية |
| اختيار نموذج التضمين | أداء التضمين العام ضعيف في المجالات العمودية (الطب، البرمجة، القانون). | استخدام نماذج مضبوطة على المجال (BGE‑large‑zh، GTE‑Qwen2‑7B‑instruct)؛ أو ضبط نموذج التضمين الخاص بك (باستخدام خسارة الثلاثية). | MRR@10 +10~20% |
ثانيًا: تحسين جانب الاسترجاع (جعل "التصفح" أكثر دقة)
الاسترجاع يحدد جودة "المواد المرجعية" التي تُغذى لـ LLM.
| نقطة التحسين | المشكلة | الطريقة المحددة | التأثير |
|---|---|---|---|
| البحث المختلط | لا يمكن للبحث المتجهي مطابقة المصطلحات الدقيقة (مثل طراز المنتج ABC-123)، ولا يمكن للبحث الكلمات المفتاحية فهم المرادفات. |
استخدام كل من البحث المتجهي (دلالي) و BM25 (كلمات مفتاحية)، مع الدمج عبر الترجيح (مثل 0.7متجه + 0.3BM25) أو إعادة الترتيب. | معدل الاسترجاع +10~25% |
| إعادة الترتيب (Rerank) | النتائج القليلة الأولى من البحث المتجهي ليست بالضرورة الأكثر صلة، فالنتيجة العاشرة قد تكون الأفضل. | استخدام نموذج cross‑encoder (مثل BGE‑reranker-v2، Cohere Rerank) لإعادة تقييم المرشحين (مثل أول 20) واختيار top‑K. |
تحسين كبير في معدل الإصابة (خاصة top‑1) |
| إعادة كتابة الاستعلام | استفسار المستخدم غامض أو ضمائر غير واضحة في حوار متعدد الأدوار ("ما سعره؟"). | استخدام LLM لإعادة كتابة السؤال الأصلي إلى شكل أكثر ملاءمة للاسترجاع (مثل "ما سعر iPhone 15؟")؛ أو استكمال تاريخ الحوار. | معدل الاسترجاع +5~15% |
| HyDE | السؤال قصير جدًا أو مجرد جدًا (مثل "اشرح التمثيل الضوئي")، الاسترجاع المباشر ضعيف. | السماح لـ LLM أولاً بتوليد إجابة افتراضية، ثم استخدام هذه الإجابة لاسترجاع المستندات. | مناسب للمجالات المفتوحة، لكنه غير مناسب للأسئلة الواقعية الدقيقة |
| ضبط عدد الاسترجاع Top‑K | K صغير جدًا قد يفقد معلومات رئيسية؛ K كبير جدًا يزيد استهلاك الرموز والضوضاء. | تجربة K=3/5/10، ومراقبة التوازن بين معدل الاسترجاع ودقة الإجابة. | مفاضلة بين الكفاءة والفعالية |
ثالثًا: تحسين جانب التوليد (جعل LLM يستخدم المواد المرجعية بشكل جيد)
مهما كان الاسترجاع دقيقًا، إذا كانت التعليمات سيئة أو النموذج ضعيفًا، فلن ينجح.
| نقطة التحسين | المشكلة | الطريقة المحددة | التأثير |
|---|---|---|---|
| هندسة الاستدلال | يتجاهل LLM محتوى الاسترجاع أو يختلق معلومات. | تعليمات واضحة: "أجب فقط بناءً على المواد المرجعية المقدمة أدناه. إذا كانت المواد غير كافية أو غير ذات صلة، أجب 'لا توجد معلومات كافية'." إضافة أمثلة قليلة (few‑shot) توضح كيفية الاستشهاد بالمصادر. | الإخلاص +20~40% |
| ضغط السياق | المحتوى المسترجع طويل جدًا (يتجاوز نافذة سياق النموذج) أو معظمه ضوضاء. | استخدام LLMLingua أو السياق الانتقائي للضغط، والاحتفاظ بالجمل الأكثر صلة قبل إرسالها إلى LLM. |
تقليل خطر فقدان المعلومات |
| ترقية نموذج LLM | النماذج الصغيرة (7B) لا تستطيع إجراء تفكير معقد، أو لا تتذكر السياق الطويل. | التبديل إلى نماذج أقوى (GPT‑4o، Claude 3.5 Sonnet، Qwen2.5‑72B). | تحسين كبير في دقة الاستدلال |
| البث والاستشهاد | لا يمكن للمستخدم التحقق من مصداقية الإجابة. | جعل LLM يُخرج [citation:1] أثناء التوليد، مع رقم المستند المسترجع. إرفاق رابط النص الأصلي في النهاية. |
ثقة المستخدم + قابلية التصحيح |
| معايرة رفض الإجابة | يختلق النموذج عندما لا ينبغي، أو يقول لا يعرف عندما يجب أن يعرف. | تعيين عتبة تشابه: إذا كان التشابه余弦 بين أفضل مقطع مسترجع والسؤال أقل من 0.7، اطلب من LLM "المواد غير ذات صلة". | تقليل معدل الهلوسة |
رابعًا: جانب التقييم والتكرار (معرفة أين التعديل)
لا يمكن التحسين بدون قياس.
| نقطة التحسين | الطريقة | المؤشر |
|---|---|---|
| إنشاء مجموعة تقييم | إعداد 100~300 سؤال مستخدم حقيقي + إجابة معيارية + معرف المستند المسترجع الصحيح. | تغطية مستويات صعوبة مختلفة ونوايا مختلفة. |
| التقييم الآلي | استخدام RAGAS (الإخلاص، صلة الإجابة، استدعاء السياق) أو TruLens. | ثلاثة مؤشرات أساسية: الإخلاص، صلة الإجابة، استدعاء السياق. |
| التقييم اليدوي | اختبار 20 حالة سيئة أسبوعيًا، تحليل أنواع الأخطاء (فشل استرجاع / خطأ توليد / نقص قاعدة المعرفة). | تحديد أولويات التحسين. |
| اختبار A/B | تجربة استراتيجيات استرجاع مختلفة في بيئة الإنتاج (مثل BM25 مقابل البحث المختلط). | مؤشرات عبر الإنترنت: رضا المستخدم، معدل عدم الإجابة. |
خامسًا: "الخبرات العملية" التي يمكن ذكرها في المقابلات (نقاط إضافية)
"في مشروع RAG الذي كنت مسؤولاً عنه، كان معدل الإصابة الأساسي 67% فقط. قمت بثلاثة أمور:
1. تغيير التقسيم من 1024 ثابت إلى تقسيم دلالي ديناميكي (تبعًا للعناوين والفقرات)، رفع معدل الإصابة إلى 74%؛
2. إضافة بحث مختلط (متجه + BM25) ونموذج إعادة ترتيب صغير، رفع معدل الإصابة إلى 83%؛
3. تحسين التعليمات وإجبار إخراج '[لم يتم العثور على معلومات ذات صلة]'، خفض معدل الهلوسة من 22% إلى أقل من 5%.بالإضافة إلى ذلك، أنشأنا خط أنابيب تقييم مستمر، حيث نختبر 200 سؤال باستخدام درجات RAGAS قبل كل تغيير لضمان عدم حدوث تدهور."
ملخص نهائي: خريطة طريق كاملة لتحسين RAG
طبقة البيانات ─→ تنظيف المستندات، تحسين التقسيم، تعزيز البيانات الوصفية، تضمين المجال
طبقة الاسترجاع ─→ بحث مختلط، إعادة ترتيب، إعادة كتابة الاستعلام، HyDE، ضبط Top-K
طبقة التوليد ─→ تعزيز التعليمات، متطلبات الأوامر، الضغط، الاستشهاد، عتبة الرفض
طبقة التقييم ─→ مجموعة تقييم، RAGAS، تحليل يدوي، اختبار A/B
评论
暂无已展示的评论。
发表评论(匿名)