cd /news/artificial-intelligence/rag-sanitizer-v0-2-escaner-de-corpus… · home topics artificial-intelligence article
[ARTICLE · art-114575] src=dev.to ↗ pub= topic=artificial-intelligence verified=true sentiment=· neutral

rag-sanitizer v0.2: escáner de corpus RAG pre-ingestión con embeddings reales y CLIP

Pedro Sordo Martínez released rag-sanitizer v0.2, an open-source pre-ingestion scanner that detects poisoned documents in RAG corpora before chunking and embedding. The tool adds real embeddings (MiniLM) and multimodal detection (CLIP) to identify semantic mimicry, entity swaps, and visual contradictions. An independent audit by Claude caught a threshold calibration bug in the CLIP detector, which was fixed and reverified.

read2 min views3 publishedAug 28, 2026

Detecta documentos poison en un corpus RAG

antesdel chunk+embed, no después de la recuperación. v0.2 añade embeddings reales (MiniLM) y detección multimodal (CLIP).

La mayoría de la defensa contra envenenamiento de RAG opera post-retrieval o en inferencia. Pero el corpus se puede envenar antes de la ingesta: un documento insertado con texto que imita el estilo del corpus (semantic mimicry), sustituye entidades conocidas (entity-swap), o lleva una imagen cuyo contenido contradice el texto (visual poison). Una vez embebido, el daño ya está en el vector store.

rag-sanitizer

cubre ese tramo: un escáner determinista y barato que marca o pone en cuarentena el corpus antes de chunk + embed

.

Tres detectores, combinables:

k·sigma

.Madrid → Beijing

).

pip install -e '.[real-embeddings,multimodal]'

rag-sanitizer fixtures/corpus.jsonl --embedder dummy

rag-sanitizer fixtures/corpus.jsonl --embedder real --multimodal clip

El reporte es por documento: CLEAN

/ SUSPECT

/ POISON

, con las razones. La salida va por --out

(.json

o .md

); el corpus es un dir, un .jsonl

, o un .txt

/.md

.

real_embeddings

(MiniLM + CLIP, contra sentence-transformers

/torch

): real_embeddings

se saltan). ruff check

y ruff format --check

limpios; bandit

0 issues.revision

pinneada (commit 3d74acf9...

de openai/clip-vit-base-patch32

), así la mitigación de B615 es el pin, no un #nosec

.Documentado en KNOWN_ISSUES.md

, no oculto:

n >= 10

documentos de confianza; con menos, el veredicto lleva low_confidence

y el scanner lo señala en ScanReport.warnings

en vez de emitir un veredicto silencioso.El ciclo siguió implementa → audita en clone limpio → corrige → re-audita → aprueba → merge. En la auditoría independiente (Claude, sobre SHA 22db1fb

) apareció un bug real: tras corregir sigmoid(logit)

(que saturaba a 1.0 para todos los pares) por coseno escalado por temperatura en clip_embedder.py

, el umbral de ClipMultimodalDetector se había quedado en 0.5 y con la nueva escala (match ~0.27–0.32, mismatch ~0.16–0.24) habría marcado SUSPECT prácticamente cualquier imagen. Se recalibró a 0.25, se añadió el test de caso positivo que faltaba, y se reverificó. Ese es el valor de la auditoría externa: atrapa lo que el self-report no ve.

Componente Uso
Typer CLI
sentence-transformers (MiniLM) embeddings reales
transformers + torch CLIP
ruff + bandit calidad y SAST

Licencia: AGPL-3.0-or-later. Autor: Pedro Sordo Martínez.

── more in #artificial-intelligence 4 stories · sorted by recency
── more on @pedro sordo martínez 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/rag-sanitizer-v0-2-e…] indexed:0 read:2min 2026-08-28 ·