Валентин Авдеев

Начальник отдела интеллектуальных систем и бизнес-аналитики

Как научить ИИ понимать «ништяки»

Как научить ИИ понимать «ништяки»

Корпоративная вики — это кладбище. Туда сваливают регламенты, приказы, политику отпусков. Хоронят как положено: потом никто не приходит. Формально знания есть. Практически — нет.

Найти может только тот, кто уже знает, что ищет.

У нас даже такого кладбища не было. Подняли Wiki.js с нуля.

Два языка

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

База знаний тогда была ещё моя. Я сам переносил туда статьи, сам форматировал. В голове сидели правильные слова. Положил инструкцию по заказу корпоративного транспорта — пошёл показывать.

«Как заказать транспорт?» — пошаговый ответ. Кайф.

Потом попросил то же сделать руководителя. Он спросил: «Как заказать машину?». Модель: «Такая информация отсутствует в базе знаний».

Оказалось, не все думают моим словарём. Это я узнал ровно в ту секунду.

Второй случай добил. Спрашиваю админа, можно ли завести почтовый ящик на отдел. Он: «Можно, пиши служебку, инструкция такая-то, пункт 6.2».

Полез в вики проверить. Нашлась. Мало того — положение пересмотрели, и теперь это пункт 9.4, а не 6.2. Система знала свежую версию лучше, чем живой админ. Я возгордился. Слишком рано.

На показе начальству воспроизвести не вышло. Тема одна, запросы — другие: «почта отдела», «общий ящик», «email на команду». Каждый ответ мимо. Нужный фрагмент выдавался только на точную фразу «почтовый ящик», в которую я случайно попал с первого раза. На публике добивался с десятой попытки. Кринж.

Один сотрудник говорит «ништяки» и имеет в виду ДМС и фитнес. Другой тот же ДМС и фитнес описывает как «социальные гарантии в рамках коллективного договора». Между этими формулировками — пропасть. Через пропасть обычно перекидывают ИИ-ассистента.

Железо

Нам выдали две Nvidia Tesla M60. На каждой — два GPU по 8 ГБ, суммарно 32 ГБ VRAM. Карты из эпохи, когда GPT ещё не умел в двузначные числа.

Модель — Qwen 3.5 4B. Маленькая, быстрая, в длинном контексте плывёт.

Без облака, без H100, без бюджета на чужой ум в аренду.

Поиск важнее модели

Фокус не в модели. Фокус — во входе.

Поиск ходит тремя дорогами параллельно:

  • векторный — ловит смысл (BGE-M3, dense 1024 + sparse);
  • полнотекстовый — ловит имена, коды, номера приказов (PostgreSQL FTS, русская морфология);
  • триграммный — ловит опечатки.

Один промахнётся — подстрахует другой. Сверху кросс-энкодер bge-reranker-v2-m3 пересобирает топ по релевантности вопросу. Reranker живёт на CPU — VRAM бережём под генератор.

Модель эмбеддингов выбрана по ruMTEB — обзор на vc.ru, бенчмарк на arxiv.

Три лица одного вопроса

Qwen переписывает запрос тремя способами: синонимы, другие части речи, разговорный вариант. Вместе с оригиналом — четыре формулировки.

«Как заказать машину?» может стать:

  • «заказ автомобиля для командировки» — именная форма;
  • «как оформить транспорт на работу» — глагольная;
  • «где взять тачку по служебным делам» — разговорная.

По каждой формулировке параллельно идёт векторный поиск. Fulltext и триграммный — только по оригиналу: они ловят точные имена, коды, номера и опечатки, парафраз им не нужен.

Результаты всех ветвей сливаются через RRF, дубликаты по странице и чанку схлопываются.

Follow-up — отдельный случай. «А какой у него email?» сам по себе не ищется. Модель сначала разворачивает местоимения по истории диалога («email Иванова, директора продаж»), и только потом парафразит.

Обычный query expansion. Просто сделанный аккуратно.

Чанки и перестановка

Статьи режем по заголовкам markdown, дальше — по 300 слов с перекрытием 75. На каждый чанк — dense + sparse вектор BGE-M3.

4B-модели мешает «lost in the middle»: в длинном контексте середина выпадает из внимания. Два трюка:

  • Перестановка. Самый релевантный чанк уходит в конец, ближе к вопросу.
  • Приоритезация. Модели прямо сказано, где в списке важное.

Отраслевой сленг — через словарь синонимов (synonyms.json). Без дообучения. Просто «почта / ящик / мыло → email».

Диалог

— Какие ништяки положены?

— ДМС, фитнес, обучение. Раздел «Льготы и бонусы».

— Как оформить тачку для поездки?

— Командировка. Регламент «Транспортная политика», по шагам.

На следующей неделе включаем на живых пользователях. «Ништяки» модель выучила. Что из остального корпоративного диалекта окажется для неё непереводимым — узнаем в понедельник.