Коротко
Автор построил прототип для поиска совпадений в корпусе примерно из 664 тысяч книг — в том числе по распознанным фрагментам аудиокниг. Главный вывод статьи: сделать поиск недостаточно, нужно ещё надёжно измерять его качество, а метаданные, выборки и даже «нулевые» результаты могут вводить в заблуждение.
Контекст
Автор разрабатывает собственный корпус книг, чтобы не зависеть от идентификаторов внешних каталогов и связывать с книгами результаты своих анализаторов. Практическая задача — найти книгу по нескольким минутам аудио, распознанным Whisper, — привела к разработке поиска и попыткам оценить его качество. Эксперименты запускались параллельными сессиями AI-агентов на разных машинах.
Главное
- В корпусе около 664 тысяч книг. Поиск должен находить не только запись с точным ID, но и разные издания, форматы и книги, вложенные в сборники.
- Обычный MinHash по шинглам плохо справлялся с вложенными текстами: сходство Жаккара занижается, когда небольшая книга целиком входит в большой сборник.
- Текущий подход сочетает MinHash по блокам из 300 шинглов, локальные минимумы по мотивам Winnowing и проверку цепочкой: кандидат принимается, если найден связный отрезок примерно из десятка слов.
- Пары с одинаковыми автором и названием оказались ненадёжной разметкой: среди 17 839 таких пар 32,6% не были дублями.
- Предполагаемо независимый набор из 767 пар аудиокнига—книга на 88,9% совпал со старым набором: оба набора фактически опирались на одну таблицу.
- Поле, принятое за показатель уверенности связи аудиокниги с книгой, на деле отражало буквальное совпадение названий. Примерно четверть связей в считавшейся самой надёжной группе вела к книге другого автора с тем же названием.
- На случайных запросах один только порог MinHash давал 13–29% ложных срабатываний; после проверки цепочкой их доля снизилась до долей процента.
- Пилот на малом индексе не выявил ложных срабатываний, но частота росла с размером корпуса. Экстраполяция на полный корпус давала 34–47% ложных срабатываний.
- Первый итог полного прогона — 0 ложных результатов на 4060 запросах — оказался некорректным: из-за обращения не к той базе проверка реально охватила только 232 запроса. После исправления получили 3 ложных срабатывания на 4060 запросах, или 0,074%; на специально подобранных похожих книгах — 0,25–0,35%.
- Для запросов по фрагментам аудио хотя бы один из десяти отрывков находил приписанную книгу в 80,4% случаев на 709 аудиокнигах, но автор не считает это recall из-за ненадёжности исходной разметки.
Как сделано
Автор индексировал текст книг по шинглам, используя блочный MinHash: отпечатки строятся по блокам из 300 шинглов с локальными минимумами. Это помогает находить текст, включённый в более крупный сборник, не штрафуя совпадение только за размер сборника.
После выдачи кандидатов применяется chaining — проверка связности совпадений. Она отсекает случайные россыпи общих шинглов и требует связного совпадающего фрагмента примерно из десятка слов. Для сравнения вариантов автор перешёл к оценке при одинаковой полноте, например 0,95, 0,98 и 0,99, вместо сравнения на разных рабочих порогах.
Для проверки качества использовались текстовые запросы из книг, распознанные Whisper аудиофрагменты, метаданные и результаты других анализаторов. Автор отдельно проверял размеры индексов, долю объектов, реально дошедших до проверки, происхождение выборок и зависимость ошибок от объёма корпуса. По его описанию, агенты писали код и запускали множество экспериментов, а автор анализировал их результаты.
Результаты
Получен работающий прототип поиска книги по тексту другой книги или по распознанному аудиофрагменту, включая случаи, когда один текст входит в другой. На 19 428 запросах, взятых из книг, в 99,17% случаев первым результатом была книга, действительно содержащая искомый текст: в 58,66% это была точная запись, ещё в 40,51% — другой контейнер того же текста, например сборник или другое издание. Доля действительно ложных совпадений составила 0,37%, пустая выдача — 0,46%. Для аудиокниг хотя бы один из десяти фрагментов нашёл приписанную книгу в 80,4% случаев, но это показатель по эвристической, а не проверенной разметке. Автор не считает метрики окончательными: после замеров он переписал сервис и изменил нормализацию текста.
Ограничения
Для честного сравнения алгоритмов нет надёжного размеченного набора; метаданные и связанные с ними источники часто содержат общие ошибки. Правильный ответ может быть множественным, поэтому оценка по одному ID не подходит. Результаты зависят от размера корпуса, порогов, конфигурации индекса и полноты фактической проверки. Аудиосвязи размечены эвристически, причины неудач примерно у 19,6% аудиокниг не установлены. Приведённые численные результаты относятся к прежней версии сервиса, а стоимость экспериментов не указана.
Что взять себе
- Сначала выясняйте, как построена разметка: название датасета и поле «уверенности» сами по себе ничего не гарантируют.
- Для поиска вложенных текстов обычной метрики сходства множеств может быть недостаточно; полезны локальные отпечатки и проверка связности совпадений.
- Сравнивайте методы при одинаковой полноте и проверяйте, что результаты получены на сопоставимых данных.
- Ноль ошибок имеет смысл только вместе с размером выборки и числом объектов, которые действительно прошли проверку.
- Различайте работающий прототип и доказанное качество системы: без подходящего тестового набора точные precision и recall заявлять нельзя.
Читать оригинал, если…
Откройте оригинал, если нужны подробности экспериментов и таблиц, разбор ошибок разметки или практические детали оценки поиска на крупном корпусе.