Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
RAGSieve — Contraste local autorreferenciado para la detección de envenenamiento de conocimiento en generación aumentada por recuperación | Kitploit
Herramientas/GitHubGitHub/xrazymee/ragsieve
Herramientas DefensivasAprendizaje AutomáticoPapers e InvestigaciónSeguridad de IADetección de AnomalíasAtaque Adversario
GitHubxrazymee/ragsieve

RAGSieve

Contraste local autorreferenciado para la detección de envenenamiento de conocimiento en generación aumentada por recuperación

Ver Repositorio
37hace 1 mesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

RAGSieve

Código para RAGSieve: Detecting Knowledge-Poisoned Documents in RAG Without a Trusted Reference.

RAGSieve detecta documentos con envenenamiento de conocimiento en dos puntos de un sistema de generación aumentada por recuperación (RAG). RSQ es un filtro en línea: puntúa los cinco documentos seleccionados para la generación frente a los rangos 6--20 para la consulta actual. RSG es un escáner fuera de línea: puntúa cada documento del corpus frente a su propio vecindario semántico--léxico. El paquete contiene las implementaciones de RSQ y RSG utilizadas en el artículo, recuperación exacta sobre el corpus completo, filtrado y rellenado del Top-5, evaluación a nivel de documento y un ejemplo compacto y ejecutable.

Contenido del repositorio

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

Las tres bases de conocimiento publicadas contienen 128.044 documentos de NQ, 9.961 documentos de HotpotQA y 8.239 pasajes de MS MARCO. Incluyen texto sin procesar, 1.000 consultas muestreadas, qrels, respuestas objetivo y el subconjunto fijo de ataque de 100 consultas. Los vectores densos se generan localmente y nunca forman parte del repositorio.

La demo contiene dos realizaciones PR-W y dos CEM-C de NQ, con cinco documentos envenenados por consulta. Estos ataques ofrecen una ruta corta e inspeccionable a través de ambos detectores sin distribuir la colección completa de ataques ni las implementaciones de generación de ataques.

Instalación

Se recomienda Python 3.11 o 3.12, uv y una GPU compatible con CUDA.

bash install.sh

El detector descarga los modelos de Hugging Face nombrados en el artículo en el primer uso.

Para QA de extremo a extremo, copie la configuración compartida compatible con OpenAI y complete los tres valores:

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

El mismo endpoint y modelo generan respuestas y realizan el juicio semántico de ASR.

Evaluación rápida

bash run_demo.sh

Este comando construye un índice BGE-M3 local para la instantánea RSG de 520 documentos, ejecuta RSQ sobre los contextos de recuperación de corpus completo preparados, filtra y rellena el Top-5 de generación, y evalúa ambos detectores. Los resultados se escriben en outputs/demo/:

  • rsq-metrics.json: AUROC de RSQ y detección de veneno al 5% de eliminación limpia;
  • rsg-metrics.json: métricas de RSG sobre la instantánea del corpus sin consultas;
  • filtered-top5.jsonl: los cinco documentos retenidos para la generación tras RSQ.
  • rsg-*-top5.jsonl y joint-*-top5.jsonl: contextos retenidos para cada ataque de la demo tras RSG solo y tras el filtrado conjunto. El QA es un comando separado y opcional.

Con los ejemplos publicados, RSQ alcanza un 100% de AUROC y un 100% de detección de veneno al 5% de eliminación limpia tanto para PR-W como para CEM-C. RSG alcanza un 100% de AUROC y un 100% de detección de veneno con el mismo presupuesto de eliminación limpia; su regla fija elimina el 85% de los documentos envenenados y el 0% de los documentos limpios. Estos valores son una comprobación de funcionalidad sobre la demo curada, no el resultado agregado del artículo.

Los campos de verdad fundamental solo los leen los comandos de evaluación. No se pasan a RSQ ni a RSG.

Construir los índices locales completos

bash data_preparation.sh

Por defecto, esto construye los 3 datasets x 3 recuperadores evaluados en el artículo: BGE-M3, E5-large-v2 y all-MiniLM-L6-v2. La salida se coloca bajo el directorio ignorado data/indices/. Se puede seleccionar un subconjunto sin editar el script:

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

Cada índice se produce a partir del corpus completo publicado con la configuración de pooling, prefijo, truncamiento y normalización coseno del artículo.

RSQ: filtrado en línea en el momento de la consulta

Prepare una recuperación limpia y una recuperación con los ataques incluidos:

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 realiza una búsqueda exacta sobre el corpus completo una vez por consulta, puntúa los documentos inyectados por separado y guarda los 100 mejores en su orden original. RSQ puntúa los candidatos 1--5 frente a los rangos 6--20; los rangos restantes quedan disponibles para el rellenado. Ejecute RSQ, calcule las métricas a nivel de documento y rellene el contexto de generación:

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 cuatro fuentes de evidencia: concentración de anclas de respuesta, integridad del sistema de escritura, sorpresa de un modelo de lenguaje local y una transición de alineación con la consulta. Todos los ajustes en los valores predeterminados de la CLI son los del artículo.

RSG: inspección fuera de línea del corpus

RSG consume el texto de los documentos y los vectores ya mantenidos por el índice 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 construye el grafo exacto de top-16 por coseno, retiene los vecinos semánticamente cercanos y léxicamente lejanos, mide el aumento de densidad de cada documento sobre el suelo de su propio vecindario, y combina la cola empírica del corpus con la integridad del sistema de escritura.

Despliegue conjunto

El despliegue conjunto es en serie: RSG excluye documentos primero, luego RSQ puntúa el nuevo top cinco frente a los rangos 6--20 supervivientes. Los candidatos marcados se eliminan y el contexto se rellena una vez desde el ranking superviviente; los documentos de reemplazo no se vuelven a puntuar. Tras bash run_demo.sh, el ejemplo PR-W es:

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
Descargar herramienta