{"slug": "rag-sanitizer-v0-2-escaner-de-corpus-rag-pre-ingestion-con-embeddings-reales-y", "title": "rag-sanitizer v0.2: escáner de corpus RAG pre-ingestión con embeddings reales y CLIP", "summary": "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.", "body_md": "Detecta documentos poison en un corpus RAG\n\nantesdel chunk+embed, no después de la recuperación. v0.2 añade embeddings reales (MiniLM) y detección multimodal (CLIP).\n\nLa 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.\n\n`rag-sanitizer`\n\ncubre ese tramo: un escáner determinista y barato que marca o pone en cuarentena el corpus **antes** de `chunk + embed`\n\n.\n\nTres detectores, combinables:\n\n`k·sigma`\n\n.`Madrid → Beijing`\n\n).\n\n```\n# install\npip install -e '.[real-embeddings,multimodal]'\n\n# fast suite (Dummy + heurístico, sin descargar modelos)\nrag-sanitizer fixtures/corpus.jsonl --embedder dummy\n\n# batería real\nrag-sanitizer fixtures/corpus.jsonl --embedder real --multimodal clip\n```\n\nEl reporte es por documento: `CLEAN`\n\n/ `SUSPECT`\n\n/ `POISON`\n\n, con las razones. La salida va por `--out`\n\n(`.json`\n\no `.md`\n\n); el corpus es un dir, un `.jsonl`\n\n, o un `.txt`\n\n/`.md`\n\n.\n\n`real_embeddings`\n\n(MiniLM + CLIP, contra `sentence-transformers`\n\n/`torch`\n\n): `real_embeddings`\n\nse saltan). `ruff check`\n\ny `ruff format --check`\n\nlimpios; `bandit`\n\n0 issues.`revision`\n\npinneada (commit `3d74acf9...`\n\nde `openai/clip-vit-base-patch32`\n\n), así la mitigación de B615 es el pin, no un `#nosec`\n\n.Documentado en `KNOWN_ISSUES.md`\n\n, no oculto:\n\n`n >= 10`\n\ndocumentos de confianza; con menos, el veredicto lleva `low_confidence`\n\ny el scanner lo señala en `ScanReport.warnings`\n\nen 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`\n\n) apareció un bug real: tras corregir `sigmoid(logit)`\n\n(que saturaba a 1.0 para todos los pares) por coseno escalado por temperatura en `clip_embedder.py`\n\n, **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.\n\n| Componente | Uso |\n|---|---|\n| Typer | CLI |\n| sentence-transformers (MiniLM) | embeddings reales |\n| transformers + torch | CLIP |\n| ruff + bandit | calidad y SAST |\n\n*Licencia: AGPL-3.0-or-later. Autor: Pedro Sordo Martínez.*", "url": "https://wpnews.pro/news/rag-sanitizer-v0-2-escaner-de-corpus-rag-pre-ingestion-con-embeddings-reales-y", "canonical_source": "https://dev.to/magopredator/rag-sanitizer-v02-escaner-de-corpus-rag-pre-ingestion-con-embeddings-reales-y-clip-3jo4", "published_at": "2026-08-28 19:21:34+00:00", "updated_at": "2026-08-28 19:48:21.022868+00:00", "lang": "en", "topics": ["artificial-intelligence", "ai-safety", "ai-tools", "developer-tools", "machine-learning"], "entities": ["Pedro Sordo Martínez", "rag-sanitizer", "MiniLM", "CLIP", "Claude", "sentence-transformers", "Typer", "ruff"], "alternates": {"html": "https://wpnews.pro/news/rag-sanitizer-v0-2-escaner-de-corpus-rag-pre-ingestion-con-embeddings-reales-y", "markdown": "https://wpnews.pro/news/rag-sanitizer-v0-2-escaner-de-corpus-rag-pre-ingestion-con-embeddings-reales-y.md", "text": "https://wpnews.pro/news/rag-sanitizer-v0-2-escaner-de-corpus-rag-pre-ingestion-con-embeddings-reales-y.txt", "jsonld": "https://wpnews.pro/news/rag-sanitizer-v0-2-escaner-de-corpus-rag-pre-ingestion-con-embeddings-reales-y.jsonld"}}