🚀 Система RAG-бота

Документация по функциям и выполненным изменениям

📑 Содержание

📋 Обзор системы

Система представляет собой корпоративный RAG-бот (Retrieval-Augmented Generation) для ответов на вопросы сотрудников на основе внутренней базы знаний. Система работает полностью локально без внешних API и использует семантический поиск для точных ответов.

Технологический стек

✨ Основные функции

🎓 Обучение на базе знаний

Загрузка Q&A данных из JSON файлов, создание векторных представлений и сохранение в ChromaDB

🔍 Семантический поиск

Поиск релевантных ответов по смыслу запроса, а не только по ключевым словам

📚 Каталог знаний

Автоматическое создание каталога тем, ключевых слов и метаданных из документов

🤖 Обработка запросов

Многоэтапная обработка: исправление опечаток, классификация намерений, расширение запросов

💬 Chit-Chat обработка

Определение и обработка разговорных запросов, не требующих поиска в базе знаний

📊 Логирование и аналитика

Полное логирование запросов, ответов и метрик производительности

🔗 Нормативные ссылки

Поддержка ссылок на нормативные документы, ГОСТы и стандарты

⚡ Предвычисленные эмбеддинги

Использование предвычисленных векторных представлений для ускорения обучения

🔄 Pipeline обучения (Pipeline 2)

1 Загрузка новых данных

Загрузка JSON файлов из директорий data/, data/normative/, data/corporate/, data/qa/. Поддержка рекурсивного поиска в подпапках.

1.5 Создание каталога знаний

Извлечение тем, ключевых слов и метаданных из документов. Создание структурированного каталога для быстрого поиска и навигации по знаниям.

2 Парсинг и извлечение текста

Анализ структуры данных, валидация формата, извлечение вопросов, ответов, тегов и метаданных.

3 Чанкинг (разбиение на фрагменты)

Для Q&A данных чанкинг обычно не требуется, так как каждая запись уже является законченной единицей информации.

4 Создание документов LangChain

Преобразование данных в формат Document с расширенными метаданными. Поддержка форматов: qa_enhanced, qa_combined, question_only, answer_only.

5 Векторизация чанков

Создание векторных представлений текста с помощью HuggingFace моделей. Поддержка предвычисленных эмбеддингов для ускорения процесса.

6 Обновление векторной базы данных

Сохранение документов в ChromaDB. Режимы работы: recreate, append, update.

7 Валидация и тестирование

Тестовый семантический поиск для проверки качества обучения и корректности работы базы данных.

🔍 Pipeline обработки запросов (Pipeline 1)

Этапы обработки

Этап Модуль Описание
0. Маршрутизация query_type_classifier Определение типа запроса: qa, hybrid, dialogue, reasoning, transformation, action
1. Ранняя chit-chat проверка intent_classifier + chit_chat_handler Быстрая проверка на разговорные запросы
2. Spell Correction spell_corrector Исправление опечаток в запросе
3. Intent Classification intent_classifier Определение намерения: question, action, reference, chit_chat, general
4. Query Rewriting query_rewriter Упрощение конструкций по правилам
5. Query Expansion query_expander Добавление синонимов и доменных терминов
6. Context Enrichment context_manager Добавление контекста из истории диалога
7. Поздняя chit-chat проверка chit_chat_handler Повторная проверка после всех трансформаций
8. Knowledge Presence Check knowledge_presence_checker Проверка наличия знаний по запросу
9. Vector Search multi_vector_search Семантический поиск в векторной БД
10. Deduplication & Scoring query_handler Удаление дубликатов и ранжирование результатов
11. Response Summarization response_summarizer Формирование итогового ответа
12. Hybrid LLM Interpretation chat_llm_handler Обработка через LLM для сложных случаев

📝 Выполненные изменения

🎯 Улучшения обучения (train_bot.py)

1. Подробный вывод процесса обучения

2. Вынесение настроек в отдельный блок

3. Поддержка каталога знаний

4. Предвычисленные эмбеддинги

5. Режимы работы с базой данных

6. Расширенный формат документов

7. Загрузка из подпапок

8. Обработка нормативных ссылок

9. Расширенные метаданные

10. Улучшенная валидация

11. Интеграция с конфигурацией

12. Улучшенная обработка ошибок

🧩 Модули системы

Core модули

Модуль Назначение
train_bot.py Обучение бота на основе базы знаний Q&A
simple_bot.py Диалоговый режим в консоли
telegram_bot.py Telegram бот интерфейс
query_handler.py Главный обработчик запросов, маршрутизация
query_processor.py Многоэтапная обработка запросов
query_type_classifier.py Классификация типов запросов
intent_classifier.py Определение намерений пользователя
spell_corrector.py Исправление опечаток
query_rewriter.py Переписывание запросов
query_expander.py Расширение запросов синонимами
context_manager.py Управление контекстом диалога
chit_chat_handler.py Обработка разговорных запросов
knowledge_presence_checker.py Проверка наличия знаний по запросу
knowledge_catalog.py Создание и управление каталогом знаний
knowledge_tracker.py Отслеживание использования знаний
multi_vector_search.py Многоуровневый векторный поиск
response_summarizer.py Формирование итогового ответа
chat_llm_handler.py Обработка через LLM
similar_questions_finder.py Поиск похожих вопросов
debug_bot.py Диагностика векторной базы
test_bot.py Тестирование системы

Config модули

Модуль Назначение
settings.py Базовые настройки путей и директорий
embedding_config.py Настройки моделей эмбеддингов
knowledge_config.py Настройки каталога знаний
query_processing_config.py Настройки обработки запросов
search_config.py Настройки поиска