Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
D-Scan — يحلل الحالات الداخلية لنماذج LLM وأكثر من 100 ميزة من ميزات الانتباه/الاحتمالات لتدريب مصنفات تكتشف هجمات تسميم المستندات في أنظمة RAG. | Kitploit
أدوات/GitHubGitHub/yingtaoren/d-scan
أدوات دفاعيةتعلم الآلةأمن الذكاء الاصطناعيكشف الشذوذ
GitHubyingtaoren/d-scan

D-Scan

يحلل الحالات الداخلية لنماذج LLM وأكثر من 100 ميزة من ميزات الانتباه/الاحتمالات لتدريب مصنفات تكتشف هجمات تسميم المستندات في أنظمة RAG.

عرض المستودع
12منذ 4 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

عندما يعضّ السياق: كشف تسميم RAG عبر انهيار الانتباه على مستوى المستند

D-SCAN هو إطار تحليلي لكشف هجمات تسميم المستندات في أنظمة RAG (التوليد المعزز بالاسترجاع). يجمع الحالات الداخلية لنموذج اللغة الكبير (LLM) أثناء التوليد (احتمالات الرموز وأوزان الانتباه)، ويستخرج ميزات متعددة الأبعاد، ويُدرّب مصنّفات للتمييز بين المستندات المسترجعة النظيفة والمسمومة.

1. التثبيت والمتطلبات

المتطلبات الأساسية

  • Python >= 3.9
  • GPU متوافق مع CUDA (يُنصح بذاكرة VRAM سعتها 24GB على الأقل لاستدلال النماذج ذات 8 مليارات معامل)

تجهيز النموذج

يستخدم هذا المشروع Llama-3.1-8B-Instruct افتراضيًا. قم بتنزيل النموذج إلى مسار محلي وحدّث متغير MODEL_ID في collect_inner_state.py:

root@kitploit:~
MODEL_ID = "/your/path/to/Llama-3.1-8B-Instruct"

2. البدء السريع

تتكون سير العمل الكاملة من ثلاث خطوات: جمع الحالات الداخلية ← حساب الميزات ← تدريب المصنّف. السؤال والمستندات المسترجعة ذات الصلة متوفرة على https://huggingface.co/datasets/An998/D-SCAN.

الخطوة 1: جمع الحالات الداخلية للنموذج

root@kitploit:~
# Update configuration parameters in collect_inner_state.py, then run
python collect_inner_state.py

الخطوة 2: حساب مقاييس الميزات

root@kitploit:~
# Analyze both attack and clean data, compute all features, and save results
python compute_feature.py \
    --attack_dir ./saved_reppl_weights_serial_query1_attack2_2wiki \
    --clean_dir ./saved_reppl_weights_serial_query1_pure1_5_2wiki \
    --output_dir ./analysis_results/2wiki_all \
    --max_attack_samples 3000 \
    --max_clean_samples 3000

الخطوة 3: تدريب المصنّف وتقييمه

افتح fit_D-SCAN.ipynb ونفّذ الخلايا بالتسلسل من أجل:

  1. تحميل بيانات الميزات المُولَّدة في الخطوة 2
  2. تدريب مصنّفات الانحدار اللوجستي / الغابة العشوائية (تحقق متقاطع بخمسة أضعاف)
  3. تقييم أداء النقل على مجموعة الاختبار

3. تفاصيل خط الأنابيب

3.1 جمع البيانات (collect_inner_state.py)

لكل مدخل من نوع سؤال-مستند، ينفّذ نموذج اللغة الكبير توليدًا متعدد العينات (الافتراضي: 10 عينات، temperature=1.0) ويجمع الحالات الداخلية التالية:

معاملات الإعداد الرئيسية

root@kitploit:~
MODEL_ID = "/path/to/model"     # Model path
NUM_SAMPLES = 10                # Number of samples per question
MAX_NEW_TOKENS = 50             # Maximum generated tokens
TEMPERATURE = 1.0               # Sampling temperature
data_type = 'pure1_5'           # Data type: 'pure1_5' (clean) or 'attack2' (attack)
dataset_name = 'hotpotqa'       # Dataset: 'hotpotqa', '2wiki', 'musique'

تُحفظ المخرجات كملفات data_{batch_id}_reppl.pt وملفات إحصائيات results_stats_*.jsonl.


3.2 حساب الميزات (compute_feature.py)

يستخرج 10 فئات تضم أكثر من 100 ميزة بُعدية من الحالات الداخلية المجمّعة. يستخدم المصنّف هذه الميزات لتحديد ما إذا كانت هناك مستندات مسمومة بين المستندات المسترجعة لاستعلام معيّن.

نظرة عامة على المقاييس

أوصاف المقاييس التفصيلية

1. PerplexityMetrics (إحصائيات احتمال التوليد)

يُحسب من outer_ppl_probs (احتمال كل رمز مولّد):

  • ppl_mean_prob: متوسط الاحتمال عبر جميع الرموز المُولَّدة
  • ppl_std_prob: الانحراف المعياري للاحتمال
  • ppl_min_prob: الحد الأدنى للاحتمال (عدم يقين شديد)
  • ppl_low_prob_ratio: نسبة الرموز منخفضة الاحتمال (<0.1)
  • ppl_cross_sample_var: تباين متوسطات الاحتمالات عبر العينات
  • ppl_coef_variation: معامل الاختلاف (CV = std/mean)
  • ppl_skewness: التواء توزيع الاحتمال
  • ppl_kurtosis: تفرطح توزيع الاحتمال

2. AttentionEntropyMetrics (إنتروبيا الانتباه)

يُحسب من inner_ppl_matrix (أوزان الانتباه في كل خطوة):

  • attn_entropy_mean/std/max: المتوسط والانحراف المعياري والحد الأقصى لإنتروبيا توزيع الانتباه
  • attn_entropy_cv: معامل الاختلاف لإنتروبيا الانتباه

3. AttentionConcentrationMetrics (تركيز الانتباه)

  • attn_top5/10/20_ratio_mean/std: حصة الانتباه التي تستحوذ عليها رموز أعلى K%
  • attn_gini_mean/std: معامل جيني لتوزيع الانتباه (مقياس عدم المساواة)

4. DocumentAttentionDensityMetrics (كثافة انتباه المستند)

  • doc_attn_dens_std/range/max/min: الانحراف المعياري والمدى والحد الأقصى والحد الأدنى لكثافة الانتباه عبر المستندات
  • doc_attn_dens_entropy: إنتروبيا توزيع كثافة انتباه المستند
  • doc_attn_dens_temporal_var_mean: متوسط التباين الزمني لكثافة انتباه المستند

5. SampleConsistencyMetrics (اتساق العينات المتعددة)

  • sample_attn_consistency/std: تشابه جيب التمام عبر العينات لانتباه مستوى الرموز
  • sample_doc_consistency: تشابه جيب التمام عبر العينات لانتباه مستوى المستندات
  • sample_doc_js_divergence: تباعد JS عبر العينات لانتباه مستوى المستندات

6. AttentionDynamicsMetrics (ديناميكيات الانتباه)

  • attn_doc_switch_mean/max: عدد مرات تبديل المستند المهيمن
  • attn_entropy_change_mean/std: تغيّر إنتروبيا الانتباه خطوة بخطوة

7. TokenLevelAttentionMetrics (تقلب الانتباه على مستوى الرموز)

  • tla_std_mean/std/max/median/p90/p99/high_ratio/cv: إحصائيات الانحراف المعياري للانتباه لكل رمز عبر خطوات التوليد
  • tla_ent_mean/std/max/median/p90/p99/high_ratio/cv: إحصائيات إنتروبيا الانتباه لكل رمز عبر خطوات التوليد

8. AnswerProbabilityMetrics (إحصائيات معمّقة لاحتمال الإجابة)

  • aprob_p10/p25/p50/p75/p90/iqr: كميات الاحتمال
  • aprob_high_ratio_05/08: نسبة الرموز عالية الاحتمال
  • aprob_low_ratio_01/001: نسبة الرموز منخفضة الاحتمال
  • aprob_log_mean/std/min: إحصائيات احتمال اللوغاريتم
  • aprob_ppl_mean/std/max: الحيرة على مستوى التسلسل
  • aprob_geometric_mean: المتوسط الهندسي للاحتمالات
  • aprob_distribution_entropy: الإنتروبيا المعلوماتية لمدرج الاحتمال التكراري

9. ProbabilityDynamicsMetrics (ديناميكيات الاحتمال)

  • pdyn_diff_mean/abs_diff_mean/abs_diff_std/abs_diff_max: إحصائيات فرق الاحتمال
  • pdyn_max_drop/max_jump: أقصى هبوط/قفزة في خطوة واحدة
  • pdyn_volatility_mean/std: التقلب
  • pdyn_trend_slope_mean/std: ميل الاتجاه الخطي
  • pdyn_autocorr_mean/std: معامل الارتباط الذاتي
  • pdyn_spike_ratio_01/03: نسبة القمم (نقاط الطفرة)

10. CrossSampleProbabilityConsistencyMetrics (اتساق الاحتمال عبر العينات)

  • cspc_mean_prob_std/cv/range: اتساق متوسطات الاحتمالات عبر العينات
  • cspc_ppl_std/cv/range: اتساق الحيرة عبر العينات
  • cspc_min_prob_std/range: اتساق الحدود الدنيا للاحتمالات
  • cspc_seq_cosine_mean/std: تشابه جيب التمام عبر العينات لتسلسلات الاحتمال
  • cspc_seq_pearson_mean: ارتباط بيرسون عبر العينات لتسلسلات الاحتمال
  • cspc_seq_mse_mean: متوسط مربع الخطأ عبر العينات لتسلسلات الاحتمال
  • cspc_divergence_index: مؤشر التباعد بين العينات

وسائط سطر الأوامر لـ compute_feature.py

root@kitploit:~
python compute_feature.py \
    --attack_dir <attack_data_directory> \
    --clean_dir <clean_data_directory> \
    --output_dir <output_directory> \
    --max_attack_samples 3000 \
    --max_clean_samples 3000 \
    --min_correct_count 0 \
    --min_attack_target_count 0 \
    --num_use_samples 10 \
    --model_path /path/to/model    # Optional: load tokenizer for accuracy calculation

ملفات المخرجات

اسم الملفالوصف
single_metric_analysis.jsonAUC، وقيمة p، ومعامل d لكوهين، إلخ. لكل مقياس

3.3 تدريب المصنّف (fit_D-SCAN.ipynb)

سير عمل دفتر الملاحظات:

  1. تحميل البيانات: قراءة مخرجات full_analysis_results.json من compute_feature.py
  2. اختيار الميزات: استخدام جميع الميزات أو الفلترة حسب الفئة (مثل ميزات الانتباه فقط)
  3. تدريب المصنّفات:
    • الانحدار اللوجستي (تنظيم L2): مصنّف خطي، مناسب لعدد أقل من الميزات
    • الغابة العشوائية (100 شجرة، max_depth=5): مصنّف غير خطي، يلتقط التفاعلات بين الميزات
  4. التحقق المتقاطع بخمسة أضعاف: يبلّغ عن AUC والدقة والضبط والاستدعاء وF1
  5. تحليل أهمية الميزات: يُخرج أهم 10 ميزات
  6. تقييم مجموعة الاختبار: استخدام مُقيِّس التدريب والمصنّف لتقييم أداء النقل على مجموعة اختبار مستقلة
  7. التصور: منحنيات ROC، ومخططات أعمدة لأهمية الميزات، ومقارنة بين التدريب والاختبار

اختيار الميزات للمصنّفات

يوفر المتغير use_features في دفتر الملاحظات تحكمًا مرنًا في المجموعة الفرعية من الميزات المستخدمة من قبل المصنّفات:

root@kitploit:~
# Use all features
use_features = [f for f in feature_names if f not in exclude_cols]

# Use only attention-related features
use_features = [f for f in use_features if 'attn' in f]

# Combine by metric category (example)
use_features = [f for f in feature_names if f.startswith(('ppl_', 'doc_', 'sample_'))]

كما تتم طباعة أداء المصنّف لكل فئة أثناء تنفيذ compute_feature.py:

تنزيل الأداة
الحقلالنوعالوصف
outer_ppl_probsList[Tensor]احتمال توليد الرمز لكل عينة
inner_ppl_matrixList[List[Tensor]]أوزان الانتباه على تسلسل الإدخال في كل خطوة توليد (متوسطة عبر الطبقات)
doc_rangesDict[str, List[int]]نطاق مواضع الرموز لكل مستند في تسلسل الإدخال
generated_sequencesList[List[int]]تسلسلات معرّفات الرموز المُولَّدة لكل عينة
#الفئةاسم الفئة# الميزاتالفكرة الأساسية
1إحصائيات احتمال التوليدPerplexityMetrics8قد تزيد المستندات المسمومة من عدم يقين النموذج أثناء التوليد، وهو ما ينعكس في تغيّرات توزيع الاحتمالات
2إنتروبيا الانتباهAttentionEntropyMetrics4الإنتروبيا العالية تعني انتباهًا مشتتًا واحتمال وجود معلومات متعارضة؛ بينما الإنتروبيا المنخفضة تعني انتباهًا مركّزًا
3تركيز الانتباهAttentionConcentrationMetrics8يقيس ما إذا كان الانتباه مركّزًا على عدد قليل من الرموز عبر نسبة Top-K ومعامل جيني
4كثافة انتباه المستندDocumentAttentionDensityMetrics6مجموع الانتباه مقسومًا على طول المستند، مما يزيل التحيز المرتبط بالطول في توزيع الانتباه
5اتساق العينات المتعددةSampleConsistencyMetrics4في حالة التسميم، قد تكون أنماط الانتباه غير متسقة عبر العينات (تشابه جيب التمام، تباعد JS)
6ديناميكيات الانتباهAttentionDynamicsMetrics4تكرار تبديل المستند المهيمن وحجم تغيّر الإنتروبيا أثناء التوليد
7تقلب الانتباه على مستوى الرموزTokenLevelAttentionMetrics16استقرار الانتباه عند كل موضع رمز في الإدخال عبر خطوات التوليد (الانحراف المعياري، الإنتروبيا)
8إحصائيات معمّقة لاحتمال الإجابةAnswerProbabilityMetrics18كميات الاحتمال، ونسب الرموز عالية/منخفضة الاحتمال، واحتمال اللوغاريتم، والحيرة، إلخ.
9ديناميكيات الاحتمالProbabilityDynamicsMetrics14ميل الاتجاه، والارتباط الذاتي، والتقلب، ونسبة القمم في تسلسل التوليد
10اتساق الاحتمال عبر العيناتCrossSampleProbabilityConsistencyMetrics13تشابه جيب التمام، وارتباط بيرسون، ومتوسط مربع الخطأ، ومؤشر التباعد عبر العينات
الوسيطةالافتراضيالوصف
--attack_dir-دليل بيانات الهجوم (يحتوي على ملفات data_*_reppl.pt)
--clean_dir-دليل البيانات النظيفة
--output_dir-دليل المخرجات
--max_attack_samples3000الحد الأقصى لعدد عينات الهجوم
--max_clean_samples3000الحد الأقصى لعدد العينات النظيفة
--min_correct_count0الحد الأدنى لعدد الإجابات الصحيحة في البيانات النظيفة (للفلترة)
--min_attack_target_count0الحد الأدنى لعدد مرات تحقيق الإجابة المستهدفة في بيانات الهجوم
--num_use_samplesNoneعدد العينات لكل سؤال لحساب المقاييس (الافتراضي: الكل)
--model_pathNoneمسار النموذج (لتحميل مُقسّم الرموز لفك ترميز التسلسلات المُولَّدة)
full_analysis_results.jsonمصفوفة الميزات الكاملة + التصنيفات
document_detailed_metrics.jsonمقاييس تفصيلية لكل مستند (ملخص JSON)
document_detailed_metrics_full.pklمقاييس كاملة على مستوى المستند (تشمل انتباه مستوى الخطوات)
مجموعة الميزاتالبادئة / الكلمة المفتاحية
perplexityppl_*
attention_entropy*entropy* (باستثناء doc و aprob)
attention_concentration*top*، *gini*
document_attentiondoc_*
sample_consistency*sample*، *consistency*
attention_dynamics*switch*، *change*
token_level_attentiontla_*
answer_probabilityaprob_*
probability_dynamicspdyn_*
cross_sample_prob_consistencycspc_*