تقنيات RAG المتقدمة ليست أفضل دائمًا. بل هي أفضل في بعض الأحيان.
تقنيات RAG المتقدمة ليست ترقيات مجانية، بل هي أدوات تتطلب موازنة بين الإيجابيات والسلبيات.
لقد أضفت خمس تقنيات استرجاع إلى مسار عمل (pipeline) لـ RAG لاختبارها. وكانت النتيجة الأكثر أهمية هي التقنية التي فشلت.
كنت أتوقع أن تعمل تقنية HyDE على تحسين الاسترجاع، ولكن بدلاً من ذلك، جاءت بنتائج عكسية مع استعلامات معينة. انخفض معدل الاستدعاء (Recall) من 0.80 إلى 0.17. لم تكتفِ التقنية بالفشل في المساعدة فحسب، بل قامت فعليًا بجلب بيانات خاطئة إلى النتائج.
كل تقنية متقدمة اختبرتها تعمل بهذا الشكل:
- البحث الهجين (Hybrid search) (BM25 + dense): ممتاز للمصطلحات الدقيقة. استخدمه عندما يعتمد استعلامك على معايير محددة.
- HyDE: ممتاز للأسئلة العادية التي لا تتطابق مع مفردات المستندات. وتفشل هذه التقنية عندما يتطابق الاستعلام بالفعل بشكل جيد مع مجموعة البيانات (corpus).
- إعادة الترتيب (Reranking): ممتازة عندما تكون القطعة (chunk) الصحيحة موجودة في النتائج ولكنها تظهر في مرتبة متأخرة في القائمة.
- الاسترجاع السياقي (Contextual retrieval): ممتاز للقطع القصيرة التي تفتقر إلى السياق. لكنه يزيد من التكلفة لأنك تضطر لاستخدام نموذج لغوي كبير (LLM) لكل قطعة.
لقد قمت ببناء مسار العمل هذا باستخدام وثائق Anthropic. واستخدمت Postgres مع pgvector وفهرس HNSW. تعاملت مع الأمر كمهندس خلفية (backend engineer)؛ فلم أسأل عما إذا كانت التقنية هي الأحدث في المجال (state of the art)، بل سألت عما إذا كانت تستحق تعقيدها.
كل مكون تضيفه هو شيء يجب عليك تشغيله، وتصحيح أخطائه، والدفع مقابله.
قبل إضافة أدوات معقدة، قمت بقياس خط الأساس (baseline) باستخدام الاسترجاع الكثيف (dense retrieval) البسيط.
أظهرت النتائج مقياسين مختلفين:
- الأمانة (Faithfulness): 0.96
- دقة السياق (Context precision): 0.60
غيرت هذه البيانات نهجي بالكامل. معظم التقنيات تستهدف الاسترجاع، وكان الاسترجاع هو الجزء الفاشل لدي. لو كانت الأمانة (faithfulness) منخفضة، لكنت قمت بضبط الأوامر (prompts). وبما أن الاسترجاع كان منخفضًا، كان عليّ ضبط عملية البحث.
تعلمت أيضًا درسًا حول أدوات التقييم. حاولت استخدام Ragas، لكنه كان بطيئًا جدًا؛ حيث كان يعيد محاولة الاستدعاءات الفاشلة ويستغرق ساعات. بدلاً من ذلك، قمت ببناء إطار عمل غير متزامن (async harness) خاص بي، ونجحت في تشغيل نفس المقاييس في 221 ثانية بدلاً من 11 ساعة.
الخلاصة بسيطة:
لا تطبق التقنيات بشكل أعمى. استخدم موجه استعلام (query router) لاختيار الوضع المناسب للسؤال المناسب. قم بقياس بياناتك أولاً، ثم اختر الأداة التي تعالج نمط الفشل المحدد لديك.
النموذج جديد، لكن الانضباط الهندسي ليس كذلك.
المصدر: https://dev.to/yogesh23012001/advanced-rag-techniques-arent-better-theyre-better-sometimes-4m2o
