Architecture

Когда в библиотеке нет фрагмента, модель должна отказаться

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

When the library has no passage, the model should refuse

Модель, которая отвечает, когда не знает, — не функция. Это ответственность с приятным тоном. В системах, которые я веду, вопрос может вернуться пустым. Полезное поведение — цитата, если фрагмент есть в библиотеке, и отказ, если его нет.

Сначала поиск, потом слова

Схема скучная нарочно. Возьмите вопрос. Найдите фрагменты, которые могут держать ответ. Оцените их. Если ни один не подтверждает утверждение, остановитесь. Если один подтверждает, покажите фрагмент рядом с предложением, которое его использовало. Предложение — не источник. Источник — фрагмент. Читатель, который не может открыть фрагмент, не может доверять предложению, и просить его об этом не следует.

Так я собрал систему обучения, которую веду: материалы на входе, план к дате, ответы сверяются с источником, повторение приходит, пока материал не забыт. Так же должен вести себя вопрос к документу. С опорой или молча. Угадывание кажется полезным на демо и дорого стоит в первую неделю, когда клиент действует по нему.

Что вернулосьЧто системе можно сказать
Фрагмент, который держит утверждениеОтвет, и рядом этот фрагмент.
Фрагменты, которые только рядомНичего твёрдого. Скажите, чего не хватает.
Фрагмента нетОткажитесь. Не заполняйте дыру вероятной фразой.
Извлечение с низкой уверенностьюПауза для человека. Не платите модели ещё раз, чтобы она повторила вслепую.

Счёт и журнал — часть замысла

Облачная модель видит данные. До этого поток данных записан: какой сервис, чей ключ, какой месячный потолок. Согласие явное. Всё, что касается клиента, цены или заказа, ждёт человека. Вызов пишется в журнал, потому что «так сказал помощник» — это не след аудита.

Я не обещаю, что это поместит сайт в чужое поле ответа. Ранжирование — другая машина, со стимулами, которые я не контролирую. Я контролирую, выдумывает ли моя собственная система.

Беглость дёшева. Продукт — фрагмент, который можно открыть.

Порог — это продуктовое решение

Кто-то должен выбрать точку, где «рядом» становится «недостаточно». Я не оставляю это настроению модели. Фрагмент либо берёт планку, которую я могу объяснить, либо ответ удерживается. Я лучше объясню пользователю отказ, чем выдуманный шаг в процедуре, которой он последовал. Планку можно подстроить, когда увидите настоящие вопросы. Она не должна начинаться с нуля, где любит жить демо, потому что демо оценивают по тому, как часто оно что-то говорит.

Когда прогон неуверен по-другому — извлечение с низкой уверенностью, а не пустая библиотека, — я ставлю его на паузу для человека, вместо того чтобы платить за ещё одну попытку, которая прозвучит глаже. Глаже не значит правдивее. Журнал хранит первую попытку, чтобы человек видел, что извлекли и что отбросили.

Модели обучены быть полезными, то есть предпочитают дописать абзац. Приложению приходится быть грубее модели. Порог, отсутствующая цитата, пустая выдача: каждая из этих веток не возвращает ответ и записывает почему. Если такой ветки нет, система в конце концов ответит на вопрос, который библиотека не может подтвердить, и прозвучит уверенно.

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