يمكن لنظام RAG استرجاع مستند خبيث بالدقة نفسها التي يسترجع بها سياسة موثوقة. لا تميز Embeddings بين الدليل والتعليمات، ولا تثبت Similarity Score العالية أن الملف آمن أومصرح به أوحديث. التصميم الآمن هو عزل كل مستند جديد، وإثبات مصدره ونطاق وصوله، واستخراجه داخل Worker معزول، وفحص التمثيل المستخرج، ونشر Index Version ثابتة، مع الاستمرار في معاملة كل مقطع مسترجع كبيانات غير موثوقة وقت الإجابة.
هذا دليل هندسي عملي، وليس إعلانًا عن منتج جديد من OpenAI. تنص وثائق OpenAI الرسمية على أن Prompt Injection يبدأ عندما تحاول بيانات غير موثوقة تجاوز تعليمات النظام، وتوصي بعدم وضع المتغيرات غير الموثوقة داخل Developer Messages واستخدام Structured Outputs بين عقد Workflow. كما توثق File Search وRetrieval كيف تصبح الملفات المرفوعة محتوى قابلًا للبحث داخل Vector Stores. ويحدد NIST مخاطر Resource Control وData Poisoning وMalware والحاجة لإعادة تقييم المخاطر بعد تطبيق RAG. أما مسار العزل أدناه فهو تصميم هندسي مبني على تلك المصادر وتم التحقق منها في 26 أكتوبر 2026.
الخلاصة أولًا
لا ترفع ملف العميل مباشرة إلى Vector Store الحي. امنح الرفع هوية ثابتة، واحفظ الأصل بشكل خاص، وحلله في بيئة معزولة، وصنف الناتج وافحصه، واربط Metadata الصلاحيات الموثوقة خارج سيطرة المستند، ثم انشر Index Version مكتملة بعد نجاح كل البوابات. وعند البحث، اشتق Tenant وACL Filters من حالة التطبيق الموثقة، وحمّل النص المصرح من مصدر الحقيقة، وافصل المحتوى المسترجع كدليل، واطلب موافقة مستقلة لأي Side Effect.
| المرحلة | القرار الموثوق | المادة غير الموثوقة |
|---|---|---|
| Upload | المالك الموثق والتاجر والغرض | اسم الملف وMIME المعلن والبايتات |
| Extraction | سياسة Parser وحدوده وهوية Worker | النص والروابط وMacros والكائنات المضمنة |
| Classification | نوع المستند والوجهة المعتمدان | التعليمات المكتوبة داخل المستند |
| Indexing | الإصدار الثابت وACL وPipeline Version | Chunks وEmbeddings |
| Retrieval | Scope مشتقة من الخادم والصلاحية الحالية | Similarity Score والنص المسترجع |
| Generation | سياسة النظام والعقد المنظم | ادعاءات المستند وأوامره المضمنة |
| Action | تفويض الخدمة المالكة والموافقة | Tool Arguments اقترحها Model |
ضع Threat Model لحدود الإدخال
قد يكون رافع الملف ومصدره ومؤلفه جهات مختلفة. يمكن لموظف موثوق رفع PDF لمورد يحتوي نصًا مخفيًا. وقد يستورد Crawler صفحة مخترقة، أوتتغير معرفة موثوقة بعد اعتمادها، أويوسع Parser ملفًا صغيرًا مضغوطًا إلى جيجابايتات. وقد يأمر مقطع مسترجع الـModel بتجاهل السياسة أوكشف أسرار أواستدعاء Tool.
نمذج على الأقل هذه الفئات:
- Indirect Prompt Injection: تعليمات تصل داخل مستند أوصفحة أوEmail أونص OCR؛
- Data Poisoning: محتوى مصمم يغير Chunks المسترجعة أوخلاصة المساعد؛
- Parser Exploitation: ملفات تالفة أوDecompression Bombs أوConverters ضعيفة تهاجم Workers؛
- Scope Poisoning: Metadata يسيطر عليها المهاجم تنقل المحتوى إلى Tenant أوAudience خاطئة؛
- Provenance Loss: لا تعود Chunks مرتبطة بالبايتات والإصدار والموقع المحدد؛
- Stale Deletion: ملف مسحوب يبقى قابلًا للبحث في Index قديمة أوCache أوReplica.
يسمي تصنيف NIST للتعلم الآلي العدائي سيطرة المهاجم على الموارد الخارجية المستخدمة وقت Inference بـResource Control ويربطها بـIndirect Prompt Injection. هذا تصنيف للتهديد وليس وعدًا بأن Scanner واحدة ستكتشفه.
ابن State Machine للعزل
أبق الملف الأصلي خارج Corpus القابلة للبحث حتى تصل State Machine إلى published:
received -> stored -> type_verified -> extracted -> scanned
-> classified -> approved -> indexed -> published
any gate -> rejected | quarantined | needs_review
published -> superseded -> tombstoned -> verified_absentتكتب كل Transition هوية Actor والوقت وإصدار السياسة وInput Digest وOutput Digest والسبب. تستأنف Retry إصدار المستند نفسه بدل إنشاء نسخة مرئية ثانية. وسجل الفشل صراحة؛ فإذا انتهت مهلة Ingestion Job بعد كتابة نصف Chunks، فلا يجب أن يصبح الإصدار الجزئي قابلًا للبحث.
تفصل هوية مفيدة بين المستند المنطقي وإصداراته الثابتة:
{
"tenant_id": "derived-by-server",
"document_id": "policy:returns",
"version_id": "sha256:original-bytes",
"source_uri": "controlled-reference",
"ingestion_policy": "rag-ingest-v7",
"parser_version": "pdf-pipeline-v4",
"acl_revision": "acl-218",
"status": "quarantined"
}يكشف Digest تغير البايتات، لكنه لا يثبت المؤلف أوالسلامة. يمكن لـSigned Upstream Event أوRepository Commit أوCMS Audit Trail أوموافقة بشرية تقوية Provenance.
تحقق من النوع قبل Parsing
لا تثق بالامتداد أوContent-Type الذي يعلنه Client. قارن Magic Bytes والنوع المكتشف والصيغ المسموحة. ضع حدودًا للحجم المضغوط والمفكوك وعدد الصفحات والكائنات وRecursion Depth وTimeout والذاكرة والمعالج. وارفض الملفات المشفرة أوالمحمية بكلمة مرور ما لم يملك المنتج مسارًا آمنًا وصريحًا لها.
شغّل Parsers وOCR داخل Workers قصيرة العمر بلا Production Credentials، مع Input Mount للقراءة فقط، وموقع Output مستقل، ووصول شبكة محدود. حدّث Parser Image بصورة منفصلة عن Web App. وعامل Macros وScripts والمراجع الخارجية والملفات المضمنة كمحتوى نشط: احذفها أوارفضها أوحوّلها لتحليل متخصص حسب السياسة. Antivirus وسيلة للبرمجيات الخبيثة المعروفة، وليست إثباتًا أن النص آمن للـLLM.
احتفظ بالأصل وNormalized Extraction Manifest. يجب أن يسجل Manifest الصفحات والعناوين والجداول والصور والروابط والكائنات المضمنة وOCR Confidence وتحذيرات الاستخراج. قد يؤدي Parser يسقط جدولًا بصمت إلى Integrity Failure حتى دون مهاجم.
افصل بيانات المستند عن Control Metadata
لا تسمح للمستند باختيار tenant_id أوACLs أوSource Authority أوRetention أوLegal Status أوApproval State. تشتق Trusted Application Code هذه الحقول من مسار الرفع الموثق وPolicy Service، وتحفظها كـTyped Metadata بجانب Artifact وتعرضها داخل كل Searchable Point.
تدعم OpenAI File Search التصفية عبر Metadata، ويبحث Retrieval API داخل Vector Stores باستخدام File-attribute Filters. هذه قدرات مفيدة للتنفيذ، لكن التطبيق يبقى مالك السياسة. لا يقبل Public Request Tenant Filter اعتباطية؛ ابن الفلتر على الخادم وطبقه على كل Retrieval Branch.
في Corpora عالية المخاطر، حمّل Chunk النهائية عبر Authorized Repository بعد Vector Search. تعيد Vector Store Candidate Identities، ثم تعيد Source-of-truth Service فحص صلاحية المستخدم الحالية وتعرض Canonical Text. يكشف هذا ACL Projections القديمة ويمنع Vector Point من أن تصبح Authority.
افحص المحتوى دون ادعاء كشف كامل
استخدم عدة Detectors ضيقة بدل Flag واحدة باسم safe:
| Detector | مثال للناتج | التصرف |
|---|---|---|
| Malware Scanner | Signature أوكائن مشبوه | رفض أوSpecialist Quarantine |
| Content Policy | Data Class ممنوعة | Corpus مقيدة أورفض |
| Instruction Detector | نص يخاطب Model أوTools | تعليم واختبار دون منح صلاحية |
| Secret/PII Detector | Credential أوبيانات شخصية | Redact أوTokenize أوتقييد |
| Provenance Check | مصدر غير موقع أوتغير | مراجعة مطلوبة |
| Duplicate Detector | Digest/Version موجودة | أعد استخدام النتيجة ومنع Index Write مكررة |
يمكن لـPrompt-injection Classifier تقليل الخطر، لكن تبقى False Negatives. لذلك يجب أن يكون Runtime آمنًا حتى إذا مر نص خبيث. لا تنقل النص المشبوه إلى Developer Message. افصله كدليل مسترجع، وقيد تدفق البيانات بين Nodes بـStructured Schemas، وأبق Authorization وTool Policy خارج Model.
انشر Indexes بشكل ذري
أنشئ Chunks وEmbeddings وIndex داخل Staging Version. سجل لكل Chunk إصدار المصدر والموقع وContent Digest وإصدارات Parser وEmbedding وACL Revision وPublication State. قارن Expected Chunks بالمكتوبة، وشغّل Sample Retrieval وPermission Tests، ثم بدّل Alias أوApplication Pointer ذريًا.
تنص وثائق OpenAI Retrieval على أن إضافة ملف إلى Vector Store تجعله يُقسّم ويُضمّن ويُفهرس تلقائيًا. وتشير أيضًا إلى أن حذف الملفات Eventually Consistent، وقد تعيد نتائج البحث محتوى محذوفًا لفترة قصيرة. لذلك لا تعتبر قبول Delete Call دليلًا فوريًا على الغياب عند سحب محتوى حساس. امنع Document ID داخل التطبيق، وأوقف Hydration، وامسح Caches، وطابق حتى يختفي المحتوى القديم، وسجل دليل الإكمال.
تعامل مع المقاطع كدليل لا تعليمات
استخدم عقدًا ثابتًا وقت Generation:
- تحدد System وDeveloper Policy المهمة والأدوات المسموحة.
- يحدد نص المستخدم الطلب لكنه لا يمنح Authority جديدة.
- تعرض المقاطع كEvidence مع Citation IDs ثابتة.
- يعيد Model جوابًا منظمًا أوTyped Abstention.
- يتحقق Validator من Citation IDs وOutput Schema.
- يُفوض أي Write Action ويُعتمد بشكل مستقل.
لا تضع أسرارًا أوTool Credentials واسعة أوسجلات خاصة غير مرتبطة داخل Context. ضع حدًا للـTokens وChunks لكل مستند حتى لا يهيمن مصدر مسموم. وإذا تعارضت المصادر، فاتبع Authority وEffective Dates تحددها السياسة؛ وإلا اعرض التعارض بدل تكليف Model باختيار الحقيقة من Similarity.
قيّم الهجمات وإخفاقات دورة الحياة
أنشئ Security Evaluation Set بجانب Relevance Tests. ضم سياسة بريئة تحتوي كلمات مثل “ignore previous”، وتعليمة خبيثة مخفية في Footer، ونصًا أبيض استخرجه OCR، ونسخة مسمومة بتاريخ أحدث، ومستند Cross-tenant، ومستندًا مسحوبًا، وParser Timeout، وArchive Bomb، وملفًا يتغير بعد الاعتماد.
قس أكثر من Accuracy المصنف:
- يجب أن تكون Unauthorized Retrieval Rate صفرًا في Test Suite؛
- Revoked-content Retrieval وHydration Rates؛
- Injection-following Rate وForbidden Tool-call Rate؛
- Citation Validity ودقة Source Version؛
- Quarantine False Positives وزمن Manual Review؛
- الزمن من Revocation إلى Verified Absence؛
- Incomplete Publication وOrphaned-point Counts.
يوصي NIST Generative AI Profile باختبار مخاطر Value Chain، ومنها Poisoning وMalware والخصوصية وLocalization، وإعادة تقييم المخاطر بعد تطبيق RAG، وتوثيق المصادر وProvenance. هذه توصيات حوكمة؛ حوّلها إلى Controls قابلة للتنفيذ وأدلة يستطيع تطبيقك إثباتها.
أفضل الممارسات وAnti-patterns
أفضل الممارسات
- احتفظ بالبايتات الأصلية وProvenance ثابتة.
- نفذ Parsing داخل Workers معزولة ومحدودة الموارد.
- أبق ACL وAuthority Metadata خارج تحكم المستند.
- انشر Index Versions مكتملة بشكل ذري.
- أعد التفويض عند Hydration لا وقت الإدخال فقط.
- أبق النص المسترجع خارج الرسائل ذات الأولوية.
- تحقق من الحذف عبر Index وCache وReplicas.
- أعد Red Team للخط الكامل بعد تغييرات Parser أوModel أوPolicy.
Anti-patterns
- الرفع مباشرة إلى Vector Store الحية.
- الثقة بالامتداد أوMIME Header أواسم الملف.
- اعتبار Antivirus أوInjection Classifier ضمانًا.
- السماح للنص بتحديد Tenant أوAudience Metadata.
- إعطاء جواب RAG أداة كتابة غير مقيدة.
- اعتبار الحذف مكتملًا عند قبول API للطلب.
- تسجيل المستندات وPrompts الخاصة في Observability عامة.
خلاصة التنفيذ
- حدد المصادر والصيغ وData Classes وقواعد المراجعة.
- أنشئ هويات ثابتة للمستند وإصداراته.
- احفظ الأصل خاصًا ونفذ Parsing في Workers معزولة.
- سجل Extraction Manifest وSecurity Findings منظمة.
- اشتق Tenant وACL وAuthority من حالة موثوقة.
- اكتب في Staging مع Provenance Metadata مكتملة.
- شغّل Retrieval وPermission وInjection وDeletion Tests.
- انشر ذريًا واحتفظ بمؤشر Rollback.
- أعد تفويض Candidates قبل Hydration.
- تحقق من Citations وAbstention وTool Proposals وقت التشغيل.
اقرأ أيضًا: معمارية RAG للإنتاج، وعزل العملاء في Qdrant، وتقييم Retrieval في RAG، وProvenance للاستشهادات، ومركز AI وRAG وVector Search.
المراجع الأساسية
- OpenAI — Safety in building agents
- OpenAI — File Search
- OpenAI — Retrieval
- NIST AI 100-2e2025 — Adversarial Machine Learning
- NIST AI 600-1 — Generative AI Profile
- NIST IR 8579 — NCCoE RAG chatbot security learnings
- Wikimedia Commons — Sheet Fed Scanner
- Creative Commons Attribution 4.0
المراجع الرسمية
تدعم هذه المراجع سلوك الأدوات المذكورة. الأمثلة وقرارات التصميم توضيحية، ويجب تكييفها مع متطلبات المشروع وإصداراته.
إعداد: Noor Yasser
تعمل على تحدٍ تقني مشابه؟
أساعد الفرق على تحويل القرار المعماري إلى نطاق واضح وتنفيذ يمكن تشغيله ومراجعته بثقة.




