Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Skorp321/llm_jage

Repository files navigation

RAG Evaluation Toolkit

Комплексный инструментарий для оценки систем Retrieval-Augmented Generation (RAG) с использованием синтетической генерации вопросов-ответов и LLM-as-a-judge оценки.

Описание

Этот пакет предоставляет полный pipeline для оценки качества RAG систем:

  1. Загрузка базы знаний - Поддержка DOCX файлов и HuggingFace датасетов
  2. Генерация синтетических QA пар - Использование LLM для создания вопросов и ответов
  3. Оценка качества QA пар - Три агента критики: groundedness, relevance, standalone
  4. Построение векторного индекса - FAISS с различными embedding моделями
  5. RAG система - Полный pipeline поиска и генерации ответов
  6. Оценка качества ответов - LLM-as-a-judge с детальной обратной связью

Установка

Требования

  • Python 3.8+
  • CUDA (опционально, для GPU ускорения)

Установка пакета

# Клонирование репозитория
git clone <repository-url>
cd rag

# Установка зависимостей
pip install -r requirements.txt

# Установка пакета в режиме разработки
pip install -e .

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

1. Полный pipeline

# Запуск полного pipeline оценки
rag-eval run --kb-docx tk_rf.docx --n-gen 20 --chunk-size 2000

2. Пошаговое выполнение

# Шаг 1: Загрузка и обработка документов
rag-eval load-data --kb-docx tk_rf.docx --chunk-size 2000

# Шаг 2: Генерация QA пар
rag-eval generate-qa --documents ./data/processed_docs_chunk2000.pkl --n-gen 20

# Шаг 3: Оценка QA пар
rag-eval critique --qa-file generated_questions.csv

# Шаг 4: Построение векторного индекса
rag-eval build-index --documents ./data/processed_docs_chunk2000.pkl --chunk-size 2000

# Шаг 5: RAG оценка
rag-eval evaluate-rag --documents ./data/processed_docs_chunk2000.pkl --qa-eval-file generated_questions_with_eval.csv

# Шаг 6: Оценка ответов
rag-eval evaluate-answers --rag-results ./output/rag_results_chunk2000.json

Конфигурация

Переменные окружения

export OPENAI_API_KEY="your-openai-api-key"
export HUGGINGFACE_API_KEY="your-huggingface-api-key"

Файл конфигурации

Создайте config.yaml:

# API конфигурация
api_base: "https://your-api-endpoint.com/v1"
api_key: "your-api-key"

# Модели
qa_generator:
  name: "qwen3:32b"
  temperature: 0.1

reader:
  name: "zephyr-7b-beta"
  temperature: 0.1

judge:
  model: "gpt-4-1106-preview"
  temperature: 0.0

# RAG параметры
rag:
  num_retrieved_docs: 30
  num_docs_final: 7
  use_reranking: false

# Оценка
evaluation:
  min_groundedness_score: 4
  min_relevance_score: 4
  min_standalone_score: 4

Использование CLI

Основные команды

# Справка
rag-eval --help

# Загрузка данных
rag-eval load-data --help

# Генерация QA пар
rag-eval generate-qa --help

# Оценка QA пар
rag-eval critique --help

# Построение индекса
rag-eval build-index --help

# RAG оценка
rag-eval evaluate-rag --help

# Оценка ответов
rag-eval evaluate-answers --help

# Полный pipeline
rag-eval run --help

Примеры использования

# Оценка с пользовательскими параметрами
rag-eval run \
  --kb-docx documents.docx \
  --n-gen 50 \
  --chunk-size 1500 \
  --output-dir ./results

# Использование конфигурационного файла
rag-eval run \
  --config config.yaml \
  --kb-docx documents.docx \
  --verbose

# Генерация большого количества QA пар
rag-eval generate-qa \
  --documents processed_docs.pkl \
  --n-gen 100 \
  --output-file large_qa_dataset.csv

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

rag/
├── rag_eval/
│   ├── __init__.py
│   ├── cli.py              # CLI интерфейс
│   ├── config.py           # Конфигурация
│   ├── data_loader.py      # Загрузка данных
│   ├── qa_generator.py     # Генерация QA пар
│   ├── critique_agents.py  # Агенты критики
│   ├── vector_store.py     # Векторное хранилище
│   ├── rag_system.py       # RAG система
│   ├── evaluator.py        # Оценка ответов
│   └── utils.py            # Утилиты
├── requirements.txt
├── setup.py
└── README.md

Выходные файлы

QA генерация

  • generated_questions.csv - Сгенерированные QA пары
  • generated_questions_with_eval.csv - QA пары с оценками

RAG оценка

  • rag_results_chunk{size}.json - Результаты RAG тестов
  • rag_results_chunk{size}_evaluated.json - Результаты с оценками

Векторные индексы

  • ./data/indexes/ - FAISS индексы для различных конфигураций

Метрики оценки

QA качество

  • Groundedness (1-5): Можно ли ответить на вопрос из контекста
  • Relevance (1-5): Полезен ли вопрос для пользователей
  • Standalone (1-5): Понятен ли вопрос без контекста

RAG качество

  • Answer Correctness (1-5): Точность и правильность ответов
  • Retrieval Coverage: Процент вопросов с найденными документами
  • Average Document Length: Средняя длина найденных документов

Адаптация для других доменов

Изменение промптов

Отредактируйте промпты в rag_eval/config.py:

QA_GENERATION_PROMPT = """
Ваш промпт для генерации QA пар...
"""

RELEVANCE_PROMPT = """
Ваш промпт для оценки релевантности...
"""

Новые embedding модели

# В config.py
DEFAULT_EMBEDDINGS = EmbeddingConfig(
    model_name="your-embedding-model",
    device="cuda"
)

Пользовательские LLM

# В config.py
DEFAULT_QA_GENERATOR = ModelConfig(
    name="your-model",
    api_base="your-api-endpoint",
    api_key="your-api-key"
)

Производительность

Рекомендации по железу

  • CPU: Минимум 8 ядер для обработки документов
  • RAM: 16GB+ для больших баз знаний
  • GPU: CUDA-совместимая карта для embedding моделей
  • Storage: SSD для быстрого доступа к индексам

Оптимизация

# Использование CPU для embedding
rag-eval build-index --device cpu

# Уменьшение размера чанков
rag-eval run --chunk-size 1000

# Пакетная обработка
rag-eval generate-qa --n-gen 10  # Начните с малого количества

Устранение неполадок

Частые проблемы

  1. Ошибки API

    # Проверьте API ключи
    export OPENAI_API_KEY="your-key"
    export HUGGINGFACE_API_KEY="your-key"
  2. Нехватка памяти

    # Уменьшите размер чанков
    rag-eval run --chunk-size 1000
  3. Медленная работа

    # Используйте GPU
    rag-eval build-index --device cuda

Логирование

# Включите подробное логирование
rag-eval run --verbose --log-file rag_eval.log

# Просмотр логов
tail -f rag_eval.log

Вклад в проект

  1. Форкните репозиторий
  2. Создайте ветку для новой функции
  3. Внесите изменения
  4. Добавьте тесты
  5. Отправьте pull request

Лицензия

MIT License

Поддержка

Для вопросов и проблем создавайте issues в репозитории.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published