
Оценочный агент для обнаружения дезинформации и отравления знаний в системах генерации с дополненной выборкой.
Агент оценки для обнаружения дезинформации и отравления знаний в системах генерации с дополненной выборкой (RAG).
В этом проекте реализован фреймворк Trustworthy RAG со встроенным агентом оценки (Evaluation Agent), который оценивает надёжность ответов RAG с помощью трёх взаимодополняющих компонентов анализа:
Система формирует оценку доверия (Trust Score) (0-1) для каждого ответа RAG, что позволяет автоматически обнаруживать атаки отравления знаний и галлюцинированный контент.
Этот репозиторий является исследовательским артефактом конференционной статьи ICSEA 2026 с тем же названием. Исходные файлы LaTeX см. в [Conference_ICSEA2026/](https://github.com/gpt-laboratory/trustworthyrag/blob/HEAD/Conference_ICSEA2026/), а также в разделе Статья ниже.
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
Эта команда запускает все эксперименты и автоматически генерирует графики:
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)
Интерактивный запрос позволяет выбрать:
Также можно зафиксировать генератор в неинтерактивном режиме через переменную окружения LLM_MODEL
(соответствует configs/config.yaml и MODEL_DESCRIPTIONS из run_experiment.py):
$env:LLM_MODEL = "mistral-7b-instruct" # or "qwen3.5:35b", "llama3.3:70b"
python run_experiment.py --all
Воспроизведите эксперимент с ассистентом безопасного кодинга (40 правил OWASP/CWE) из корня проекта.
Он переиспользует существующие ExperimentRunner + PoisonedDatasetGenerator и записывает результаты в
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
Наивная базовая линия «всегда доверять»: 85% (TruthfulQA), 85% (FEVER). FEVER показывает результат ниже базовой линии — индекс доверия требует калибровки под конкретный домен для коротких фактических утверждений.
С 95% доверительными интервалами (Уилсон для долей; перцентильный бутстрэп, B=20,000, для F1) основной результат TruthfulQA со смешанным отравлением таков: точность 91% (ДИ 83.8–95.2), полнота 40% (ДИ 19.8–64.3), F1 57.1% (ДИ 25.0–80.0), Δ=0.225. Интервалы широкие, поскольку в каждом прогоне всего 15 отравленных образцов; мы приводим их, чтобы не завышать точность оценок.
Ключевые выводы:
Программно-инженерное применение агента: ассистент безопасного кодинга, который выполняет поиск по курируемой базе знаний из 40 правил, взятых из OWASP Top 10 и CWE (например, параметризованные запросы против SQL-инъекций, адаптивное хеширование паролей, настройка TLS). По запросу разработчика извлекаются рекомендации, которые агент оценки проверяет до того, как LLM сформирует свой ответ. Мы отравляем 30% правил пятью стратегиями в качестве security-пейлоадов (например, поддельная директива CORRECTION: или подменённый идентификатор CWE).
Обнаружение по стратегиям (Llama 3.3 70B + all-MiniLM-L6-v2, K=5):
Помимо рабочей точки τ=0.5, индекс доверия демонстрирует сильный, не зависящий от порога сигнал для трёх LLM (объединённые прогоны со смешанными стратегиями):
Trust = alpha * Factuality + beta * Consistency + gamma * (1 - PoisonProbability)
Default weights: alpha=0.4, beta=0.35, gamma=0.25
При вероятности отравления выше 0.7 применяется нелинейный демпфер: delta = 1 - 0.4 * (P - 0.70) / 0.30 — при P=1.0 доверие снижается на 40%.
[Conference_ICSEA2026/](https://github.com/gpt-laboratory/trustworthyrag/blob/HEAD/Conference_ICSEA2026/).Скомпилированный PDF намеренно не включён в этот релиз; соберите его из исходных файлов LaTeX.
Авторы конференционной статьи ICSEA 2026 — Университет Тампере (TUNI).
Balkrishna Giri, исследователь (магистр наук), факультет информационных технологий и коммуникационных наук, Университет Тампере
Email: [email protected], [email protected]
Md Toufique Hasan, докторант, GPT Lab, факультет информационных технологий и коммуникационных наук, Университет Тампере
Email: [email protected]
Соавторы — факультет информационных технологий и коммуникационных наук, Университет Тампере:
Разработано в GPT Lab, Университет Тампере.
| Набор данных | Точность | Прецизионность | Полнота | F1-мера | Δ к базовой линии |
|---|
| TruthfulQA (смеш.) | 91% | 100% | 40% | 57.1% | +7% |
| FEVER (полный прогон) | 73% | 20% | 26.7% | 22.9% | −12% |
| Стратегия | Точность | Прецизионность | Полнота | F1 | Разделение |
|---|
| Инъекция | 99% | 93.8% | 100% | 96.8% | 0.498 |
| Противоречие | 92% | 88.9% | 53.3% | 66.7% | 0.311 |
| Тонкая манипуляция | 88% | 100% | 20.0% | 33.3% | 0.149 |
| Подмена сущностей | 85% | — | 0% | 0% | 0.053 |
| LLM | Эмбеддинги | Точность | Прецизионность | Полнота | F1 | Trust (чист.) | Разделение |
|---|
| 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 |
| Стратегия | Точность | Прецизионность | Полнота | F1 | Δ |
|---|
| Инъекция инструкций | 97.5% | 85.7% | 100.0% | 92.3% | 0.542 |
| Противоречие | 85.0% | — | 0.0% | 0.0% | 0.156 |
| Тонкая манипуляция | 85.0% | — | 0.0% | 0.0% | 0.066 |
| Подмена сущностей | 72.5% | 29.2% | 58.3% | 38.9% | 0.291 |
| Смешанная | 86.2% | 100.0% | 8.3% | 15.4% | 0.163 |
| LLM | Точность (τ=0.5) | ROC-AUC | Оптимальный τ* |
|---|
| 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 |
| Уровень доверия | Диапазон оценки | Значение |
|---|
| HIGH | > 0.8 | Надёжный |
| MEDIUM | 0.5 - 0.8 | Проверить, если важно |
| LOW | 0.3 - 0.5 | Вероятно, есть проблемы |
| VERY_LOW | < 0.3 | Не доверять |