Когда нужно найти «зеленый диван с деревянными ножками и округлыми подушками», обычный вектор-эмбеддинг смешивает все признаки в одну точку, теряя детали. Библиотека Sentence Transformers в версии 6.0 предлагает иной подход: теперь она поддерживает многовекторные модели ColBERT-стиля, которые хранят отдельный вектор для каждого слова текста.
Новый тип моделей, MultiVectorEncoder, предназначен для ретривала с поздним взаимодействием. В отличие от стандартных моделей, которые сжимают весь текст в один вектор, многовекторная модель сохраняет по одному вектору на каждый токен (слово). Например, документ из девяти токенов преобразуется в матрицу 9x128 вместо одного вектора 1x128.
Такой подход позволяет сохранить информацию о совпадениях на уровне отдельных слов, которая теряется при усреднении в одном векторе. Для оценки запроса и документа используется оператор MaxSim. Это обеспечивает более точный поиск, особенно для сложных запросов с несколькими критериями.
MultiVectorEncoder также показал себя как решение для поиска по визуальным документам, где текстовый запрос сопоставляется напрямую с изображениями страниц, без промежуточного шага оптического распознавания символов (OCR).
Главный недостаток такого метода — больший размер индекса, поскольку для каждого токена хранится отдельный вектор. Hugging Face отмечает, что новый функционал совместим с существующими контрольными точками PyLate, Stanford-NLP ColBERT и colpali-engine и доступен через привычный API после обновления библиотеки.
Обновление Sentence Transformers 6.0 предлагает более точный поиск, особенно для сложных запросов и визуальных данных, за счет сохранения деталей на уровне слов. Однако эта точность достигается ценой существенно большего индекса, что переносит фокус на оптимизацию хранения и поиска многовекторных представлений.