Локальный RAG на FastAPI и Ollama: от простого вызова LLM к production backend
Хабр-разработчик показывает, как превратить одиночный вызов Ollama в полноценную RAG-систему. К простому POST /ask добавляются request_id для трассировки, sources — список документных фрагментов в контексте, timings по этапам, endpoint для пересборки индекса и negative tests. Стек локальный: FastAPI + Ollama, без внешних API.
معالج بواسطة الذكاء الاصطناعي من Habr AI؛ بتحرير Hamidun News
يقوم مطور على موقع Habr بتحليل لحظة محددة: عندما يصبح استدعاء واحد إلى نموذج محلي غير كافٍ — وما الذي يجب إضافته للحصول على نظام واقعي للخادم الخلفي.
عندما لا يكون الاستدعاء البسيط كافياً تبدو النسخة الأولى واضحة: يرسل
الواجهة الأمامية سؤالاً، يستقبل FastAPI `POST /ask`، يستدعي الخادم الخلفي Ollama ويعيد سلسلة نصية بالإجابة. بالنسبة لعرض توضيحي، هذا كافٍ. بالنسبة لمساعد التوثيق — لا. تظهر الأسئلة على الفور: على أي المستندات تستند الإجابة؟ أي الأجزاء دخلت في المطالبة؟ لماذا يستغرق طلب واحد ثانيتين للمعالجة، بينما يستغرق آخر خمس عشرة ثانية؟ ماذا يحدث إذا لم يتم تحديث الفهرس لمدة ثلاثة أسابيع؟ لا يمكن الإجابة على هذه الأسئلة باستدعاء بسيط إلى نموذج لغة.
ما الذي تضيفه طبقة الخادم الخلفي يقدم المؤلف المكونات واحداً تلو
الآخر، موضحاً المشكلة المحددة التي يحل كل منها: request_id — معرّف فريد للطلب لربط السجلات وتصحيح الأخطاء الخاصة بأعطال محددة sources — قائمة بأجزاء المستندات التي دخلت سياق النموذج، مع تحديد المصدر timings — تقسيم الوقت حسب المراحل: البحث في الفهرس، تكوين المطالبة، توليد الإجابة rebuild index — نقطة نهاية منفصلة لإعادة بناء الفهرس دون إعادة تشغيل الخدمة * negative tests — التحقق من السلوك عند وجود مجموعة مستندات فارغة، وأسئلة خارج النطاق، وفهرس قديم المكدس محلي بالكامل: FastAPI للطبقة HTTP، Ollama للتوليد، embeddings مخصص. لا توجد مفاتيح API خارجية.
عقد API كحدود النظام أحد النقاط الرئيسية للمقالة — أهمية عقد صريح على
مستوى الاستجابة. عندما تعيد `/ask` سلسلة نصية فقط، تبقى الخدمة صندوقاً أسود. بمجرد أن تتضمن الاستجابة `request_id` و `sources` و `timings` وحالة الفهرس — يصبح من الممكن المراقبة والتصحيح والتحسين.
"لا أظهر كيف يعمل RAG بشكل عام، بل الطريق من استدعاء بسيط إلى نموذج
لغة محلي إلى مشروع خادم خلفي صغير مع عقد API وتسجيل وsources وtimings وقيود صادقة". يغير هذا النهج طريقة نظرك إلى الخدمة: بدلاً من "النموذج يجيب بطريقة ما"، تحصل على "النظام يتصرف بشكل متوقع."
الصراحة حول القيود يعدد المؤلف بشكل صريح ما ينقص المشروع: المصادقة
والتخزين المؤقت ودعم الحمل متعدد المستخدمين وCI/CD. هذا يجعل المقالة أكثر فائدة من معظم البرامج التعليمية، حيث لا توجد قسم القيود أو ينخفض إلى عبارة معيارية. اختبارات سلبية موضوع منفصل. يتم التحقق من السلوك مع مجموعة مستندات فارغة، مع أسئلة بدون محتوى ذي صلة في الفهرس، وعند الوصول إلى الفهرس بعد إضافة ملفات جديدة بدون إعادة بناء. مجموعة حد أدنى، لكنها كافية لفهم بالضبط حيث يفشل النظام.
ماذا يعني هذا تملأ المقالة فجوة محددة: معظم مواد RAG إما تشرح النظرية أو تظهر "hello world" مع
LangChain. هنا — خدمة محلية فعالة مع أدوات قابلية المراقبة يمكن أن تكون بمثابة أساس لمشروع حقيقي.
هل تحتاج إلى ذكاء اصطناعي يعمل داخل شركتك — وليس فقط في موجز الأخبار؟
أبني ذكاءً اصطناعياً جاهزاً للإنتاج للشركات — أنظمة CRM مخصّصة، أدوات داخلية، وكلاء مستقلون، أتمتة سير العمل. ملك لك، مصمّم وفق عمليتك، دون رسوم لكل مستخدم. من إعداد جمال خميدون، مدير المنتجات في AlpinaGPT (منصة ذكاء اصطناعي، أكثر من 6000 مستخدم).
أهم ما في عالم الذكاء الاصطناعي — مرة كل أسبوع
سبع قصص مهمة فعلاً هذا الأسبوع، مختارة بعناية. بلا ضجيج ولا بيانات صحفية.
تم! تحقق من بريدك للتأكيد.