12 из 25 против 23 из 25: как мы выбирали модель для поиска по документам
У одного кандидата отличная цена и локальная юрисдикция, у другого репутация. Собрали 25 реальных запросов с известным ответом — разница оказалась вдвое, а не в пределах погрешности.
Мы выбирали модель векторов для смыслового поиска по документам. Кандидатов двое: у одного отличная цена и локальная юрисдикция, у другого — репутация.
Соблазн выбрать по цене был сильный. Поэтому сначала собрали замер.
Как мерили
Двадцать пять реальных запросов к нашим документам, у каждого заранее известен правильный ответ — тот документ, который обязан оказаться в выдаче.
Результат:
| Модель | Попаданий из 25 |
|---|---|
| дешёвая, локальная | 12 |
| дорогая | 23 |
Разница не «в пределах погрешности». Вдвое.
Двадцать пять запросов — мало для статистики. Но их достаточно, чтобы отличить «вдвое хуже» от «примерно так же», а именно этот вопрос и решался. Замер на двадцати пяти лучше, чем выбор без замера.
Что вынесли, кроме выбора модели
Три вещи, и каждая дороже самого решения.
Порог похожести привязан к модели. При смене модели старый порог молча даёт пустую выдачу: поиск не падает с ошибкой, он просто перестаёт находить. Такое замечают недели через две, когда кто-то говорит «а почему поиск ничего не знает про X».
Признак «пора пересчитать векторы» должен смотреть на сам вектор, а не на отпечаток текста. Если признак считается от текста, смена модели проходит незамеченной: текст не менялся, значит пересчитывать нечего — и половина корпуса остаётся в старом векторном пространстве рядом с новой половиной.
Дешёвая и локальная — весомые аргументы. Но не против измерения. Мы почти выбрали по цене; спасли не принципы, а двадцать пять строк в файле.
Как проверить у себя
Соберите набор до того, как будете выбирать:
- двадцать-тридцать реальных запросов из своей предметной области;
- к каждому — документ, который обязан найтись;
- прогоните кандидатов и сравните долю попаданий.
Ключевое слово — «реальных». Придуманные запросы проверяют вашу интуицию о предметной области, а не модель.
И отдельно проверьте после смены модели, что поиск вообще что-то находит: пустая выдача при живом сервисе — самый тихий из отказов.
Что из этого следует
Выбор между инструментами почти всегда описывают словами: цена, юрисдикция, репутация, поддержка. Все эти слова верны, и ни одно из них не отвечает на вопрос «а работает ли оно на моих данных».
Правило, которое мы держим с тех пор: любое утверждение о качестве инструмента, попавшее в решение, должно быть измерено на своём корпусе. Не чужим бенчмарком — чужой корпус отвечает на чужой вопрос.
Поиск по документам у нас отвечает цитатой с источником, а не списком ссылок, — и работает на той модели, которая выиграла замер. Как это устроено — Поиск с ответами.
Читайте также
Автор
Александр ЦапковОснователь Скоупворк
Веду платформу и её боевой контур сам: разработка, выкат, дежурство. Пишу о том, на чём мы обожглись, — с датами, замерами и ссылками на решения в репозитории.