Всем привет! Продолжаю делиться кейсами, где действительно ИИ экономит время, ресурсы, а значит деньги бизнеса. Сегодня в статье разберу ещё один кейс внедрения ИИ-агента в бизнес-процессы, речь пойдёт про онбординг новых сотрудников. Если среди вас есть HR, не стесняйтесь, делитесь, а как у вас проходит адаптация новых сотрудников, какие механики используете?
В статье будем разбирать ИИ-агента для IT-компании, в целом он применим для всего сектора бизнеса. Просто будут отличаться те или иные документы, знания агента.
И так, каждый раз, когда в компанию приходит новый человек, происходит одно и то же: знакомство, погружение в проект, изучение документации и т.д. У него есть линейный руководитель или функциональный руководитель, все вопросы задаются ему, и в целом 3 месяца, чтобы привыкнуть или хотя бы что-то начать соображать.
В больших командах за это отвечают целые отделы HR, создаются порталы и тратятся кучи ресурсов. Оно и понятно: найм дорогой, ошибиться нельзя, удержать и адаптировать нужно. Но есть команды и компании, где этого вовсе нет. Ну и что, скажете вы, нет и нет, пусть учит сам.
А бизнес в это время теряет деньги, точнее недополучает, потому что эффективность такого сотрудника крайне низкая, хотя он может быть и хочет пользу больше дать, но у него на этом этапе много барьеров. По каждому вопросу надо спрашивать, а бывает времени нет у руководителя. Получается, в среднем в компании на эффективность сотрудник выходит после 3 месяцев, а то и после 4–5.
А как сделать личного Buddy (наставника) каждому новому сотруднику при этом не увеличивая штат? Давайте разбираться, как можно это построить, сколько денег потребуется, какие нужны мощности, разберём ограничения и инвестиции. Немного расскажу ещё про эффективность таких ИИ-наставников в конце.
Для статьи я возьму условного сотрудника. Допустим, мы нанимаем в команду проджект-менеджера. Усложним себе задачу тем, что, как правило, проджект будет работать на нескольких проектах, иногда не связанных друг с другом, а значит информации у него очень много: проекты, продукт, стейкхолдеры, разработчики, дизайнеры и прочие важные люди.
Выявляем боли новичка
Боли уже известны в компании всем, начиная от руководителей, заканчивая IT-поддержкой. Зайдёте к HR, они вам расскажут. А если вы хотите сделать действительно крутой ИИ-продукт, а не просто ИИ в бизнес внедрить, то я рекомендую провести интервью с новичками из разных отделов.
Глобально есть 3 категории запросов новичка. Я категоризировал их так:
«Где это вообще?»
Информация существует, но найти её невозможно. Часть в Confluence, часть в Telegram, часть у разработчика где-то в каком-то потоке от полугода назад, часть кто-то написал в email и забыл скинуть в общую папку. Новичок не знает, куда смотреть, и тратит полдня на поиск того, что можно было бы узнать за минуту. И ведь информация точно есть, просто она размазана по разным местам.«А это вообще к мне относится?»
Даже если человек нашёл нужный документ, не всегда понятно, применимо ли оно именно к нему. Например, процесс получения доступа или процесс постановки задач, да что угодно. Документ написан общим языком, а ситуация у каждого конкретная.«С кого вообще начать?»
Есть задачи, которые вообще нельзя решить по документам. «Как подключиться к проекту X?», «Кто у нас в команде отвечает за Y?». Здесь нужен живой человек, и новичок не всегда понимает, кого именно спросить, чтобы не тратить чужое время зря.
Раз мы уж затронули тему с интервью, давайте и гипотезу сформулируем, мы же продукт делаем.
Если мы создадим ИИ-наставника, который собирает всю базу знаний компании в одном месте, помогает и отвечает на все вопросы новичков с учётом роли и должности, обучает внутренней документации, то снизим количество повторяющихся вопросов к HR минимум на 80% и сократим среднее время на онбоардинг.
Как работает ИИ-наставник
Новичок в первый рабочий день в Telegram получает приветственное сообщение от бота, где у него есть мини-инструкции и персональный план адаптации для своей роли.
Каждый пункт чеклиста это не просто текст, а ссылка на материалы: документы, видео, презентации. Материалы могут быть созданы заранее или сгенерированы автоматически через сервисы типа Notebook LM (об этом подробнее ниже).
Telegram бота мы выбрали потому что он бесплатный, не нужно делать UI и у всех он есть. Вы можете выбрать корпоративный чат или любой другой интерфейс, где ночиок будет общаться с ИИ-наставником

А теперь Архитектура
У нас два отдельных процесса:
Пайплайн 1: База занний для ИИ-наставника
Фоновый процесс, обновляет базу знаний. Работает по расписанию или по триггеру (webhook), независимо от того, задаёт новичок вопросы или нет. То есть следит за тем, чтобы у ИИ-агента всегда были актуальные знания.Пайплайн 2: Runtime (сам ИИ–наставник)
Сам агент, который управлет оркестрирует всей системой, то есть отвечает на вопросы, ищет документы и т.дБудем разбирать каждый пайплайн отдельно и компоненты.
Пайплайн 1: База занний для ИИ-наставника
Пайплайн можно построить на фреймворках агентских (LangChain, LlamaIndex и другие) или упростить себе жизнь и собрать на n8n + Docker. Всё очень просто настраивается, нужно 3–4 часа, чтобы всё это протестировать, проверить и прогнать. Напишите мне в Telegram, если нужна консультация.
Компонент: Откуда берём данные
Нужны подключения ко всем системам, где есть информация. Например, это Confluence и HR-система (где-то это 1С). Везде есть API, если есть API, уже хорошо. По источникам данных я разберу Confluence как наиболее часто встречающийся инструмент хранения данных, но описания будут применимы и к другим системам, где есть API.
У Confluence есть API, по которому мы будем получать данные. Confluence отдаёт в HTML, и нам нужно извлекать текст, но надо будет ещё и картинки (схемы), презентации тоже распаршивать.
Для извлечения текста, парсинга документов, таблиц, изображений будем использовать библиотеку dedoc бесплатная, работает отлично. Поддерживает PDF, Word, PowerPoint, HTML и другие форматы.Получается, первый шаг: мы делаем по апи запрос и получаем документы из ��сточников, а после эти документы преврашаем в обычный текст.
Обновление данных: настраиваем webhook в Confluence, который триггерится при изменении страницы. Webhook посылает event подтягиваем только изменённую страницу. Если webhook не работает делаем обновление по таймеру.Компонент: Парсинг и OCR
Dedoc справляется с большинством форматов: PDF, Word, PowerPoint, HTML. Извлекает текст, таблицы, сохраняет структуру документа.
Но есть данные, где текст на изображениях (скриншоты, схемы, графики). Для этого нужен OCR (Optical Character Recognition).
Модели для OCR:
Dolphin Качественный OCR, работает с русским, можно развернуть локально. Бесплатный.
LlamaParse Платный сервис, но точный. Хорошо работает с таблицами, схемами. Через API.
DeepSeek-OCR: https://huggingface.co/deepseek-ai/DeepSeek-OCR
Недавно вышла модель от DeepSeek, можно развернуть локально. Хорошо с русским.
Все это мы делаем, чтобы векторизовать, то есть собрать базу знаний в LLM понимаемый формат.Компонент: Чанкинг (разбиение на куски)
Что такое чанкинг? Чанкинг это деление на куски большого документа, делается это потому что документ нельзя просто целиком превратить в вектор. Слишком размытый вектор, нерелевантные результаты. Нужно разбить на чанки (куски). А векторы нам нужны чтоб ИИ-агент мог праивльно овтечтьа на вопросы наших пользвоателей, то есть искать (быстро) и находить релевантные ответы.Логика чанкинга:
Разбиваем документ по смыслу, а не просто по количеству слов. Используем semantic chunking через LlamaIndex. Модель анализирует текст и определяет границы смысловых блоков.Параметры:
Размер чанка: 300–400 слов
Overlap (перекрытие): 50–80 словПерекрытие критично: если ответ лежит на стыке двух абзацев, мы его найдём, потому что конец одного чанка совпадает с началом следующего.
Почему LlamaIndex? Потому что у них есть готовые инструменты для semantic chunking. Можете чанкинг делать и другими инструментами.
Компонент: Создание метаданных
4.1 Для каждого чанка создаём метаданные:
Автоматические метаданные (берём из документа):id- генерируем уникальный (например,chunk_12345)source- откуда взяли ("confluence")url- ссылка на документtitle- название документаlast_updated- дата обновленияEnrichment (дополнительные метаданные через LLM ) после чанкинга отправляем в LLM модель: «Определи отдел, роль, тему». Модель заполняет метаданные, которые мы не могли определить автоматически.
Пример:
{
"source": "confluence",
"title": "Процесс согласования командировок",
"url": "https://company.atlassian.net/wiki/HR/12345","department": "all",Добавляем эти метаданные к чанку. И храним в векторной БД векторы +метаданные.
"roles": ["all"],
"last_updated": "2025-11-15",
"validity_date": null,
"tags": ["командировки", "согласование"],
"file_type": "confluence_page"
}Компонент: Векторизация
Превращаем текст в векторы (эмбединги). От качества эмбеддингов напрямую зависит качество поиска.
Русский язык морфологически богат. Например: слово «командировка» может быть в шести формах: командировка, командировки, командировке, командировку, командировкой, о командировке. Плюс «командировочный», «командировочные». Эмбединговая модель должна понимать, что все формы семантически близки.
Модель для эмбеддингов:
BAAI/bge-m3 моя рекомендация для production. Размерность 1024, генерирует dense (похоже по смыслу) и sparse (похожие по словам) векторы из одной модели (для гибридного поиска). Один из лучших по бенчмаркам MTEB. Работает локально.Компонент: Векторная база данных (Qdrant)
Настройка векторной БД я используюdistance=Distance.COSINE- косинусное сходство. Для русского критично, игн��рирует длину текста, ищет по смыслу
Супер, с первым пайплайном закончили. У нас получилось, что каждый раз когда обновляется наша база знаний в Confluence или где-то ещё, запускается пайплайн и обновляет запись в Базе знаний агента, либо обогащает, либо стирает предыдущую статью и перезаписывает. Плюсы такого пайплайна в том, что мы не векторизируем каждый раз полностью базу знаний, а обновляем только те куски, которые обновились. Экономия денег и ресурсов.
Пайплайн 2: Сам ИИ-агент наставник
Давайте сначала спроектируем и разработаем этого ИИ-агента. Кстати, такого ИИ-агента можно собрать и на n8n, с условием что некоторые функции и tools будут написаны и развёрнуты в Docker, а n8n мы будем просто вызывать функцию. Я писал выше, если нужна будет консультация, велком ко мне в Telegram.
Что нужно для агента
LLM модель - локальная или облачная. Тут решите сами, если облачную, настоятельно рекомендую сделать маскирование данных.
Векторная база данных - она у нас уже есть из Пайплайна 1, готова с данными.
Чеклисты для профессий - набор данных, которые должен знать сотрудник на этой позиции. У нас уже есть из Пайплайна 1, храним в PostgreSQL.
Telegram-бот - интерфейс для общения.
NotebookLM или другой инструмент - который будет интерактивные обучающие курсы создавать. Если у вас уже есть эти интерактивные курсы, то просто держим ссылки на курсы в таблице по профессиям в БД (не векторная, а реляционная). Опциональный компонент.
LangGraph - фреймворк для сборки этого агента. Ну, если хотите, напишите код весь руками.
Компонент 1: LLM модель
Если облако кажется, тут всё предельно понятно, не будем тратить буквы, не казённые же)) Выбирайте любую которую захотите. Кстати, GigaChat, Alisa AI вполне справляются с задачами, поэтому не вижу смысла ходить в GPT-подобные модели.
Критично: если берёте облако, делайте маскирование данных. Перед отправкой в API заменяйте все имена, фамилии, названия проектов на placeholder. Иначе рискуете утечкой.
Если локально, я буду, кстати, брать модель, которая наделала шума: glm-4.7-flash:latest.
Для ИИ-наставника хватит вполне даже модели на 7B параметров. Как выбрать лучшую модель, рассказал в тут.
Развёртывание локальной LLM модели: Ollama vs vLLM
Хочу с вами вот о чём поговорить, о развёртывании локальных LLM-моделей. Давайте рассмотрим сегодня 2 способа: Ollama и vLLM.
Ollama - способ запустить локально модель без особых усилий в 2–3 команды. Принцип такой, что скачали модель, запустили, работает. Ollama хороша как «быстрый старт» для локального запуска моделей: поставить, скачать, дёрнуть API, показать прототип, дать команде поиграться.
vLLM - это решение для serving LLM. Оптимизировано для высокой нагрузки (много запросов одновременно), поддерживает батчинг, снижает latency.
Что это вообще значит? Если мы при равных условиях на машине с GPU через Ollama запустим модель, то проиграем по производительности, потому что vLLM может утилизировать ресурсы с большей эффективностью. То есть одновременно обрабатывать несколько запросов, делать батчинг (пакетная обработка), эффективно использовать KV-cache.
Ollama обычно упирается в то, что она не выжимает максимум из железа. В реальности это выглядит так: модель отвечает, всё работает, но стоимость одного токена становится выше, а задержки под нагрузкой растут быстрее, чем должны.
Короче, берите в продакшн vLLM. А то часто вижу в проде Ollama и то, что ресурсы уже на пределе. Дальше не идём в техничку, на этом остановились. Договорились, что в проде будем разворачивать с помощью vLLM. И всё, модель готова работать.
Компонент 2: LangGraph (оркестрация агента)
LangGraph это фреймворк от LangChain для сборки агентов. Позволяет строить граф узлов, где каждый узел это шаг, который делает агент: думает, вызывает tools, эскалирует, отвечает. Писал в предыдущих статья как собирать ИИ-агентов с помощью ланграф. Не будем останаливаться.
Компонент 3: Tools (инструменты агента)
Tools это функции, которые агент может вызвать. У нас будет 2 tool.
search_knowledge_base
escalate_to_human
search_knowledge_base – ищет информацию в векторной базе знаний. Это вот часть RAGа.
Как работает:
Получает запрос от агента. Например: «получение доступа к Jira».
Векторизует запрос через BGE-M3 (генерирует dense и sparse векторы).
Делает гибридный поиск в Qdrant:
Dense search (векторный поиск) - ищет семантически похожие чанки
Sparse search (BM25) - ищет по ключевым словам
Объединяет результаты через Reciprocal Rank Fusion
Фильтрует по метаданным (department, role пользователя)
Возвращает топ-20 кандидатов
Multi-query generation если скоры низкие, генерирует 2–3 варианта запроса через LLM и ищет по каждому. Объединяет результаты, убирает дубликаты по ID. (я нижу разберу этот шаг поиска данных чуть детальнее)
Re-ranking: топ-20 кандидатов пропускает через bge-reranker-v2-m3. Получает более точные скоры релевантности. Выбирает топ-5.
Возвращает результат агенту: топ-5 чанков с текстом, метаданными (url, title, source) и скорами.
Multi-query generation что за это такое?.
Например: пользователь пишет короткие запросы: «VPN», «Jira», «командировки». Такие короткие запросы плохо работают с векторным поиском. Нужно расширить.
Multi-query generation генерируем несколько вариантов запроса через LLM.
Исходный запрос: «VPN»
LLM генерирует 3 варианта:
«Как настроить VPN для удалённого доступа к корпоративной сети»
«Процесс получения VPN-ключа для подключения к серверам компании»
«Инструкция по установке VPN-клиента на рабочий компьютер»
Зачем multi-query? Потому что один короткий запрос может пропустить нужный документ. А если ищем по трём вариантам, шансы найти релевантное выше. Потом делаем поиск по каждому варианту, объединяем результаты, убираем дубликаты по ID, делаем re-ranking.
Давайте в догонку еще разберем и гибридный поиск:
Dense search (векторный) - отлично находит семантически похожие. «Как согласовать командировку» – «процесс одобрения поездки». Но плох с точными терминами. «Что такое OKR?» может вернуть не про OKR.
Sparse search (BM25) - keyword-поиск. Плох для семантики, идеален для специфических терминов.
Hybrid search - объединяем оба. Qdrant поддерживает через sparse_vectors. А наша эмбединговая модель BGE-M3 умеет генерирвоатьdense и sparse из одной модели.
results = client.query_points(
collection_name="knowledge_base",
prefetch=[
Prefetch(query=dense_vector, using="dense", limit=20),
Prefetch(query=sparse_vector, using="sparse", limit=20)
],
query=FusionQuery(fusion=Fusion.RRF),
limit=10
)fusion=Fusion.RRF - Reciprocal Rank Fusion. Взвешивает результаты из двух поисков.
И что вот у нас один только инструмент (tools) ИИ-агента (наставника) ищет информацию и ищет он максимально тщательно, чтоб ИИ агент получил релевантный контекст а наш пользователь ответ на свой вопрос. Все эти наши улучшения влияют только на то, насколько подробный и правильный ответ получит пользователь. Ни LLM модель влияет, а именно контекст.
Если и этого вам в процессе разработки не хватило, то мы доавбляем еще и Re-ranking (перерранжирование).
Re-ranking (перерранжирование)
После гибридного поиска у нас есть топ-20 кандидатов. Но они отсортированы по скору из Qdrant, который не всегда точен.
Re-ranker берёт исходный запрос и каждого кандидата (тут имею ввижду каждый найденный чанк-ответ), выставляет более точный скор. После перенажирвоания всех найденых ответо оставлем топ 10 самых релевантных по скору и отдаем уже LLM модели.
Она "покумекает" сама с собой если ей хватило данных отправит ответ пользвоателю, если не хватило еще раз запустит поиск уже переформулировал запрос.
А как она запустит второй раз перепоиск если мы не самую умную модель LLM взяли?
К нам на помощь приходит MCP think tool
MCP think tool- инструмент для reasoning (рассуждения). Агент вызывает tool think, чтобы записывать свои мысли перед ответом. Это еще один tools для нашего ИИ-агента.
Как работает:
Агент получает вопрос новичка. Перед тем как вызвать search_knowledge_base, агент вызывает think_tool
Примерно так
{
"tool": "think",
"thought": "Пользователь спрашивает про доступ к Jira. Мне нужно найти информацию в базе знаний про процесс получения доступа. Вызову search_knowledge_base с query 'получение доступа к Jira'."
}Этот блок рассуждений логируется. Мы можем смотреть, правильно ли модель рассуждает, понимает ли она контекст. Это помогает отлаживать агента.
Без reasoning модель может сразу генерировать ответ, не подумав. С think tool модель сначала рассуждает, потом действует. Это повышает качество ответов, особенно для сложных вопросов.
И так, дорогие читатели, мы с вами построили 2 пайплайна, развернули локально модель. Разработали стратегибю поиска данны по векторной БД, настроили нашу LLM модель. Получается что:
1. База знаний ИИ-агента собрана
2. ИИ-агент(наставник) собран. То есть у него есть досутп к базе знаний и есть инструменты, которые помогают ему работать с этими данными.
Все на этом можем уже идти тестировать на ползователях. Но для начала подключим тг бот.
Что не разобрали
Настройка guardrails под корпоративный контекст
A/B-тестирование и rollout
Стоимость разработки и сроки
Если темы интересны, напишите в комментариях или личку в Telegram.
Спасибо, что прочитали. ❤️
Telegram-канал: «AI-заметки» - рассказываю про ИИ, лайфхаки, полезные инструменты. Каждую неделю дайджест с самыми важными новостями в мире ИИ без инфошума, только всё самое важное.
