RAG - ZERNA
База знаний сотрудников в Telegram: ответ по регламентам со ссылкой на документ и страницу
- Состав проекта
- Telegram-бот, поиск по PDF и библиотека документов
- Материалы
- Telegram-бот ↗Код в закрытом репозитории
Задача
Дать сотрудникам ответ по внутренним регламентам без ручного поиска по PDF. Бот должен показывать источник и сообщать, если ответа в документах нет.
Решение
Разработал Telegram-бота на Python и aiogram 3 с гибридным поиском в Supabase: векторная выдача pgvector и полнотекстовый поиск объединяются через RRF. LLM отбирает фрагменты по вопросу и формирует ответ в строгом JSON; код проверяет ссылки на источники. Администратор загружает новые PDF прямо в Telegram, бот сам разбивает и индексирует их.
Сложности
Отбирать фрагменты, которые отвечают на вопрос, а не просто похожи на него. Различать отсутствие ответа и технический сбой, проверять качество на контрольных вопросах.
Результат
Работающий демо-бот для вымышленной сети кофеен «Точка Зерна»: ответы по регламентам, ссылки на документы и библиотека PDF в Telegram. Для проверки подготовлены контрольные наборы из 60 и 30 вопросов, сохранены трассы запросов и оценки LLM-аудитора.
Возможности
Ответ с источником
Бот указывает документ, раздел и страницу. Если удалось ответить лишь на часть вопроса, показывает, какой информации не хватает.
Честный отказ
Если подходящих фрагментов нет, генерация не запускается и бот говорит, что информации нет.
Библиотека в Telegram
Сотрудник открывает исходные PDF командой /documents; администратор добавляет и удаляет документы в чате.
Измеримое качество
Контрольные наборы вопросов, полная трасса каждого запроса и метрики по этапам поиска и ответа.
Устройство
- Telegram / aiogram 3вопросы, библиотека PDF и администрирование
- Qwen3 Embedding 8Bвекторы вопроса и фрагментов
- Supabasepgvector и полнотекстовый поиск, объединение через RRF
- LLM через Polzaотбор фрагментов и ответ в строгом JSON
- Pythonпроверка ссылок на источники и трасса запроса
Стек
- Python 3.12
- aiogram 3
- Supabase
- PostgreSQL
- pgvector
- Polza.ai
- OpenAI SDK
- Gemini 2.5 Flash Lite
- Qwen3 Embedding
- pypdf
- Docker
Презентация
