Как мы строим

12 из 25 против 23 из 25: как мы выбирали модель для поиска по документам

У одного кандидата отличная цена и локальная юрисдикция, у другого репутация. Собрали 25 реальных запросов с известным ответом — разница оказалась вдвое, а не в пределах погрешности.

Александр Цапков10 сентября 20262 мин

Мы выбирали модель векторов для смыслового поиска по документам. Кандидатов двое: у одного отличная цена и локальная юрисдикция, у другого — репутация.

Соблазн выбрать по цене был сильный. Поэтому сначала собрали замер.

Как мерили

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

Результат:

МодельПопаданий из 25
дешёвая, локальная12
дорогая23

Разница не «в пределах погрешности». Вдвое.

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

Что вынесли, кроме выбора модели

Три вещи, и каждая дороже самого решения.

Порог похожести привязан к модели. При смене модели старый порог молча даёт пустую выдачу: поиск не падает с ошибкой, он просто перестаёт находить. Такое замечают недели через две, когда кто-то говорит «а почему поиск ничего не знает про X».

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

Дешёвая и локальная — весомые аргументы. Но не против измерения. Мы почти выбрали по цене; спасли не принципы, а двадцать пять строк в файле.

Как проверить у себя

Соберите набор до того, как будете выбирать:

  1. двадцать-тридцать реальных запросов из своей предметной области;
  2. к каждому — документ, который обязан найтись;
  3. прогоните кандидатов и сравните долю попаданий.

Ключевое слово — «реальных». Придуманные запросы проверяют вашу интуицию о предметной области, а не модель.

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

Что из этого следует

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

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


Поиск по документам у нас отвечает цитатой с источником, а не списком ссылок, — и работает на той модели, которая выиграла замер. Как это устроено — Поиск с ответами.

Поиск с ответами по своим документамСпросите проект обычными словами — ответ по вашим документам со ссылками на источники.

Читайте также

Автор

Александр ЦапковОснователь Скоупворк

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