ИИтак

← Назад

Sentence Transformers 6.0 научилась работать с поисковыми моделями в духе ColBERT

В Sentence Transformers 6.0 появился четвёртый тип моделей — MultiVectorEncoder. Он хранит по вектору на каждый токен. Поиск получается точнее, но индекс заметно больше.

В Sentence Transformers, популярной Python-библиотеке для поиска по смыслу и генерации с поиском, вышла версия 6.0 с новым типом моделей — MultiVectorEncoder. Раньше библиотека работала с плотными и разреженными векторными представлениями, а также с моделями для переранжирования. Теперь к ним добавились многовекторные модели, построенные по образцу ColBERT. В новый тип напрямую загружаются чекпойнты PyLate и Stanford-NLP ColBERT, а также модели семейства ColPali для поиска по изображениям страниц.

Обычная модель сжимает весь текст в один вектор. Редкое имя, артикул или важная оговорка в длинном абзаце при этом смешиваются со всем остальным. Многовекторная модель хранит отдельный вектор для каждого токена. При поиске каждое слово запроса находит себе лучшее совпадение в документе, и эти совпадения складываются. Авторы приводят пример: в вопросе о том, где живут пингвины, глагол «жить» совпал с глаголом «населять» из ответа с оценкой 0,94, хотя общих букв у этих слов нет.

Прирост качества умеренный, но устойчивый. Модели LateOn и DenseOn от LightOn обучены на одних данных с одинаковой основой и различаются только числом векторов. Многовекторная LateOn выиграла на 9 из 13 наборов NanoBEIR, в среднем примерно на один пункт NDCG. На длинных документах разрыв больше: многоязычная mLateOn набрала 77,92 балла на MLDR против 51,59 у mDenseOn.

Главная цена — размер индекса. 4 874 абзаца превратились в 608 414 векторов. Это примерно в 42 раза больше, чем у компактной модели MiniLM. После сжатия в индексе от LightOn те же данные заняли 92 МБ, что сопоставимо с 80 МБ у плотной модели Qwen3-Embedding-8B. Объём можно урезать и дальше: если объединять похожие векторы внутри документа, индекс сокращается вдвое почти без потери качества. Можно вовсе не строить такой индекс, а подключать модель только для переранжирования нескольких десятков кандидатов.

Своего индекса у библиотеки нет. Разработчики показывают, как передать векторы в Qdrant, Weaviate, Vespa или в индекс от LightOn. Работа не ограничивается текстом: модель ColQwen-Omni нашла нужную аудиозапись разговора, хотя обучалась только на парах «изображение — текст». Для обновления понадобятся свежие версии библиотек, на которых держится Sentence Transformers. Совместимость сохранения односторонняя: старые чекпойнты загружаются в новую версию, но модели, сохранённые ею, исходные библиотеки PyLate и ColPali прочитать не могут.

← Все новости