Если загрузить в бота неподготовленную базу знаний, бот будет отвечать, но иногда он не сможет найти ответ или ответ будет неточным.

Ядро Wikibot - большая языковая модель (далее LLM - Large Language Model). LLM обучается на текстах и большая часть успеха работы Wikibot зависит от качества подготовленных материалов.

LLM понимает текст, но важно помнить, что LLM не является специалистом в вашей предметной области и не всегда понимает вопросы в формулировке отличной от документации.

Чтобы LLM хорошо отвечала на вопросы, в документацию необходимо добавить различные формулировки. Иногда необходимо перефразировать предложение на более простоe.

Общая логика при составлении документации:

  • Простой язык изложения статьи в документации;
  • Одна статья отвечает на один вопрос;
  • Упоминание близких по смыслу терминов при описании понятия, например: “Войти в аккаунт” и “Войти в личный кабинет”.

При получении запроса от пользователя в Wikibot последовательно запускаются модули:

  • Первая линия - Level 1 support (L1);
  • Семантический поиск в базе знаний;
  • Генерация ответа LLM на основе трех документов из базы знаний.

Первая линия (L1)

Первая линия (L1) – это список вопросов с точными ответами без изменений формулировок, в стиле FAQ.

L1 позволяет получить:

  • Ответ строго по регламенту;
  • Автоматическое переключение на оператора, если нужно исключить общение бота с клиентом;
  • Бюджетное решение задачи, так как L1 - дешевле, чем ответ по базе знаний, подробнее о цене L1

Особенности настройки L1:

  • Главный вопрос должен быть довольно узким, иначе ответ L1 будет срабатывать очень часто (и ошибочно по бизнес-логике);
  • Ответ должен быть чётким.

Варианты действия на вопрос пользователя:

  • Ответ;
  • Переключение на оператора.

Чтобы бот лучше понимал Главный вопрос, необходимо создать дополнительные формулировки - Похожие вопросы. Не больше 10 похожих вопросов для каждого главного.

Тестировать работу L1 удобно на портале в разделе Тестирование.

Семантический поиск в базе знаний

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

Посмотреть это можно на портале в разделе “Тестирование” (найденные статьи на картинке подсвечены оранжевым)

bot doesnt answer explain

Если по каким-то вопросам пользователей статья не находится, то можно усилить её вес. Для этого в разделе “Обучение” найдите нужную статью, нажмите “Подробнее” и в появившемся интерфейсе нажмите кнопку “Добавить контент”.

bot doesnt answer additional content

Появится окно “Дополнительный контент”.

Дополнительный контент предназначен для добавления контента в начало страницы.

Чтобы бот лучше искал статьи, можно добавить альтернативные формулировки вопроса и синонимы. А чтобы система была проще, лучше править исходную статью. Дополнительный контент для страницы нужно использовать, только если компания не готова адаптировать документацию под бота.

Генерация ответа LLM на основе трех документов из базы знаний

Получив вопрос и 3 документа, LLM дает ответ.

Важная особенность LLM - когда ситуация однозначная, то LLM отвечает всегда одинаково. Когда до конца не понимает, - по-разному.

Мы работаем над тем, чтобы сделать работу Wikibot идемпотентной во всех случаях.

Если бот дает неправильный ответ, то сначала нужно убедиться, что нужная статья находится (раздел Семантический поиск в базе знаний).

Бот получает три документа, если статья находится, но бот дает неправильный ответ или не отвечает вовсе, то, скорей всего, он взял похожую информацию не из того документа. В этом случае необходимо обогатить найденную статью, добавив синонимы и другие формулировки.

Если вопрос-ответ требует очень четких формулировок, а бот дает неточный ответ по найденной статье, то данный вопрос-ответ необходимо добавить в первую линию.

Алгоритм настройки ответа

  • Пользователь задал вопрос

    • Бот дал ответ?

      • Да. Ответ правильный?

        • Да, правильный → Успех.
        • Да, правильный, но не точный → добавить вопрос и ответ в первую линию → Успех.
        • Нет, неправильный → Скорее всего, он взял похожую информацию не из того документа. Необходимо:
      • Нет. Нужная статья находится в семантическом поиске?

        • Да, находится → Обогатить нужную статью, добавив синонимы и другие формулировки → Успех
        • Нет, не находится → Обогатить нужную статью, добавив синонимы и другие формулировки → Успех.

Итоговые замечания

  1. Иногда встречаются вопросы где пользователь затрагивает много тем, или задает в одном сообщении 2-3 вопроса, или сначала рассказывает историю. На такие сообщения Wikibot обычно ответить не может и переключает на оператора. Важно понимать что не стоит под каждый вопрос добавлять L1 и дополнительный контент к статьям, т.к. Чрезмерно оптимизируя ответ на единственный вопрос можно ухудшить работу системы на других вопросах.

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

Поэтому некоторые вопросы Wikibot понимать не будет. Это связано с двумя вещами: А. Wikibot ориентирован на быстрое внедрение под любой домен знаний, т.е. он не располагает глубинными знаниями вашей предметной области, а просто делает выводы на основе ваших баз знаний и документов. Б. Цена использования разных LLM может сильно отличаться, например цена gpt4 примерно в 10 больше gpt3. В ряде случаев мы жертвуем качеством ради цены.

Если необходимо получить от Wikibot более глубокий уровень рассуждений и более тонкое понимание вашей предметной области, то напишите нам. Мы хорошо понимаем как улучшить результаты используя другие большие языковые модели и другой тип обучения моделей.