الذكاء الاصطناعي بلا إنترنت: بناء LLM يعمل دون اتصال
كيف تُجهَّز أنظمة الذكاء الاصطناعي دون اتصال بالنماذج المكمَّمة ومجموعات النصوص المنسقة والاسترجاع، ليواصل المساعد العمل بلا شبكة، وما الثمن الذي يدفعه ذلك.

انقطعت الكهرباء منذ تسع ساعات، وشبكة الهاتف المحمول مزدحمة، والثلاجة في مرآبك مليئة باللحم الذي اشتريته يوم السبت. هل ما زال صالحًا للأكل؟ في الظروف العادية كنت ستسأل روبوت محادثة. أما الآن، فالإنترنت هو أول ما تعطّل. هذا السيناريو هو المحرّك الأساسي لفئة متنامية من أدوات الذكاء الاصطناعي التي تعمل دون اتصال: مساعد ومكتبة مرجعية يعيشان بالكامل على حاسوبك المحمول. النموذج والمجموعة النصية وفهرس البحث، كل شيء يعمل محليًا، فيكون السؤال عن «كيف أنقّي هذا الماء» بالنتيجة نفسها سواء كان كابل الإيثرنت موصولًا أم لا. أجد هذا أكثر إثارة كتمرين معماري منه كعتاد للتأهب للطوارئ. فإزالة الشبكة من المعادلة تفرض مجموعة من القرارات الهندسية التي يتجاهلها الذكاء الاصطناعي السحابي، وتتضح فائدتها بعيدًا عن حقائب الطوارئ. إن كنت قد فكرت في تشغيل نماذج اللغة الكبيرة على عتادك الخاص، فقيود المساعد دون اتصال هي الجانب الأصعب من المشكلة نفسها.
ما الذي يجب أن يتضمنه الذكاء الاصطناعي المعتمد على العمل دون اتصال أولًا
مساعد الذكاء الاصطناعي السحابي بسيط في جوهره: يرسل جهازك النص، ويعيد مركز البيانات الرموز. أما المساعد دون اتصال فيجب أن يعيد بناء المنظومة كاملة على عتاد استهلاكي، وهذا يعني شحن ثلاثة مكونات كبيرة والحفاظ على انسجامها. أولًا، محرك الاستدلال. عمليًا يعني ذلك llama.cpp أو أحد المشتقات عنه، لأنه يعمل على شرائح Apple Silicon ومعالجات x86 العادية ووحدات معالجة الرسومات الاستهلاكية بشجرة اعتماديات واحدة. يحزم تطبيق macOS هذا المحرك، بينما ينزّله إصدار Windows أثناء الإعداد. وفي الحالتين لا يمكنك افتراض وجوده على جهاز المستخدم، فعليك تثبيته بنفسك بهدوء أثناء التشغيل الأول. ثانيًا، النموذج. وهنا تصبح الأمور مثيرة للاهتمام، وسأعود إليه لاحقًا، لأن اختيار النموذج المناسب هو المشكلة التصميمية المحورية. ثالثًا، المكتبة. يتضمن أحد المساعدين المتاحة في هذا المجال نحو 930,000 مقالة من ويكيبيديا (المجموعة الأكثر قراءةً)، ومراجع طبية مثل MedlinePlus وWikiMed، وإرشادات الطوارئ من FEMA وCDC، وأدلة البقاء العسكرية، وwikiHow، وأدلة الإصلاح من iFixit، وأرشيفات أسئلة وأجوبة من Stack Exchange في مواضيع مثل إصلاحات المنزل والراديو الهاوي. كل ذلك نصوص عادية مع الحفاظ على تراخيص كل مادة وعرضها لكل مقالة. يبلغ التنزيل الكامل نحو 9 جيجابايت، ويتضخم إلى 19 جيجابايت بعد التثبيت، والنسخة المختصرة بدون ويكيبيديا وiFixit لا تتجاوز 1.3 جيجابايت. هذا قرار تنسيق بقدر ما هو قرار هندسي، فشخص ما قرر أي المصادر يبقى وأيها يُحذف. يجب أن يتسع كل ذلك لإعداد من ثلاث خطوات يستغرق خمس دقائق من النقر، وما يصل إلى ساعتين ونصف من التنزيل. هذا الرقم الأخير أهم مما يبدو: نافذة التنزيل هي فرصتك الوحيدة لجلب أي شيء، وإلى الأبد. وهو الانضباط نفسه الذي تطبّقه على برمجيات لا يمكنك إعادة تشغيلها أو الوصول إليها، مع فارق أن البيئة غير القابلة للوصول هنا هي مطبخ مظلم بعد عاصفة.
مشكلة تدرّج النماذج: تطبيق واحد وعقول كثيرة
هذا قرار لا تواجهه البرمجيات السحابية أبدًا: لا تعرف أي عتاد يملكه المستخدم، ولا يمكنك فحص ذاكرته الـRAM وتوجيهه إلى مجموعة حوسبة أكبر، والإجابة تغيّر حجم التنزيل وجودة كل إجابة لاحقًا. الحل في هذه الفئة من الأدوات هو التدرّج المبني على فحص العتاد. عند أول تشغيل يتحقق التطبيق من ذاكرة النظام ويختار نموذجًا يناسبها: - 128 جيجابايت أو أكثر: نموذج رائد كبير (أحد الإصدارات يستخدم NVIDIA Nemotron 3.5 Super، بحجم نحو 80 جيجابايت على القرص)، ويسجّل 21 من 22 في اختبار التقييم الأعمى للمشروع على أسئلة انقطاع الكهرباء والإسعافات الأولية. - من 32 إلى 96 جيجابايت: نموذج متوسط الحجم يبلغ نحو 27 مليار معامل (نحو 18 جيجابايت)، ويسجّل 21 من 22 أيضًا. - 32 جيجابايت على Windows: نموذج مضبوط للسرعة بحجم نحو 25 جيجابايت، ويسجّل 19 من 22. - من 16 إلى 31 جيجابايت: نموذج من فئة 8B (نحو 6 جيجابايت)، ويسجّل 14 من 22. أعد قراءة الصف الأخير. الجهاز الذي يملكه معظم الناس فعلًا، أي حاسوب محمول بذاكرة 16 جيجابايت، يحصل على عقل يخطئ في النقطة الرئيسية من الإرشادات الرسمية نحو ثلث المرات، وذلك في أسئلة تكون فيها النقطة الرئيسية أشياء مثل «لا تأكل الدجاج الذي بقي ست ساعات في درجة حرارة الغرفة». هذه هي الحسبة المزعجة للذكاء الاصطناعي دون اتصال. لقد تحسّن التكميم والنماذج الصغيرة تحسنًا حقيقيًا، فنموذج 8B مضبوط جيدًا مساعد كتابة جيد وواجهة بحث مقبولة. لكن منحنى الجودة لا ينحني ليتناسب مع قيود النشر لديك. عندما يريد تطبيق سحابي نموذجًا أذكى فإنه يقلب علامة في الإعدادات، أما التطبيق دون اتصال فيحتاج أن يكون المستخدم قد اشترى حاسوبًا أكبر قبل ثلاث سنوات. أنت تشحن المنحنى، والمنحنى يشحنك. التخفيف الصادق هو ما تتبناه هذه الأدوات: تعامل مع النموذج الصغير كواجهة للوصول إلى المجموعة النصية، لا كمرجع فيها. كل إجابة تسرد بالضبط المقالات التي قُرئت، مع تمييز المقطع المعني، لأن المصممين يعرفون أن فئة 8B ستخطئ أحيانًا.
الاسترجاع كطبقة ثقة، لا كميزة إضافية
كل أنظمة التوليد المعزَّز بالاسترجاع (RAG) تعرض مصادرها اليوم؛ في السحابة يبدو ذلك كخانة اختيار، نوع من استعراض الشفافية. أما دون اتصال فالاسترجاع عنصر حامل للبناء. إنه الشيء الوحيد الذي يفصل بين هلوسة معقولة الصياغة ومستخدم يتصرف بناءً عليها في موقف طارئ حقيقي. التصميم الناتج يبدو كالتالي: يبحث النموذج في المكتبة النصية، ويقرأ أهم المقاطع، ثم يكتب إجابة تستشهد بما قرأه. وإذا طلب المستخدم البحث عن شيء، فإنه يبحث حتى لو كان قد أجاب من الذاكرة، وتوضح الواجهة نمط كل إجابة: من الذاكرة، أو من مقالات فتحها، أو من نتائج بحث لم يفتحها. هذا التمييز الأخير دقيق ومهم. فـ«وجدتُ مقاطع مطابقة» و«قرأتُ المقالة» ادعاءان مختلفان بموثوقية مختلفة، والواجهة تتعامل معهما على هذا الأساس. ثمة تفصيل في حالات الفشل أحبّه كثيرًا: عندما يبحث النموذج ثم لا يكتب إجابة نهائية، وهذا يحدث فعلًا مع النماذج الصغيرة، يُجبر التطبيق النموذج على قراءة أفضل المقالات التي وجدها ويحاول مرة أخرى، بدلًا من أن يعرض للمستخدم لا شيئًا. دون اتصال لا يمكنك الرجوع إلى نموذج أكبر أو إلى طابور إعادة المحاولة. تبني إعادة المحاولة داخل حلقة الوكيل نفسها. وهذا مثال مدمج على ما يقصده الناس عندما يقولون إن وكلاء نماذج اللغة يتصرفون كأنظمة موزعة: فشل جزئي في كل مكان، ومهمة طبقة التنسيق أن تجعل الفشل قابلًا للتجاوز. اختيار معماري آخر يستحق النسخ: ميزانية الاستدلال. يعرض التطبيق عدد الرموز التي يُسمح للنموذج بالتفكير فيها قبل الإجابة: إيقاف، أو 1,000، أو 4,000، أو 16,000، أو بلا حد. وعند الوصول إلى الحد تُقطع مرحلة التفكير ويجيب النموذج بما لديه. عند التشغيل على البطارية، النموذج الذي يدور في حلقات لا يكون خاطئًا فحسب، بل يستنزف الطاقة. الحد الصارم يحوّل مشكلة حوسبة لا نهائية إلى مشكلة محدودة، وهذه هي الغريزة الصحيحة عندما تكون مقبس الكهرباء مجرد فكرة نظرية.

المتشككون على حق، لكن في النصف الخطأ
أحدّ انتقاد لهذا النوع كله: لماذا لا نتخلى عن نموذج اللغة ونشحن أرشيفًا قابلًا للبحث؟ لقد فعلت Kiwix ذلك منذ سنوات: ويكيبيديا والمراجع الطبية، مضغوطة ومفهرسة وقابلة للبحث دون اتصال، دون خطر هلوسة، وتعمل على جهاز متواضع جدًا. وبالنسبة إلى مجموعة نصوص منسقة، فإن محرك البحث قد يكون أكثر موثوقية. سأل أحد المختبرين المساعد دون اتصال عن كيفية بناء أداة إشعال بالقوس (bow drill)، فحصل على القطع صحيحة لكن الحركة خاطئة: وصف النموذج تدوير المحور بين الكفين متجاهلًا القوس تمامًا، وذكر «نفخ الشرر»، وهذا لا يحدث في الإشعال بالاحتكاك. محرك البحث لا يمكن أن يقع في هذا الخطأ لأنه لا يولّد شيئًا. لكنني أرى أن هذا النقد يخطئ في فهم دور النموذج الفعلي في هذه الأنظمة، وأقوى دفاع عن التصميم هو إعادة تموضعه: استخدم النموذج كذكاء للبحث، لا كعرّاف. يفشل البحث بالكلمات المفتاحية عندما لا تعرف المفردات، عندما تملك أعراضًا لا تشخيصًا، وشيئًا معطلًا لا اسم قطعة. يساعد الاسترجاع الدلالي في «القريب في المعنى» لكنه لا يساعد في «المرتبط بالآلية أو السببية»، وهذه بالضبط الفجوة التي يسدّها النموذج التوليدي: يمكنه أن يأخذ «اصفرار المحاصيل عند حواف الأوراق» ويقترح خمسة مسارات قراءة لم تكن الكلمة المفتاحية لتجدها أبدًا. وظيفة النموذج أن يوصلك إلى الصفحات الصحيحة، ووظيفة الصفحات أن تكون صحيحة. النقد الآخر، «إذا احتجت إلى نموذج لغة أثناء نهاية العالم فتعلّم المهارات فقط»، منصف كنصيحة حياتية وعديم الفائدة كنقد برمجي. لا أحد يملك معرفة إسعافات أولية تغطي حروق الأطفال وكيمياء تنقية الماء وإصلاح المولدات. الكتب تغطي كل ذلك، والجدال يدور فقط حول الواجهة. حيث يصيب المتشككون إصابة واضحة هي فئة 14 من 22. إذا كانت طبقة الواجهة خاطئة ثلث الوقت، وكانت كل إجابة تحمل تنبيه «تحقّق من المصادر»، فسيأتي وقت يصبح فيه المنتج الصادق هو الأرشيف مع مربع بحث. لا يستحق نموذج اللغة مكانه إلا بقدر ما يثبت أنه يوصل غير المتخصصين إلى المقطع الصحيح أسرع من Ctrl+F. هذا سؤال تجريبي عن مستخدميك، لا مسألة انطباع.
حزمة دنيا لمكدس ذكاء اصطناعي دون اتصال أولًا
إذا أردت بناء نسختك الخاصة من هذا، وينبغي عليك فعل ذلك لأنه مشروع عطلة نهاية أسبوع مفيد حقًا، فالهيكل أصغر مما تتوقع. الأجزاء المثيرة هي الخيارات، لا الشيفرة. هكذا يبدو مساعد محلي يعتمد الاسترجاع أولًا بلغة Python تقريبًا:
import subprocess
from pathlib import Path
CORPUS_DIR = Path("./library") # plain-text articles, one file each
MODEL = "./models/granite-8b-q4.gguf" # quantized to fit 16 GB RAM
def search_corpus(query: str, k: int = 5) -> list[dict]:
"""Dumb but honest: rank articles by keyword overlap.
Swap in BM25 or embeddings later; the interface is the point."""
terms = set(query.lower().split())
hits = []
for f in CORPUS_DIR.rglob("*.txt"):
text = f.read_text(errors="ignore")
score = sum(text.lower().count(t) for t in terms)
if score:
hits.append({"path": f.name, "score": score, "text": text[:3000]})
return sorted(hits, key=lambda h: -h["score"])[:k]
def answer(question: str) -> str:
sources = search_corpus(question)
context = "\n\n".join(
f"[SOURCE {i}: {s['path']}]\n{s['text']}"
for i, s in enumerate(sources, 1)
)
prompt = (
"Answer ONLY from the sources below. Cite them as [SOURCE n]. "
"If they don't cover it, say so.\n\n"
f"{context}\n\nQuestion: {question}\nAnswer:"
)
out = subprocess.run(
["llama-cli", "-m", MODEL, "-p", prompt,
"-n", "512", "--ctx-size", "8192"],
capture_output=True, text=True,
)
citations = "\n".join(f"[{i}] {s['path']}" for i, s in enumerate(sources, 1))
return out.stdout + "\n\n--- Sources ---\n" + citations
print(answer("how long is food safe in a fridge without power"))
ما يجعل هذا يبدو كمنتج لا كلعبة موجود في القيود المدمجة في تلك الأربعين سطرًا: يمنع الموجّه الإجابة من خارج المصادر، وتُلحق الاستشهادات آليًا (ولا نثق أبدًا بالنموذج في تنسيقها؛ فقد تسبب أحد الأخطاء الحقيقية في اختراع النماذج لسطر «المصادر:» يسرد أوامر البحث الخاصة بها)، ويكون طول التوليد محدودًا. وما هو غائب هنا لكنه ضروري في الإنتاج: فهرس تضمينات للبحث الدلالي، وميزانية لرموز التفكير، وفحص للذاكرة لاختيار ملف النموذج، وبيانات ترخيص لكل ملف كي تستطيع الواجهة عرضها. لاحظ ما ليس موجودًا: لا استدعاءات شبكة، ولا مفاتيح API، ولا تتبّع للاستخدام. وبمجرد أن يكون ملف النموذج والمجموعة موجودين على القرص، يصبح هذا البرنامج عاجزًا فعليًا عن تسريب أي سؤال. تتحول الخصوصية من سياسة إلى نتيجة طبيعية لشجرة الاعتماديات.
القيود التي ترافقك إلى البيت
إذا بنيت منتجًا يعمل دون اتصال أولًا، فستصبح عدة قيود غير بديهية جزءًا دائمًا من معماريتك. **التخزين ونوافذ التثبيت لمرة واحدة.** تحتاج المكتبة الكاملة إلى نحو 27 جيجابايت من المساحة الحرة أثناء التثبيت قبل أن تستقر عند 19 جيجابايت، ويجب أن يصل كل شيء أثناء التنزيل الأولي. لا توجد إمكانية لتحميل مرجع طبي مفقود بالتدريج أثناء إعصار. وهذا يدفعك نحو تنسيق صارم: 930,000 مقالة تبدو كثيرة حتى تتذكر أن ويكيبيديا تحوي ملايين المقالات، وشخص ما رتّب المحتوى حسب القراءة وقطع الذيل الطويل. **الطاقة مورد من الدرجة الأولى.** وفق القياسات على MacBook Pro، تسحب الإجابة نحو 100 واط لمدة 5 إلى 40 ثانية لكل سؤال، فالبطارية الممتلئة تكفي لنحو 100 إلى 300 إجابة. فجأة لا تصبح سلسلة التفكير الطويلة بطيئة فحسب، بل تصبح قرارًا يتعلق بالوقود. تتوقف ميزانيات الاستدلال وفئات النماذج الصغيرة عن كونها تحسينات وتصبح هي المنتج. **قناة التحديث هي شريان حياتك.** يجب أن يحدّث التطبيق النماذج والمكتبة والملف التنفيذي بنقرة واحدة دون كسر الحالة المحلية، لأن المرة القادمة التي يتوفر فيها للمستخدم نطاق إنترنت قد تكون بعد شهور. وينشأ انضباط جديد في استهلاك الموارد في الخلفية: أصلح أحد الإصدارات مشكلة جعلت Cmd+Q يوقف محرك الاستدلال فعلًا، بعدما كان يبقي نموذجًا بحجم عدة جيجابايت محمّلًا في الذاكرة بعد إغلاق النافذة. وعلى البطارية، فهذا ليس تسريبًا للذاكرة بل تسريبًا للحرارة والساعات. **ملفات المستخدم تدخل حدود الثقة.** السماح للمستخدمين بإسقاط ملفات PDF خاصة بهم، مثل دليل مولد أو خطة طوارئ عائلية، يعني أن خط الاسترجاع لديك يتعامل مع مدخلات فوضوية ومعادية: ملفات PDF ممسوحة ضوئيًا، وترميزات غريبة، وملفات ضخمة. دون اتصال لا يمكنك تحويل أي جزء من ذلك إلى محلل سحابي.

لماذا يهم هذا النمط ما هو أبعد من الطوارئ
تتوقف الخصوصية عن كونها وعدًا سياسيًا وتصبح نتيجة طبيعية لشجرة الاعتماديات. البرنامج الذي لا يجري استدعاءات شبكة لا يمكنه تسريب أي شيء أبدًا.
الإطار الطارئ يجذب العناوين، لكن المعمارية هي القصة الحقيقية. المكدس نفسه (الاستدلال المحلي، والمجموعة المنسقة، والاسترجاع مع الاستشهادات، وميزانيات الحوسبة الصارمة) هو ما تحتاجه عيادة تحتفظ ببيانات مرضى لا يُسمح قانونًا بمغادرة المبنى، أو مصنع بآلات معزولة عن الشبكة، أو صحفي في بلد يكون فيه سجل الاستعلامات عبئًا، أو سفينة بحثية تعتمد على إنترنت عبر الأقمار الصناعية وتُحاسب بالميغابايت. وصف أحد الممارسين في النقاش هذا بالضبط: مكتبة منسقة يدويًا مع نماذج محلية في مكان بلا تغطية هاتف، تُحدَّث قبل كل رحلة، وتحل تدريجيًا محل معظم استخدامه اليومي للذكاء الاصطناعي السحابي حتى عندما تتوفر الألياف. هذا هو المسار الذي أراهن عليه. الفجوة بين نموذج محلي مكمَّم بحجم 8B ونموذج واجهة برمجية متقدم حقيقية لكنها ضيقة بما يكفي، فبالنسبة إلى المهام المرتبطة بالاسترجاع، مثل «ابحث لي عن المقطع الصحيح ولخّصه بأمانة»، يكون الخيار المحلي كافيًا غالبًا، والكفاية مع تكلفة حدية صفرية وخصوصية مضمونة تشكّل حزمة مقنعة. تستمر النماذج المتقدمة في التحسن، والتكميم يتحسن أيضًا، والنماذج الصغيرة تركب موجة التوسع نفسها بتأخير. وإذا كنت تتابع طرف الكفاءة من هذا المنحنى، فإن نماذج الفئة السريعة هي المكان الذي تكمن فيه قصة كفاءة الاستدلال الحقيقية. نصيحتي إن كنت تصمم أي شيء في هذا المجال: انسخ النمط لا جماليات التأهب للكوارث. نسّق بقسوة، فمكتبة من 200 وثيقة تثق بها أفضل من 930,000 لم تقرأها. اجعل الاستشهادات آلية، لا تولّدها النماذج. امنح النموذج ميزانية صارمة للتفكير. وقرر بوضوح هل نموذجك عرّاف أم واجهة بحث. الأدوات التي تصمد أمام التدقيق هي التي تكون صادقة بما يكفي لتكون الخيار الثاني.
الخلاصة
الذكاء الاصطناعي الذي يعمل دون اتصال أولًا ليس عن النجاة من نهاية العالم. إنه عن اكتشاف شكل معماريتك عندما يُغلق كل مخرج للهروب: نموذج أكبر، أو احتياط سحابي، أو شبكة دائمة الاتصال، أو طاقة غير محدودة. ما يبقى هو مجموعة منسقة، ونموذج مكمَّم بحجم يناسب عتادًا لا تتحكم فيه، واسترجاع يحمل الثقة، وحلقة وكيل مبنية لتفشل بسلاسة. وتتضح أن هذه انضباطات مفيدة أثناء الاتصال بالإنترنت أيضًا. العاصفة فقط تجعلك تتعلمها أسرع.


