RAG для аналитика: от парсера вакансий до голосового бота

Продолжение. В первой части я рассказала, как собрала n8n-оркестратор, который парсит вакансии и раскладывает их по Google Таблице. Это был мой первый AI-агент, и меня зацепило. Теперь — о том, как я доросла от парсера до голосового ассистента с базой знаний, и почему начинаю говорить «наш проект» вместо «мой».

Зачем мне это. Оркестратор закрывал утилитарную задачу, но мне захотелось инструмент, который не просто разбирает текст, а отвечает на вопросы по знаниям. Личный мотив: сын спрашивает меня про динозавров, а я не эксперт 🫣Прагматичный: рынок сейчас требует RAG, векторные БД и AI-агентов, а из статей это понимается плохо — я быстрее учусь, когда собираю под свою боль 🦖🦕

Что получилось. Голосовой RAG-ассистент. Пайплайн: база знаний режется на чанки, эмбеддинги через YandexGPT API, векторы хранятся в Qdrant. Вопрос приходит голосом — SpeechKit распознаёт, ассистент ищет релевантный контекст, генерирует ответ строго по найденным кускам и озвучивает его. Если в базе ничего не нашлось — честно говорит «не знаю», вместо того чтобы выдумывать. Сверху — две роли ответа: детская и взрослая, один вопрос но разный тон и глубина; детский сценарий включается кодовой фразой «Динозавры, вперёд!». Демо публичное, код на GitHub, и там прямо написано, кто что делал.

Как я училась. Что «модель умная» не равно «модель надёжная». Без retrieval она уверенно выдумывает; с retrieval отвечает по фактам, но надо настраивать: размер чанка, перекрытие, порог релевантности, фолбэк. Что качество измеряется метриками, а не ощущениями: на реальных вопросах у меня Accuracy@1 — 50%, Accuracy@3 — 70%, не идеально, зато есть что улучшать. И что API LLM — такая же интеграция, как любая другая: контракты, обработка ошибок, ретраи — тут неожиданно пригодился мой опыт системного аналитика.

Как мы работали. В первой части я писала: AI-ассистент был моим парным программистом. С RAG это превратилось в настоящую команду: я — продуктовый владелец и системный аналитик, ассистент — разработчик. Я придумала роли и логику переключения, описала контракты API и сценарии ошибок, собрала базу знаний, тестировала на вопросах сына и считала метрики. Ассистент писал код по моим спецификациям и объяснял решения. Я поймала себя на том, что всё чаще говорю «наш проект» вместо «мой». Сначала насторожилась: не прячусь ли я за машинкой? Нет — это просто честно. Решения и ответственность — мои, работа — наша.

Что дальше. Загрузка собственных библиотек drag-and-drop, панель владельца и агент для пользователей, статья на Хабре.

Продолжаю делиться 🫡

RAG для аналитика: от парсера вакансий до голосового бота | Сетка — социальная сеть от hh.ru