Фраза подрядчика «мы протестировали, всё работает» не содержит ни одного проверяемого утверждения. Рабочая приёмка выглядит иначе: 130 вопросов, собранных заказчиком, три метрики с заранее согласованными порогами и таблица, по которой видно, что именно чинить — состав базы, настройку поиска или инструкцию агента. Вся процедура занимает три рабочих дня и стоит 25 900 ₽ по внутренним ставкам.

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

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

Что мы меряем: поиск, а не формулировку ответа

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

Что это значитПопадание

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

Разделить вину поиска и вину модели можно за пятнадцать минут, если в журнале есть два поля: найденные фрагменты и итоговый ответ. Нужный фрагмент не найден — вопрос к поиску и базе. Нужный фрагмент найден, а ответ всё равно неверный — вопрос к инструкции агента. Без этих двух полей разбор превращается в обмен мнениями; подробнее шесть типовых причин промаха разобраны в материале про то, почему поиск находит не тот документ.

Тестовый набор: 100 вопросов из журнала и 30 заведомо без ответа

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

  1. 1100 реальных вопросов из журнала обращений за последние три месяца, взятые случайно, а не выбранные. Формулировки сохраняются дословно, вместе с сокращениями и ошибками. Если журнала нет — берутся переписки менеджеров и вопросы из почты.
  2. 230 вопросов, заведомо не покрытых базой. Это самая важная часть набора: она проверяет, умеет ли агент сказать «этого в базе нет», а не сочинить правдоподобное. Честный отказ как целевое поведение — отдельная тема, но проверяется он именно здесь.
  3. 3Эталон к каждому из 100 вопросов: номер документа и раздела, который считается верным источником. Пишет предметный специалист — тот, кто отвечает на такие вопросы в жизни, а не тот, кто настраивал систему.
  4. 4Пометка сложности: обычный вопрос, вопрос с числом или артикулом, вопрос, ответ на который лежит в двух документах сразу. Без этой разметки итог получится одной средней цифрой, из которой ничего не следует.
схема процессаotsenka-kachestva-poiska-po-baze-znaniy--01
Поток данных замера: 130 вопросов, прогон, выгрузка фрагментов, сверка с эталоном, три метрики

Схема потока данных слева направо. Слева два блока, объединённые скобкой: «100 вопросов из журнала» и «30 вопросов вне базы», от скобки стрелка в блок «Эталон: документ и раздел, размечает предметный специалист». Дальше стрелка в блок «Прогон 130 вопросов», от него две параллельные стрелки вправо: верхняя подписана «найденные фрагменты» и ведёт в блок «Сверка с эталоном — считает человек», нижняя подписана «текст ответа» и ведёт в блок «Оценка по существу — считает предметный специалист». Обе стрелки сходятся в блок «Три метрики», от него — в блок «Таблица диагностики: что чинить». Чертёжный стиль, все подписи по-русски.

Из системы выгружается не только ответ, но и то, что она нашла, — иначе замер бессмыслен
Три способа испортить набор, не заметив этого

Первый — взять вопросы из оглавления базы знаний: система найдёт их идеально, и замер покажет 98 % при реальных 70. Второй — дать подрядчику собрать набор самому: он соберёт добросовестно и всё равно из своей картины мира. Третий — размечать эталон после прогона: увидев, что нашла система, разметчик бессознательно подстраивает под неё определение «нужного документа». Все три ошибки одинаковы по последствиям — вы примете систему, которая не работает.

Три метрики и кто какую считает

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

МетрикаЧто означаетКто считаетРабочая норма
Нашёлсянужный документ есть среди найденных фрагментов, в любом месте выдачипредметный специалист, сверяя с эталоном85–95 из 100
В первой тройкенужный фрагмент попал в первые три позиции выдачиавтоматически, если эталон размеченне ниже чем на 10 пунктов хуже первой
Верный ответагент ответил по существу и сослался на источникпредметный специалист по тексту ответаразрыв с первой не больше 10 пунктов
Честный отказна 30 вопросах вне базы агент сказал, что ответа нетпроверяется поштучно, вручнуюне меньше 28 из 30

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

графикotsenka-kachestva-poiska-po-baze-znaniy--02
Три метрики на 130 вопросах, норма 85–95 попаданий и красная зона ниже 70

Четыре вертикальных столбца одной шкалы, ось от 0 до 100 попаданий из 100. Столбцы подписаны снизу: «Нашёлся», «В первой тройке», «Верный ответ», «Честный отказ, из 30». Высота столбцов убывает слева направо. Горизонтальная светлая полоса-коридор на уровне 85–95 подписана справа «рабочая норма». Ниже, на уровне 70, вторая горизонтальная штриховая линия подписана «ниже — проблема в составе базы, а не в настройке»; область под ней затонирована. Между первым и вторым столбцом нарисована фигурная скобка с подписью «разрыв больше 10 пунктов — чинить ранжирование», между вторым и третьим — скобка с подписью «разрыв больше 10 пунктов — чинить инструкцию». Чертёжный стиль, все подписи по-русски.

Убывающая лестница — норма; резкая ступенька между соседними столбцами и есть диагноз

Таблица диагностики: какая комбинация куда указывает

Ценность процедуры не в трёх числах, а в их комбинации по каждому вопросу. Одна и та же итоговая доля верных ответов в 74 % получается тремя разными способами, и лечится она в этих трёх случаях совершенно по-разному — от переделки нарезки документов до правки одного абзаца в инструкции.

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

Вторая строка встречается чаще остальных и лечится дешевле всех: нужный документ система находит, но ранжирует плохо, и в запрос модели он не доезжает. Здесь помогает гибридный поиск — векторный и текстовый одновременно; в разборе эмбеддингов и векторного поиска он даёт 89 попаданий из 100 против 71 у чистого векторного. Первая же строка — самая дорогая: она означает работу с документами, а не с настройками, и это подготовка базы знаний заново.

Сколько стоит замер и во что обходится его пропуск

Процедуру выполняют внутренние люди компании плюс несколько часов инженера подрядчика на прогон и разбор. Ставки — канонические для наших расчётов: оператор 700 ₽/час, предметный специалист 900 ₽/час, инженер 3 000 ₽/час.

Первый замер качества поиска на 130 вопросах
Сбор 100 вопросов из журнала обращений: 4 часа оператора по 700 ₽/час2 800 ₽
30 вопросов, заведомо не покрытых базой: 1 час предметного специалиста900 ₽
Разметка эталона — какой документ считается верным: 8 часов по 900 ₽/час7 200 ₽
Прогон 130 вопросов и выгрузка найденных фрагментов: 3 часа инженера9 000 ₽
Разбор таблицы диагностики вместе с подрядчиком: 2 часа инженера6 000 ₽
Итого25 900 ₽ и три рабочих дня. Повторный замер — 15 600 ₽: прогон 9 000 ₽, переоценка ответов 3 600 ₽, разбор 3 000 ₽

Теперь цена отказа. Один промах поиска — это вопрос, ушедший живому человеку: семь минут разбора по ставке 700 ₽/час, то есть 81,7 ₽. Один процентный пункт попаданий на потоке 6 000 обращений в месяц — это 60 таких промахов и 4 900 ₽ в месяц. Разрыв между типичным результатом непроверенной системы в 76 попаданий и рабочей нормой в 88 — двенадцать пунктов, то есть 58 800 ₽ в месяц.

сравнениеotsenka-kachestva-poiska-po-baze-znaniy--03
Демонстрация подрядчика против собственного замера: 10 вопросов и 130, две разные картины

Сравнение в две колонки. Левая колонка «Демонстрация подрядчика»: строки «10 вопросов», «вопросы выбрал подрядчик», «формулировки из базы знаний», «эталона нет», «оценка — есть ответ или нет», «результат: всё работает», «стоимость 0 ₽». Правая колонка «Собственный замер»: строки «130 вопросов», «вопросы из журнала обращений», «формулировки живые, с опечатками», «эталон размечен до прогона», «оценка по трём метрикам и корзинам», «результат: 76 из 100, чинить нарезку», «стоимость 25 900 ₽». Под колонками общая подпись: «12 пунктов разницы — это 58 800 ₽ в месяц на потоке 6 000 обращений». Чертёжный стиль, все подписи по-русски.

Разница не в строгости, а в том, кто выбирал вопросы и кто размечал эталон

Три месяца работы на 76 попаданиях вместо 88 стоят 176 400 ₽ — в 6,8 раза больше, чем сам замер. И это только прямые расходы на разбор промахов, без потерянного доверия сотрудников к системе, которую они после десятка неверных ответов просто перестают открывать.

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

  1. 1Тестовый набор согласуется до начала работ и прикладывается к техническому заданию. Подрядчик видит структуру набора и корзины, но не сами вопросы до прогона.
  2. 2Пороги приёмки записаны числами: не меньше 85 попаданий из 100 по метрике «нашёлся», разрыв между «нашёлся» и «верный ответ» не больше 10 пунктов, честный отказ не меньше 28 из 30.
  3. 3Прогон проводится на боевой базе, а не на демонстрационной выборке документов, и его результаты оформляются той самой таблицей диагностики, а не письмом «всё в порядке».
  4. 4Повторный прогон после каждой существенной доработки — за счёт подрядчика. Иначе исправление одного дефекта уносит с собой два других, и заметить это будет нечем.
  5. 5После сдачи набор остаётся у заказчика и превращается в регресс-набор эксплуатации. Он переживает смену подрядчика и экономит следующему исполнителю те же восемь часов разметки.

Когда замер не нужен

Процедура рассчитана на систему, которая отвечает по документам компании. В нескольких ситуациях она либо преждевременна, либо меряет не то, и делать её ради галочки не стоит.

  • База ещё не собрана. Если документы не отобраны, не нарезаны и без дат вступления в силу, замер покажет катастрофу, причина которой известна заранее. Сначала база, потом измерение.
  • В базе меньше 30 документов. На такой выборке поиск почти всегда попадает, и метрика перестаёт различать хорошее и плохое. Проверяйте вручную по десятку вопросов и не изображайте статистику.
  • Агент не ищет по документам. Классификация писем, извлечение полей из накладной, короткое резюме звонка — там нет шага поиска, и мерить надо качество ответов на своих данных целиком, по другой процедуре.
  • Пилот на две недели без продолжения. Если решение сознательно временное и через месяц будет выброшено, 25 900 ₽ и три дня людей на приёмку не окупятся. Ограничьтесь тридцатью вопросами и корзиной честных отказов.
  • Нет предметного специалиста, готового потратить восемь часов. Замер без разметки эталона — это не замер, а мнение. Лучше отложить процедуру на две недели и получить настоящий результат, чем провести её силами того, кто систему настраивал.

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