النقاط الرئيسية
- نزّل كل شيء على جهاز متصل: الملف التنفيذي لـ Ollama، نموذج GGUF، إعدادات المُرمِّز، وأي تبعيات RAG
- انقل عبر USB SSD أو مشاركة شبكة داخلية أو جهاز محمول معزول — لا تعتمد على المزامنة السحابية أبدًا
- عيّن متغير البيئة
OLLAMA_MODELSليشير إلى دليل النماذج غير المتصل - يُعدّ Qwen3 14B بصيغة Q4_K_M (9.5 جيجابايت) الخيار الافتراضي الموصى به دون إنترنت
- تحديد حجم NAS: خطط لـ 20 جيجابايت لكل نموذج 7B، و50 جيجابايت لكل نموذج 14B، و100 جيجابايت لكل نموذج 32B بصيغة Q4_K_M
- امتثال البيانات: الاستدلال المحلي يستوفي متطلبات إقامة البيانات بغض النظر عن مصدر النموذج
قائمة التحقق المسبقة — نزّل قبل الانفصال عن الإنترنت
ضع علامة على كل عنصر على جهاز متصل قبل الانتقال إلى البيئة المعزولة.
- 1الملف التنفيذي لـ Ollama — نزّله من ollama.com لنظام تشغيلك (Linux x86_64، macOS arm64، Windows). يُوصى بالإصدار ≥0.3.0.
- 2ملف GGUF للنموذج — شغّل
ollama pull qwen2.5:14b-instruct-q4_K_Mعلى الجهاز المتصل. تُخزَّن النماذج في~/.ollama/models/. - 3المُرمِّز + قالب المحادثة — تضمّنهما Ollama مع بيان النموذج؛ لا حاجة لتنزيل منفصل إذا كنت تستخدم Ollama.
- 4الملف التنفيذي لـ llama.cpp (إذا كنت تستخدم llama.cpp) — نزّل إصدارًا مبنيًا مسبقًا من github.com/ggerganov/llama.cpp/releases.
- 5نموذج التضمين (لـ RAG غير المتصل) —
ollama pull nomic-embed-textأوmxbai-embed-large. - 6الملف التنفيذي لقاعدة البيانات المتجهية (لـ RAG غير المتصل) — Chroma المستقل، أو ملف Qdrant التنفيذي، أو SQLite+sqlite-vss (لا يلزم تثبيت Python).
- 7حزم Python (إذا كنت تستخدم أدوات Python) — نزّل ملفات
.whlعبرpip downloadمع--no-depsوانقلها. - 8تجزئة التحقق — شغّل
sha256sumعلى كل ملف GGUF قبل النقل للكشف عن التلف.
أوامر التنزيل للجهاز المتصل
شغّل جميع هذه الأوامر على الجهاز المتصل بالإنترنت قبل النقل. استبدل وسوم النماذج حسب الحاجة.
ollama pull qwen2.5:14b-instruct-q4_K_M— 9.5 جيجابايت، الافتراضي الموصى بهollama pull qwen2.5:7b-instruct-q4_K_M— 5.5 جيجابايت، للأجهزة ذات VRAM المنخفضollama pull nomic-embed-text— 274 ميجابايت، لتضمينات RAG غير المتصلollama pull deepseek-r1:7b— 5.5 جيجابايت، إذا كانت الرياضيات/الاستدلال حالة الاستخدام الرئيسية- موقع ملفات النماذج:
~/.ollama/models/على Linux/macOS، و%USERPROFILE%\.ollama\modelsعلى Windows - لـ llama.cpp: نزّل GGUF مباشرةً من HuggingFace وتحقق من SHA256 قبل النقل
سير عمل air-gap مع Ollama
بعد نقل الملفات إلى الجهاز غير المتصل:
- 1انسخ دليل
~/.ollama/بالكامل من الجهاز المتصل إلى نفس المسار على الخادم غير المتصل. - 2ثبّت الملف التنفيذي لـ Ollama:
chmod +x ollama && sudo mv ollama /usr/local/bin/ - 3عيّن دليل النموذج:
export OLLAMA_MODELS=/مسار/إلى/نماذج/ollama/غير_المتصلة - 4ابدأ الخادم:
ollama serve— تحقق من السجلات للتأكد من عدم وجود اتصالات شبكة. - 5اختبر بدون إنترنت:
ollama run qwen2.5:14b— يجب أن يستجيب فورًا دون الوصول إلى أي عنوان URL خارجي. - 6اربط بجميع الواجهات للوصول عبر LAN:
OLLAMA_HOST=0.0.0.0:11434 ollama serve
سير عمل air-gap مع llama.cpp
أداة llama.cpp مكتفية ذاتيًا بالكامل بعد توفر الملف التنفيذي وملف GGUF — لا حاجة لأي تبعيات وقت التشغيل.
- انقل الملف التنفيذي المبني مسبقًا وملف GGUF إلى الجهاز غير المتصل.
- شغّل:
./llama-server -m ./qwen2.5-14b-instruct-q4_K_M.gguf --port 8080 - العلامة
--no-mmapتُعطّل إدخال/إخراج الذاكرة المُعيَّنة عند التشغيل من مشاركة شبكة. - استخدم
--n-gpu-layers 35لتفريغ الطبقات على GPU من NVIDIA؛--n-gpu-layers -1يفرغ الكل على Apple Silicon. - واجهة برمجية متوافقة مع OpenAI متاحة على
http://localhost:8080/v1— بديل مباشر لأي SDK من OpenAI.
تحديد حجم NAS لمكتبات النماذج غير المتصلة
مكتبة النماذج لفريق صغير تحتوي عادةً على 3–6 نماذج بأحجام مختلفة. خطط للتخزين قبل الشراء.
- جهاز NAS الموصى به لتخزين النماذج: Synology DS923+ مع 4 أقراص بسعة 4 تيرابايت لكل منها في RAID 5 (~12 تيرابايت قابلة للاستخدام)
- الحد الأدنى لمكتبة من 2–3 نماذج: SSD بسعة 2 تيرابايت (قرص محمول يكفي للنشر على جهاز واحد)
- ثبّت NAS عبر NFS على خادم الاستدلال؛ عيّن
OLLAMA_MODELSإلى مسار NFS
| النموذج | حجم Q4_K_M | حجم Q8_0 | VRAM المطلوب |
|---|---|---|---|
| Qwen3 7B | 5.5 جيجابايت | 8.5 جيجابايت | 8 جيجابايت |
| Qwen3 14B | 9.5 جيجابايت | 15 جيجابايت | 12 جيجابايت |
| Qwen3 32B | 20.5 جيجابايت | 34 جيجابايت | 24 جيجابايت |
| Qwen3 72B | 46 جيجابايت | 75 جيجابايت | 48 جيجابايت |
| nomic-embed-text | 0.27 جيجابايت | 0.5 جيجابايت | 1 جيجابايت |
الامتثال لإقامة البيانات وقوانين البيانات
تعمل كثير من المؤسسات في ظل لوائح تشترط معالجة البيانات الحساسة وتخزينها محليًا. الاستدلال المحلي يبسّط الامتثال لهذه الالتزامات بشكل كبير.
- إقامة البيانات: الاستدلال المحلي يعني أن البيانات لا تغادر أجهزتك أبدًا. هذا يستوفي متطلبات إقامة البيانات لمعظم اللوائح القطاعية بغض النظر عن مصدر النموذج.
- مصدر النموذج: توثيق مزوّد النموذج وإصداره يسهّل عمليات التدقيق الداخلي في الامتثال. يُعدّ كل من Qwen3 (Alibaba) وDeepSeek (DeepSeek AI) أمثلةً على نماذج ذات سلسلة حضانة موثقة.
- خدمات الذكاء الاصطناعي الموجهة للعموم: إذا كان نشرك قابلًا للوصول من مستخدمين خارجيين (وليس داخليًا فحسب)، تحقق من التزامات الإخطار المعمول بها في ولايتك القضائية. النشر الداخلي والمعزول الذي يستخدمه الموظفون فقط يقع عمومًا خارج نطاق التطبيق.
- التحقق من عزل الشبكة: استخدم
iptablesأو قاعدة جدار الحماية للتأكد من عدم وجود اتصالات صادرة من خادم الاستدلال — وثّق ذلك لسجلات الامتثال. - سجلات التدقيق: لا يسجّل Ollama أزواج الأسئلة والإجابات افتراضيًا؛ أضف برمجيات وسيطة إذا اقتضت سياسة حوكمة البيانات الداخلية ذلك. خزّنها محليًا وليس في السحابة.
إعداد RAG بدون إنترنت
يتطلب نظام RAG (التوليد المعزز بالاسترداد) العمل بالكامل دون إنترنت: نموذج LLM محلي + نموذج تضمين محلي + قاعدة بيانات متجهية محلية.
- 1نموذج التضمين: شغّل
ollama pull nomic-embed-textعلى الجهاز المتصل. انقله مع بقية دليل نماذج Ollama. - 2قاعدة البيانات المتجهية: يمكن تشغيل Chroma كملف تنفيذي مستقل (دون الحاجة لـ Python)؛ أو استخدم الملف التنفيذي لـ Qdrant أو SQLite مع الامتداد
sqlite-vss. - 3استيعاب الوثائق: استخدم LangChain أو LlamaIndex دون اتصال (ثبّت حزم الـ wheels قبل الانفصال عن الإنترنت). وجّه محمّل الوثائق إلى الملفات المحلية — دون زحف ويب.
- 4سير الاستعلام: وثيقة → تضمين عبر nomic-embed-text المحلي → استرداد أفضل k مقاطع من قاعدة البيانات المتجهية المحلية → إرسالها إلى Qwen3 المحلي → الاستجابة. صفر اتصالات خارجية.
- 5الاختبار: تأكد باستخدام
tcpdump -i any -n port 443من عدم توليد أي حركة مرور HTTPS خلال دورة استعلام RAG كاملة.
الأسئلة الشائعة
هل تُجري Ollama أي اتصالات شبكية عند العمل دون إنترنت؟
لا. لا تتصل Ollama بـ ollama.com إلا عند تنزيل النماذج أو تحديثها. تشغيل ollama serve مع تعيين OLLAMA_MODELS ليشير إلى ذاكرة تخزين محلية لا يولّد أي اتصالات صادرة.
هل يمكنني تشغيل Qwen3 72B من مسار مثبّت على NAS؟
نعم، لكن توقع أوقات تحميل أبطأ (10–30 ثانية) بسبب زمن الاستجابة لـ NFS أثناء تحميل النموذج. بعد التحميل، يعتمد أداء الاستدلال على VRAM للمعالج فقط وليس سرعة التخزين.
ما أصغر نموذج يتعامل جيدًا مع النصوص العربية دون إنترنت؟
Qwen3 7B بصيغة Q4_K_M (5.5 جيجابايت VRAM). يتعامل مع العربية بترميز native ويُنتج استجابات متسقة بسرعة 50–80 رمزًا/ثانية على RTX 3060.
هل أحتاج إلى تقييم أمني تنظيمي للنشر الداخلي المعزول؟
بشكل عام لا. تنطبق معظم اللوائح التنظيمية للذكاء الاصطناعي على الخدمات الموجهة للعموم. عمليات النشر الداخلية المتاحة فقط للموظفين تقع عمومًا خارج نطاق التطبيق. استشر متخصصًا في الامتثال لوضعك المحدد.
هل يمكن تشغيل llama.cpp دون أي تبعيات للنظام؟
على Linux، يتطلب الملف التنفيذي المبني مسبقًا GLIBC 2.28+ (القياسي في Ubuntu 20.04+). على macOS arm64، الملف التنفيذي مكتفٍ ذاتيًا. على Windows، يتطلب بناء CUDA ملفات DLL لوقت تشغيل CUDA.
كيف أحدّث النماذج في بيئة معزولة air-gapped؟
نزّل ملف GGUF المحدّث على جهاز متصل، تحقق من تجزئة SHA256، انقله عبر USB/SSD، واستبدل ملف GGUF القديم في دليل نماذجك. أعد تشغيل خادم Ollama لاستيعاب الملف الجديد.