
Un Agente de Evaluación para Detectar Desinformación y Envenenamiento de Conocimiento en Sistemas de Generación Aumentada por Recuperación.
Un Agente de Evaluación para Detectar Desinformación y Envenenamiento del Conocimiento en Sistemas de Generación Aumentada por Recuperación.
Este proyecto implementa un Trustworthy RAG Framework con un Agente de Evaluación integrado que evalúa la fiabilidad de las respuestas RAG mediante tres componentes de análisis complementarios:
El sistema produce una Puntuación de Confianza (0-1) para cada respuesta RAG, lo que permite la detección automatizada de ataques de envenenamiento del conocimiento y contenido alucinado.
Este repositorio es el artefacto de investigación del artículo de la conferencia ICSEA 2026 del mismo título. Consulta [Conference_ICSEA2026/](https://github.com/gpt-laboratory/trustworthyrag/blob/HEAD/Conference_ICSEA2026/) para las fuentes LaTeX y la sección Artículo más abajo.
User Query
|
v
+-------------------+
| RETRIEVER | Embedding (MiniLM-L6-v2 or Snowflake Arctic Embed2) + FAISS
+--------+----------+
|
v
+-------------------+
| GENERATOR | Llama 3.3 70B / Qwen 3.5 35B / Mistral 7B Instruct via FARMI API
+--------+----------+
|
v
+--------------------------------------------+
| EVALUATION AGENT |
| |
| NLI Verifier Poison Detector |
| (factuality) (5 detection methods) |
| | | |
| v v |
| Trust Index Calculator |
| T = 0.4*F + 0.35*C + 0.25*(1-P) |
+--------------------------------------------+
|
v
Answer + Trust Score + Evaluation Report
src/
retriever/ # Document retrieval (embeddings, FAISS, chunking)
generator/ # LLM response generation (FARMI client, prompts)
evaluation_agent/ # Core evaluation (NLI, poison detection, trust index)
experiments/ # Experiment framework (poisoned datasets, runner)
pipeline/ # End-to-end RAG pipeline orchestrator
tests/ # Unit tests (78 tests, pytest)
configs/config.yaml # All configuration parameters
figures/ # Auto-generated charts (7 figures, 300 DPI)
run_experiment.py # Experiment CLI (main entry point)
generate_charts.py # Visualization generator
requirements.txt # Python dependencies
# Create and activate virtual environment
python -m venv venv
.\venv\Scripts\Activate.ps1 # Windows PowerShell
# source venv/bin/activate # Linux/Mac
# Install dependencies
pip install -r requirements.txt
# Configure FARMI API access (required for LLM generation)
# Copy the template and fill in your own credentials:
# cp .env.example .env # then edit .env and set FARMI_API_KEY
# The .env file is .gitignored - never commit it or hardcode keys in source.
python run_experiment.py --all
Esto ejecuta todos los experimentos y genera los gráficos automáticamente:
python run_experiment.py --quick # Quick test (10 samples)
python run_experiment.py --samples 30 # Custom sample count
python run_experiment.py --per-strategy # Per-strategy breakdown only
python run_experiment.py --fever # Include FEVER dataset
python run_experiment.py --ablation # Ablation study only
python run_experiment.py --grid # 2x2 factorial grid (all LLM x embedding combos)
python run_experiment.py --grid --samples 50 # Full grid run (100 samples per config)
El prompt interactivo permite seleccionar:
También puedes fijar el generador de forma no interactiva mediante la variable de entorno LLM_MODEL (coincidente con configs/config.yaml y con MODEL_DESCRIPTIONS de run_experiment.py):
$env:LLM_MODEL = "mistral-7b-instruct" # or "qwen3.5:35b", "llama3.3:70b"
python run_experiment.py --all
Reproduce el experimento del asistente de codificación segura (40 reglas OWASP/CWE) desde la raíz del proyecto. Reutiliza el ExperimentRunner y el PoisonedDatasetGenerator existentes y escribe los resultados en data/experiments/seccode_*.json:
$env:LLM_MODEL = "llama3.3:70b"; $env:HF_HUB_OFFLINE = "1"; $env:TRANSFORMERS_OFFLINE = "1"
python Conference_ICSEA2026/run_seccode_usecase.py
# Set $env:SECCODE_N = "4" first for a quick smoke run over a few rules.
python generate_charts.py
pytest # All tests (includes slow model-loading tests)
pytest -m "not slow" # Fast tests only (~0.4s)
pytest --cov=src # With coverage report
| Conjunto de datos | Exactitud | Precisión | Exhaustividad | Puntuación F1 | vs. Línea base |
|---|---|---|---|---|---|
| TruthfulQA (mixto) | 91% | 100% | 40% | 57.1% | +7% |
| FEVER (ejecución completa) | 73% | 20% | 26.7% | 22.9% | −12% |
Línea base ingenua de confianza incondicional: 85% (TruthfulQA), 85% (FEVER). FEVER se queda por debajo de la línea base: el Índice de Confianza requiere calibración específica del dominio para afirmaciones fácticas cortas.
Con intervalos de confianza del 95% (Wilson para proporciones, bootstrap percentil con B=20 000 para F1), el resultado principal mixto de TruthfulQA es: exactitud 91% (IC 83.8–95.2), exhaustividad 40% (IC 19.8–64.3), F1 57.1% (IC 25.0–80.0), Δ=0.225. Los intervalos son amplios porque cada ejecución tiene solo 15 muestras envenenadas, por lo que los reportamos para no sobreestimar la precisión.
| Estrategia | Exactitud | Precisión | Exhaustividad | F1 | Separación |
|---|---|---|---|---|---|
| Inyección | 99% | 93.8% | 100% | 96.8% | 0.498 |
| Contradicción | 92% | 88.9% | 53.3% | 66.7% | 0.311 |
| Sutil | 88% | 100% | 20.0% | 33.3% | 0.149 |
| Intercambio de Entidades | 85% | — | 0% | 0% | 0.053 |
| LLM | Embedding | Exactitud | Precisión | Exhaustividad | F1 | Confianza limpia | Separación |
|---|---|---|---|---|---|---|---|
| Llama 3.3 70B | all-MiniLM-L6-v2 | 91% | 100% | 40% | 57.1% | 0.830 | 0.240 |
| Llama 3.3 70B | snowflake-arctic-embed2 | 91% | 100% | 40% | 57.1% | 0.799 | 0.188 |
| Qwen 3.5 35B | all-MiniLM-L6-v2 | 71% | 25.0% | 46.7% | 32.6% | 0.633 | 0.161 |
| Qwen 3.5 35B | snowflake-arctic-embed2 | 71% | 28.1% | 60.0% | 38.3% | 0.653 | 0.199 |
Hallazgos clave:
Una aplicación de ingeniería de software del agente: un asistente de codificación segura que recupera de una base de conocimiento curada de 40 reglas extraídas del OWASP Top 10 y de CWE (p. ej., consultas parametrizadas para inyección SQL, hashing adaptativo de contraseñas, configuración TLS). Una consulta de un desarrollador recupera orientación que el Agente de Evaluación examina antes de que el LLM emita una recomendación. Envenenamos el 30% de las reglas con las cinco estrategias como cargas útiles de seguridad (p. ej., una directiva espuria CORRECTION:, un identificador CWE intercambiado).
Detección por estrategia (Llama 3.3 70B + all-MiniLM-L6-v2, K=5):
| Estrategia | Exact. | Prec. | Exhaust. | F1 | Δ |
|---|---|---|---|---|---|
| Inyección de instrucciones | 97.5% | 85.7% | 100.0% | 92.3% | 0.542 |
| Contradicción | 85.0% | — | 0.0% | 0.0% | 0.156 |
| Manipulación sutil | 85.0% | — | 0.0% | 0.0% | 0.066 |
| Intercambio de entidades | 72.5% | 29.2% | 58.3% | 38.9% | 0.291 |
| Mixta | 86.2% | 100.0% | 8.3% | 15.4% | 0.163 |
Más allá del punto de operación τ=0.5, el Índice de Confianza tiene una señal fuerte e independiente del umbral en tres LLM (ejecuciones combinadas de estrategias mixtas):
| LLM | Exactitud (τ=0.5) | ROC-AUC | τ* óptimo |
|---|---|---|---|
| Llama 3.3 70B | 91% | 0.81 | 0.71 |
| Mistral 7B Instruct | 87% | 0.79 | 0.58 |
| Qwen 3.5 35B | 69–71% | 0.73 | 0.43 |
Trust = alpha * Factuality + beta * Consistency + gamma * (1 - PoisonProbability)
Default weights: alpha=0.4, beta=0.35, gamma=0.25
Se aplica un amortiguador no lineal cuando la probabilidad de envenenamiento supera 0.7:
delta = 1 - 0.4 * (P - 0.70) / 0.30 — en P=1.0, la confianza se reduce en un 40%.
| Nivel de Confianza | Rango de Puntuación | Significado |
|---|---|---|
| HIGH | > 0.8 | Confiable |
| MEDIUM | 0.5 - 0.8 | Verificar si es importante |
| LOW | 0.3 - 0.5 | Probablemente tiene problemas |
| VERY_LOW | < 0.3 | No confiar |
[Conference_ICSEA2026/](https://github.com/gpt-laboratory/trustworthyrag/blob/HEAD/Conference_ICSEA2026/).El PDF compilado no se incluye intencionadamente en esta versión; constrúyelo a partir de las fuentes LaTeX.
Autores del artículo de conferencia ICSEA 2026 — Universidad de Tampere (TUNI).
Balkrishna Giri, investigador de máster, Facultad de Tecnologías de la Información y Ciencias de la Comunicación, Universidad de Tampere
Correo electrónico: [email protected], [email protected]
Md Toufique Hasan, investigador doctoral, GPT Lab, Facultad de Tecnologías de la Información y Ciencias de la Comunicación, Universidad de Tampere
Correo electrónico: [email protected]
Coautores — Facultad de Tecnologías de la Información y Ciencias de la Comunicación, Universidad de Tampere:
Desarrollado en GPT Lab, Universidad de Tampere.