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 APIgspread— работа с Google Sheets APIpandas— обработка 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
-
Клонируйте репозиторий:
git clone https://github.com/your-repo/rag-assistant.git cd rag-assistant -
Установите зависимости:
pip install -r requirements.txt
-
Настройте доступ к Google Sheets:
- Создайте сервисный аккаунт в Google Cloud Console
- Скачайте JSON-ключ и поместите в папку
creds/ - Предоставьте доступ к таблице для email сервисного аккаунта
-
Подготовьте данные:
- Разместите файл с вопросами в
creds/assistant_file_updated_questions.xlsx - Убедитесь, что база знаний в формате JSON доступна по пути
creds/db.json
- Разместите файл с вопросами в
-
Запустите систему:
python main.py
-
Загрузка данных:
- Вопросы загружаются из Excel-файла
- База знаний индексируется через LlamaCloud
-
Обработка запросов:
- Параллельный семантический поиск по базе знаний
- Генерация ответов с контролем границ знаний
- Формирование датасета с вопросами, ответами и контекстом
-
Оценка качества:
- Вычисление метрик Factual Correctness и Noise Sensitivity
- Логирование результатов оценки
-
Сохранение результатов:
- Экспорт в 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 (сек)
-
Подготовьте данные:
- В Excel-файле укажите вопросы в колонке A, ground truth — в колонке B
-
Запустите обработку:
python main.py
-
Просмотр результатов:
- Откройте Google Sheet с результатами
- Каждый запуск создает новый лист с метками времени
- Анализируйте метрики качества в колонке "Metrics"
-
Пример вывода:
Вопрос: Какие требования к ПО системы? Ответ: Система требует Python 3.10+, библиотеки llama-index, ragas и gspread Метрики: {"factual_correctness": 0.95, "noise_sensitivity": 0.87}
-
Текущие ограничения:
- Поддержка только текстовых вопросов
- Фиксированный формат базы знаний
- Ограниченный набор метрик оценки
-
Планы развития:
- Добавление веб-интерфейса для загрузки данных
- Поддержка мультимодальных запросов
- Расширение набора метрик оценки качества
- Внедрение механизма обратной связи от пользователей