Skip to content

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

Repository files navigation

RAG Benchmark

Бенчмарк-система для сравнения конфигураций RAG-пайплайна на датасете vectara/open_ragbench. Оценивается влияние стратегии чанкинга, размера чанка, режима поиска и top-k на качество retrieval и генерации.

Архитектура

HuggingFace Dataset
        │
        ▼
   dataset.py          ← загрузка и подготовка корпуса (100 запросов + документы)
        │
        ▼
   indexing.py          ← индексация в Qdrant (dense / hybrid с BM25)
        │
        ▼
   pipeline.py          ← выполнение RAG-запроса (retrieval → LLM → ответ)
        │
        ▼
   evaluation.py        ← метрики retrieval (Hit Rate, MRR, nDCG, Precision)
        │
        ▼
   ragas_eval.py        ← оценка генерации (Factual Correctness, LLM-as-a-Judge)
        │
        ▼
   generate_report.py   ← PDF-отчёт с таблицами и графиками

Стек

Компонент Технология
Векторная БД Qdrant (HNSW, гибридный поиск с BM25)
Эмбеддинги intfloat/multilingual-e5-small (384-dim)
LLM Qwen3.5-4B-UD-Q4_K_XL через llama.cpp
RAG-фреймворк LlamaIndex
Оценка генерации RAGAS (Factual Correctness)

Эксперименты

10 конфигураций варьируют параметры:

  • Метод чанкинга: token / sentence
  • Размер чанка: 256 / 512 / 1024
  • Режим поиска: dense / hybrid
  • Top-k: 3 / 5 / 10

Конфигурации задаются в configs/experiments.yaml.

Быстрый старт

Требования

  • Python >= 3.11
  • Docker и Docker Compose
  • NVIDIA GPU (для llama.cpp)

Установка

python -m venv .venv
source .venv/bin/activate
pip install -e .

Запуск сервисов

# Поднять llama.cpp (LLM) и Qdrant (векторная БД)
docker compose up -d

Скачать модель в models/:

# ~2.7 ГБ
wget -P models/ https://huggingface.co/unsloth/Qwen3.5-4B-UD-Q4_K_XL-GGUF/resolve/main/Qwen3.5-4B-UD-Q4_K_XL.gguf

Запуск экспериментов

python scripts/run_all.py

Результаты сохраняются в results/ в формате JSON.

Оценка RAGAS

Запускается отдельно после экспериментов (требует OpenAI API-ключ в .env):

python -c "from src.ragas_eval import run_ragas_eval; ..."

Генерация отчёта

python generate_report.py

PDF-отчёт сохраняется в results/report.pdf.

Структура проекта

├── configs/
│   └── experiments.yaml       # конфигурации экспериментов
├── data/
│   └── dataset.json           # подготовленный датасет
├── models/
│   └── *.gguf                 # файлы моделей (не в git)
├── notebooks/
│   └── analysis.ipynb         # анализ результатов
├── results/                   # результаты экспериментов, графики, отчёт
├── scripts/
│   └── run_all.py             # точка входа
├── src/
│   ├── dataset.py             # загрузка данных
│   ├── indexing.py            # индексация в Qdrant
│   ├── pipeline.py            # RAG-пайплайн
│   ├── evaluation.py          # метрики retrieval
│   ├── ragas_eval.py          # метрики генерации
│   └── utils.py               # конфигурация моделей
├── docker-compose.yml
└── pyproject.toml

Основные результаты

  • Гибридный поиск (dense + BM25) превосходит dense на ~15% по section MRR
  • Оптимальный размер чанка — 512 токенов (баланс retrieval/generation)
  • Sentence-чанкинг улучшает качество генерации для малых размеров чанков

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages