Skip to content

Latest commit

 

History

8 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RAG Knowledge Assistant

Описание проекта

RAG Knowledge Assistant — это система вопрос-ответа на базе фреймворка LlamaIndex, которая предоставляет точные ответы исключительно из заданной базы знаний. Система включает полный пайплайн: загрузку данных, семантический поиск, генерацию ответов и автоматическую оценку качества через метрики Ragas. Результаты сохраняются в Google Sheets для удобного анализа.

Основные возможности

  • Загрузка вопросов из Excel-файлов
  • Параллельная обработка запросов через ThreadPoolExecutor
  • Строгий контроль ответов (запрет на выход за пределы базы знаний)
  • Автоматическая оценка качества по метрикам:
    • Factual Correctness (фактическая точность)
    • Noise Sensitivity (устойчивость к шуму)
  • Интеграция с Google Sheets API для сохранения результатов
  • Поддержка кастомного чанкинга базы знаний

Требования

  • Python: 3.10 или выше

  • Библиотеки:

    • llama-index — основной фреймворк для RAG-пайплайна
    • ragas — для оценки качества ответов
    • langchain-openai — интеграция с OpenAI API
    • gspread — работа с Google Sheets API
    • pandas — обработка Excel-файлов
    • python-dotenv — управление переменными окружения
  • API и сервисы:

    • OpenAI API Key
    • Google Sheets API (сервисный аккаунт)
    • Доступ к Google Sheet с результатами
  • Файл .env:

    OPENAI_API_KEY=your_openai_api_key
    LLAMA_API_KEY=your_llama_cloud_api_key
    

Установка

  1. Клонируйте репозиторий:

    git clone https://github.com/your-repo/rag-assistant.git
    cd rag-assistant
  2. Установите зависимости:

    pip install -r requirements.txt
  3. Настройте доступ к Google Sheets:

    • Создайте сервисный аккаунт в Google Cloud Console
    • Скачайте JSON-ключ и поместите в папку creds/
    • Предоставьте доступ к таблице для email сервисного аккаунта
  4. Подготовьте данные:

    • Разместите файл с вопросами в creds/assistant_file_updated_questions.xlsx
    • Убедитесь, что база знаний в формате JSON доступна по пути creds/db.json
  5. Запустите систему:

    python main.py

Схема работы

  1. Загрузка данных:

    • Вопросы загружаются из Excel-файла
    • База знаний индексируется через LlamaCloud
  2. Обработка запросов:

    • Параллельный семантический поиск по базе знаний
    • Генерация ответов с контролем границ знаний
    • Формирование датасета с вопросами, ответами и контекстом
  3. Оценка качества:

    • Вычисление метрик Factual Correctness и Noise Sensitivity
    • Логирование результатов оценки
  4. Сохранение результатов:

    • Экспорт в Google Sheets (вопрос, ответ, чанки, метрики)
    • Формирование отдельного листа для каждого запуска

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

rag-assistant/
├── main.py              # Основной пайплайн обработки
├── llama.py             # Логика работы с LlamaIndex
├── google_sheet.py      # Интеграция с Google Sheets API
├── creds/               # Ключи и данные
│   ├── db.json          # База знаний
│   ├── questions.xlsx   # Тестовые вопросы
│   └── gsheets_key.json # Ключ Google API
└── requirements.txt     # Зависимости

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

Система настраивается через константы в main.py:

CONFIG = {
    "FILE_PATH": "creds/assistant_file_updated_questions.xlsx",
    "SHEET_NAME": 0,
    "QUESTION_COL": 2,
    "GROUND_TRUTH_COL": 3,
    "LLM_MODEL": "gpt-4o-mini",
    "MAX_WORKERS": 6,
    "TIMEOUT": 290,
    "RETRY_DELAY": 30,
    "REQUEST_DELAY": 1
}

Параметры:

  • MAX_WORKERS — количество потоков для параллельной обработки
  • LLM_MODEL — модель OpenAI для генерации ответов
  • TIMEOUT — таймаут запросов к API (сек)
  • RETRY_DELAY — задержка при ошибках API (сек)

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

  1. Подготовьте данные:

    • В Excel-файле укажите вопросы в колонке A, ground truth — в колонке B
  2. Запустите обработку:

    python main.py
  3. Просмотр результатов:

    • Откройте Google Sheet с результатами
    • Каждый запуск создает новый лист с метками времени
    • Анализируйте метрики качества в колонке "Metrics"
  4. Пример вывода:

    Вопрос: Какие требования к ПО системы?
    Ответ: Система требует Python 3.10+, библиотеки llama-index, ragas и gspread
    Метрики: {"factual_correctness": 0.95, "noise_sensitivity": 0.87}
    

Ограничения и планы

  • Текущие ограничения:

    • Поддержка только текстовых вопросов
    • Фиксированный формат базы знаний
    • Ограниченный набор метрик оценки
  • Планы развития:

    • Добавление веб-интерфейса для загрузки данных
    • Поддержка мультимодальных запросов
    • Расширение набора метрик оценки качества
    • Внедрение механизма обратной связи от пользователей

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages