Коротко
Автор сравнил ColBERT и MUVERA с плотным поиском на четырёх размеченных корпусах и обнаружил, что преимущества зависят от домена, языка, модели и метрики. Для обычного текста часто выгоднее сначала нарезать документы на фрагменты, а новые методы проверять на собственных данных.
Контекст
Автор давно работает с Qdrant и готовил практический курс по этой системе. Поводом для эксперимента стала доступная в экосистеме Qdrant реализация MUVERA; автор хотел проверить её и ColBERT на практике, сопоставив с плотным поиском multilingual-e5-large.
Главное
- ColBERT использует late interaction: сохраняет представления токенов, а не сворачивает документ в один вектор; средний индекс указан как примерно 150 КБ на документ против 4 КБ у плотного поиска.
- Для оценки взяты MIRACL на русском и английском, набор российских кодексов и SciFact; суммарно около 3000 запросов.
- В качестве основной плотной модели использована multilingual-e5-large. Размеры e5-large и jina-colbert-v2 близки — 560 и 559 млн параметров.
- На кодексах recall@10 почти не различал методы из-за высокой базовой доли попаданий (93,7%); по recall@1 прирост ColBERT составил 4,7 пункта.
- На русской Википедии ColBERT ухудшил ранжирование, а на английском SciFact небольшая англоязычная answerai-colbert-small обошла мультиязычную jina-colbert-v2: 64,7% против 58,3% recall@1.
- На кодексах MRR связки ColBERT с кандидатами от плотного поиска равнялся 0,823 при 100 кандидатах; с кандидатами MUVERA — 0,737. При 1000 кандидатах MUVERA достигла 0,811.
- Изменение числа корзин MUVERA от 8 до 64 почти не улучшило результат; при 128 качество снизилось, поскольку многие корзины оставались пустыми.
- На русской Википедии индексация 125 тысяч фрагментов вместо 7341 статьи улучшила качество почти на 5 пунктов; ColBERT при индексе, примерно в 21 раз более тяжёлом, не превзошёл нарезку: 85,3% против 85,3%.
- На байткоде Python точность попадания исходной функции на первое место составила 6% у e5, 97% у ColBERT и 94–96% у BM25 по тройкам инструкций.
- Автор рекомендует проверять качество на первой позиции, начинать с нарезки документов и испытывать ColBERT с моделью, обученной под нужный язык и домен; для необычных данных сначала стоит испытать BM25 по n-граммам.
Как сделано
ColBERT хранит векторы отдельных токенов и при поиске сопоставляет каждый токен запроса с наиболее похожим токеном документа — это позднее взаимодействие. Такая детализация обходится дорого: вместо примерно 4 КБ на документ для обычного плотного вектора матрица ColBERT занимает около 150 КБ. MUVERA сжимает многовекторное представление в один вектор фиксированного размера для отбора кандидатов, после чего точное ранжирование выполняет ColBERT.
В сравнении использовались русская и английская Википедия из MIRACL, российские кодексы и SciFact — около 3000 запросов. Основной плотной моделью была multilingual-e5-large; размеры e5-large и jina-colbert-v2 почти совпадают: 560 и 559 млн параметров. Автор оценивал разные метрики, менял число кандидатов и число корзин MUVERA, а также сравнил ColBERT с плотным поиском по фрагментам и проверил методы на байткоде Python.
Результаты
Итог на четырёх основных наборах неоднороден: один домен заметно выиграл от ColBERT, один ухудшился, а на двух разница была небольшой. На российских кодексах переход от recall@10 к recall@1 выявил прирост ColBERT на 4,7 процентного пункта: плотный поиск уже давал recall@10 93,7%, поэтому метрика почти скрывала разницу на первых местах. На русской Википедии ColBERT, напротив, ухудшил выдачу. Для английского SciFact специализированная answerai-colbert-small превзошла мультиязычную jina-colbert-v2 по recall@1: 64,7% против 58,3%.
На кодексах MUVERA с отбором 100 кандидатов дала MRR 0,737 против 0,823 у плотного отбора кандидатов с последующим ColBERT; увеличение пула до 1000 подняло MUVERA до 0,811. В тесте русской Википедии нарезка документов на 125 тысяч фрагментов повысила качество почти на 5 пунктов относительно статей целиком. ColBERT при значительно большем индексе результата нарезки не улучшил: оба режима показали 85,3%.
На байткоде Python e5 поставила правильную функцию первой в 6% случаев, ColBERT — в 97%, а BM25 по тройкам соседних инструкций — в 94–96%. При отборе 100 кандидатов MUVERA обеспечила ColBERT 80% результата, тогда как отбор e5 — 48%; с 500 кандидатами MUVERA достигла 93%. На функциях из сторонних библиотек e5 дала 4%, ColBERT — 99,7%.
Ограничения
Эксперименты охватывают четыре размеченных набора и около 3000 запросов; многие замеры ColBERT использовали мультиязычную jina-colbert-v2, поэтому специализированная модель могла бы изменить результаты. Сравнение на русской Википедии показывает конкретный компромисс индекса, но не доказывает, что нарезка всегда лучше. Байткодный тест был специальным экспериментом на небольших корпусах: выводы о генах, химических формулах и редких языках остаются гипотезами, которые автор не проверял. В статье не приводится денежная оценка стоимости хранения или вычислений; при этом ColBERT требует на порядки больше места, а BM25 по n-граммам оказался сильным и дешёвым базовым методом для байткода.
Что взять себе
- Проверяйте не только recall@10: если базовая система уже почти всегда включает нужный документ в первую десятку, метрика может скрыть различия в ранжировании первых результатов.
- Перед внедрением ColBERT попробуйте нарезку документов и сравнивайте методы при сопоставимом бюджете индекса; фрагменты могут дать больше пользы за меньшую цену.
- Подбирайте модель под язык и домен: результаты мультиязычной модели нельзя автоматически переносить на специализированную.
- MUVERA не следует считать гарантированной заменой обученной плотной модели для отбора кандидатов; проверяйте качество на своём корпусе и учитывайте долю корпуса, охваченную пулом кандидатов.
- Для структурированных или незнакомых модели данных протестируйте недорогой BM25 по n-граммам как базовый ориентир.
Читать оригинал, если…
Откройте оригинал, если нужны детали конкретных датасетов, графики и настройки экспериментов или практическая реализация поиска в Qdrant.