Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
RAGSieve — Rilevamento di avvelenamento della conoscenza tramite contrasto locale auto-referenziato nella generazione aumentata da recupero | Kitploit
Strumenti/GitHubGitHub/xrazymee/ragsieve
Strumenti DifensiviMachine LearningPaper e RicercaSicurezza dell'IARilevamento di AnomalieAttacco Avversario
GitHubxrazymee/ragsieve

RAGSieve

Rilevamento di avvelenamento della conoscenza tramite contrasto locale auto-referenziato nella generazione aumentata da recupero

Vedi Repository
371 mese faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

RAGSieve

Codice per RAGSieve: Detecting Knowledge-Poisoned Documents in RAG Without a Trusted Reference.

RAGSieve rileva documenti con avvelenamento della conoscenza in due punti di un sistema di retrieval-augmented generation (RAG). RSQ è un filtro online: assegna un punteggio ai cinque documenti selezionati per la generazione confrontandoli con i rank 6--20 per la query corrente. RSG è uno scanner offline: assegna un punteggio a ogni documento del corpus rispetto al proprio vicinato semantico--lessicale. Il pacchetto contiene le implementazioni di RSQ e RSG usate nell'articolo, il retrieval esatto sull'intero corpus, il filtraggio Top-5 e il refill, la valutazione a livello di documento e un esempio compatto ed eseguibile.

Contenuto del repository

data/datasets/       NQ, HotpotQA, and MS MARCO text knowledge bases
data/demo/           four target queries and 20 example poison documents
src/ragsieve/     RSQ, RSG, retrieval, filtering, and metrics
install.sh           environment installation
data_preparation.sh  local construction of the nine dense indices
run_demo.sh          end-to-end RSQ and RSG functionality check

Le tre knowledge base rilasciate contengono 128.044 documenti NQ, 9.961 documenti HotpotQA e 8.239 passaggi MS MARCO. Includono testo grezzo, 1.000 query campionate, qrels, risposte target e il sottoinsieme fisso di 100 query per l'attacco. I vettori densi sono generati localmente e non fanno mai parte del repository.

La demo contiene due realizzazioni PR-W e due CEM-C da NQ, con cinque documenti poison per query. Questi attacchi offrono un percorso breve e ispezionabile attraverso entrambi i rilevatori senza distribuire la raccolta completa degli attacchi o le implementazioni di generazione degli attacchi.

Installazione

Si consigliano Python 3.11 o 3.12, uv e una GPU con supporto CUDA.

bash install.sh

Il rilevatore scarica i modelli Hugging Face indicati nell'articolo al primo utilizzo.

Per il QA end-to-end, copiare la configurazione condivisa compatibile con OpenAI e compilare i tre valori:

cp .env.example .env
OPENAI_BASE_URL=https://api.openai.com/v1
OPENAI_MODEL=your-model-name
OPENAI_API_KEY=your-api-key

Lo stesso endpoint e lo stesso modello generano le risposte ed eseguono il giudizio ASR semantico.

Valutazione rapida

bash run_demo.sh

Questo comando costruisce un indice BGE-M3 locale per lo snapshot RSG di 520 documenti, esegue RSQ sui contesti di retrieval preparati sull'intero corpus, filtra ed effettua il refill del Top-5 per la generazione, e valuta entrambi i rilevatori. I risultati vengono scritti in outputs/demo/:

  • rsq-metrics.json: AUROC di RSQ e rilevamento del poison al 5% di rimozione pulita;
  • rsg-metrics.json: metriche RSG sullo snapshot del corpus senza query;
  • filtered-top5.jsonl: i cinque documenti mantenuti per la generazione dopo RSQ.
  • rsg-*-top5.jsonl e joint-*-top5.jsonl: contesti mantenuti per ciascun attacco della demo dopo il solo RSG e dopo il filtraggio congiunto. Il QA è un comando separato, opt-in.

Con gli esempi rilasciati, RSQ raggiunge il 100% di AUROC e il 100% di rilevamento del poison al 5% di rimozione pulita sia per PR-W che per CEM-C. RSG raggiunge il 100% di AUROC e il 100% di rilevamento del poison allo stesso budget di rimozione pulita; la sua regola fissa rimuove l'85% dei documenti poison e lo 0% dei documenti puliti. Questi valori sono un controllo di funzionalità sulla demo curata, non il risultato aggregato dell'articolo.

I campi ground-truth vengono letti solo dai comandi di valutazione. Non vengono passati a RSQ o RSG.

Costruire gli indici locali completi

bash data_preparation.sh

Per impostazione predefinita, questo costruisce i 3 dataset x 3 retriever valutati nell'articolo: BGE-M3, E5-large-v2 e all-MiniLM-L6-v2. L'output viene inserito nella directory ignorata data/indices/. È possibile selezionare un sottoinsieme senza modificare lo script:

DATASETS="nq" ENCODERS="bge-m3" DEVICE="cuda:0" bash data_preparation.sh

Ogni indice è prodotto dal corpus completo rilasciato con le impostazioni di pooling, prefisso, troncamento e normalizzazione coseno dell'articolo.

RSQ: filtraggio online al momento della query

Preparare un retrieval pulito e un retrieval con gli attacchi inclusi:

uv run ragsieve prepare-contexts \
  --dataset-dir data/datasets/nq \
  --index-dir data/indices/nq/bge-m3 \
  --subset data/demo/subset.json \
  --attacks data/demo/attacks.jsonl \
  --output outputs/demo/contexts.jsonl \
  --device cuda:0

prepare-contexts esegue una ricerca esatta sull'intero corpus una volta per ogni query, assegna un punteggio ai documenti iniettati separatamente e salva i primi 100 nel loro ordine originale. RSQ assegna un punteggio ai candidati 1--5 rispetto ai rank 6--20; i rank rimanenti sono disponibili per il refill. Eseguire RSQ, calcolare le metriche a livello di documento ed effettuare il refill del contesto di generazione:

uv run ragsieve detect \
  --input outputs/demo/contexts.jsonl \
  --output outputs/demo/rsq-predictions.jsonl \
  --device cuda:0

uv run ragsieve evaluate \
  --predictions outputs/demo/rsq-predictions.jsonl \
  --output outputs/demo/rsq-metrics.json

uv run ragsieve filter-contexts \
  --contexts outputs/demo/contexts.jsonl \
  --predictions outputs/demo/rsq-predictions.jsonl \
  --output outputs/demo/filtered-top5.jsonl

uv run ragsieve qa \
  --input outputs/demo/filtered-top5.jsonl \
  --output outputs/demo/qa-records.jsonl \
  --summary outputs/demo/qa-summary.json \
  --env-file .env

RSQ combina quattro fonti di evidenza: concentrazione dell'answer-anchor, integrità del sistema di scrittura, surprisal del modello linguistico locale e una transizione di allineamento con la query. Tutte le impostazioni nei default della CLI sono quelle dell'articolo.

RSG: ispezione offline del corpus

RSG utilizza il testo dei documenti e i vettori già mantenuti dall'indice RAG:

uv run ragsieve detect-graph \
  --documents data/demo/corpus.jsonl \
  --embeddings data/indices/demo/bge-m3/embeddings.npy \
  --output outputs/demo/rsg-predictions.jsonl \
  --device cuda:0

uv run ragsieve evaluate-graph \
  --predictions outputs/demo/rsg-predictions.jsonl \
  --labels data/demo/labels.jsonl \
  --output outputs/demo/rsg-metrics.json

RSG costruisce il grafo esatto dei top-16 per similarità coseno, mantiene i vicini semanticamente prossimi e lessicalmente lontani, misura l'aumento di densità di ogni documento rispetto al proprio floor di vicinato e combina la coda empirica del corpus con l'integrità del sistema di scrittura.

Deployment congiunto

Il deployment congiunto è seriale: RSG esclude prima i documenti, poi RSQ assegna un punteggio ai nuovi top five rispetto ai rank 6--20 sopravvissuti. I candidati segnalati vengono rimossi e il contesto viene riempito una volta dal ranking sopravvissuto; i documenti sostitutivi non vengono riassegnati. Dopo bash run_demo.sh, l'esempio PR-W è:

uv run ragsieve quarantine-contexts \
  --contexts data/demo/contexts.jsonl \
  --graph-predictions outputs/demo/rsg-predictions.jsonl \
  --condition pr_w \
  --output outputs/demo/serial-pr_w-contexts.jsonl
uv run ragsieve detect \
  --input outputs/demo/serial-pr_w-contexts.jsonl \
  --output outputs/demo/serial-pr_w-rsq.jsonl --device cuda:0
uv run ragsieve filter-contexts \
  --contexts outputs/demo/serial-pr_w-contexts.jsonl \
  --predictions outputs/demo/serial-pr_w-rsq.jsonl \
  --output outputs/demo/joint-pr_w-top5.jsonl

uv run ragsieve qa \
  --input outputs/demo/joint-pr_w-top5.jsonl \
  --output outputs/demo/joint-pr_w-qa.jsonl \
  --summary outputs/demo/joint-pr_w-qa-summary.json \
  --env-file .env
Scarica lo strumento