
Um Agente de Avaliação para Detectar Desinformação e Envenenamento de Conhecimento em Sistemas de Geração Aumentada por Recuperação.
Um Agente de Avaliação para Detectar Desinformação e Envenenamento de Conhecimento em Sistemas de Geração Aumentada por Recuperação.
Este projeto implementa um Framework RAG Confiável com um Agente de Avaliação integrado que avalia a confiabilidade das respostas RAG usando três componentes de análise complementares:
O sistema produz um Trust Score (0-1) para cada resposta RAG, permitindo a detecção automatizada de ataques de envenenamento de conhecimento e conteúdo alucinado.
Este repositório é o artefato de pesquisa do artigo da conferência ICSEA 2026 de mesmo título. Consulte [Conference_ICSEA2026/](https://github.com/gpt-laboratory/trustworthyrag/blob/HEAD/Conference_ICSEA2026/) para os fontes LaTeX e a seção Paper abaixo.
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
Isso executa todos os experimentos e gera automaticamente os gráficos:
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)
O prompt interativo permite selecionar:
Você também pode fixar o gerador de forma não interativa via variável de ambiente LLM_MODEL
(correspondente a configs/config.yaml e MODEL_DESCRIPTIONS de run_experiment.py):
$env:LLM_MODEL = "mistral-7b-instruct" # or "qwen3.5:35b", "llama3.3:70b"
python run_experiment.py --all
Reproduza o experimento do assistente de codificação segura (40 regras OWASP/CWE) a partir da raiz do projeto.
Ele reutiliza o ExperimentRunner + PoisonedDatasetGenerator existentes e grava os resultados em
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
Linha de base ingênua de confiança total: 85% (TruthfulQA), 85% (FEVER). O FEVER fica abaixo da linha de base — o Índice de Confiança exige calibração específica de domínio para afirmações factuais curtas.
Com intervalos de confiança de 95% (Wilson para proporções, bootstrap de percentil B=20,000 para F1), o resultado principal misto do TruthfulQA é: acurácia 91% (IC 83.8–95.2), recall 40% (IC 19.8–64.3), F1 57.1% (IC 25.0–80.0), Δ=0.225. Os intervalos são amplos porque cada execução tem apenas 15 amostras envenenadas, então os reportamos para evitar superestimar a precisão.
Principais descobertas:
Uma aplicação de engenharia de software do agente: um assistente de codificação segura que recupera de uma base de conhecimento curada de 40 regras extraídas do OWASP Top 10 e CWE (ex.: consultas parametrizadas para injeção de SQL, hash adaptativo de senhas, configuração de TLS). Uma consulta de desenvolvedor recupera orientações que o Agente de Avaliação examina antes de o LLM emitir uma recomendação. Envenenamos 30% das regras com as cinco estratégias como payloads de segurança (ex.: uma diretiva CORRECTION: espúria, um identificador CWE trocado).
Detecção por estratégia (Llama 3.3 70B + all-MiniLM-L6-v2, K=5):
Além do ponto de operação τ=0.5, o Índice de Confiança tem um sinal forte e independente de limiar em três LLMs (execuções agrupadas de estratégia mista):
Trust = alpha * Factuality + beta * Consistency + gamma * (1 - PoisonProbability)
Default weights: alpha=0.4, beta=0.35, gamma=0.25
Um amortecedor não linear é aplicado quando a probabilidade de envenenamento excede 0.7:
delta = 1 - 0.4 * (P - 0.70) / 0.30 — em P=1.0, a confiança é reduzida em 40%.
[Conference_ICSEA2026/](https://github.com/gpt-laboratory/trustworthyrag/blob/HEAD/Conference_ICSEA2026/).O PDF compilado não é incluído intencionalmente nesta versão; compile-o a partir das fontes LaTeX.
Autores do artigo da conferência ICSEA 2026 — Universidade de Tampere (TUNI).
Balkrishna Giri, Pesquisador de Mestrado, Faculdade de Tecnologia da Informação e Ciências da Comunicação, Universidade de Tampere
E-mail: [email protected], [email protected]
Md Toufique Hasan, Pesquisador de Doutorado, GPT Lab, Faculdade de Tecnologia da Informação e Ciências da Comunicação, Universidade de Tampere
E-mail: [email protected]
Coautores — Faculdade de Tecnologia da Informação e Ciências da Comunicação, Universidade de Tampere:
Desenvolvido no GPT Lab, Universidade de Tampere.
| Dataset | Acurácia | Precisão | Recall | F1 Score | vs. Linha de Base |
|---|
| TruthfulQA (misto) | 91% | 100% | 40% | 57.1% | +7% |
| FEVER (execução completa) | 73% | 20% | 26.7% | 22.9% | −12% |
| Estratégia | Acurácia | Precisão | Recall | F1 | Separação |
|---|
| Injeção | 99% | 93.8% | 100% | 96.8% | 0.498 |
| Contradição | 92% | 88.9% | 53.3% | 66.7% | 0.311 |
| Sutil | 88% | 100% | 20.0% | 33.3% | 0.149 |
| Troca de Entidade | 85% | — | 0% | 0% | 0.053 |
| LLM | Embedding | Acurácia | Precisão | Recall | F1 | Confiança Limpa | Separação |
|---|
| 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 |
| Estratégia | Acurácia | Precisão | Recall | F1 | Δ |
|---|
| Injeção de instrução | 97.5% | 85.7% | 100.0% | 92.3% | 0.542 |
| Contradição | 85.0% | — | 0.0% | 0.0% | 0.156 |
| Manipulação sutil | 85.0% | — | 0.0% | 0.0% | 0.066 |
| Troca de entidade | 72.5% | 29.2% | 58.3% | 38.9% | 0.291 |
| Misto | 86.2% | 100.0% | 8.3% | 15.4% | 0.163 |
| LLM | Acurácia (τ=0.5) | ROC-AUC | τ* Ótimo |
|---|
| 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 |
| Nível de Confiança | Faixa de Pontuação | Significado |
|---|
| ALTO | > 0.8 | Confiável |
| MÉDIO | 0.5 - 0.8 | Verifique se for importante |
| BAIXO | 0.3 - 0.5 | Provavelmente tem problemas |
| MUITO BAIXO | < 0.3 | Não confie |