MUVERA-py: Как ускорить многовекторный поиск в десятки раз, не теряя точности
Репозиторий давно не обновлялся
Последнее обновление было 7 месяцев назад.
Знакомая ситуация? Вы используете современные, мощные многовекторные модели вроде ColBERT для поиска по огромным коллекциям документов. Точность — на высоте, релевантность — радует, но вот скорость... При работе с миллиардами векторов каждый запрос превращается в мучительное ожидание. Кажется, что приходится выбирать: либо точность, либо скорость. Но что, если я скажу, что есть решение, которое позволяет получить и то, и другое?
Что такое MUVERA-py и зачем он нужен?
Встречайте muvera-py — Python-реализацию алгоритма FDE (Fixed-Dimensional Encoding), который лежит в основе проекта MUVERA. Этот репозиторий — не просто очередной порт, а тщательно воссозданная версия оригинальной C++ имплементации от Google. Авторы проекта приложили максимум усилий, чтобы каждая функция и каждый параметр Python-версии полностью соответствовали поведению C++ оригинала. Это значит, что вы получаете всю мощь и проверенность алгоритма, но в удобном и привычном для Python-разработчиков виде.
Главная цель muvera-py: решить фундаментальную проблему современных поисковых систем. Как эффективно искать по миллиардам документов, если каждый документ представлен не одним, а сотнями векторов? Традиционный поиск с одним вектором на документ быстр, но часто неточен. Многовекторный поиск, наоборот, очень точен, но катастрофически медленен. FDE призван разорвать этот порочный круг.
В чём магия FDE?
Суть Fixed-Dimensional Encoding в том, чтобы трансформировать набор из множества векторов (так называемое