Aivizor
Aivizor
СкиныКреативыСообщество
Назад
  1. Сообщество
  2. /
  3. Other AI

Turbovec приносит алгоритм TurboQuant от Google в векторные индексы на Rust с Python‑биндингами

Новость
И
Ирина Орлова
Редактор аналитических материалов

5/20/2026, 10:29:41 PM

Turbovec приносит алгоритм TurboQuant от Google в векторные индексы на Rust с Python‑биндингами

turbovec — открытая библиотека на Rust с Python‑биндингами, реализующая алгоритм TurboQuant от Google Research для сильного сжатия эмбеддингов и быстрого поиска.

Появилась turbovec — открытая реализация векторного индекса на Rust с Python‑биндингами, основанная на алгоритме TurboQuant из Google Research. Проект позиционируется для RAG‑конвейеров и локального/он‑премис инференса, где объём и стоимость хранения эмбеддингов критичны: по оценке, 10 млн эмбеддингов в float32 занимают 31 ГБ, тогда как turbovec может уместить их примерно в 4 ГБ, что заметно снижает требования к хранилищу и сетевой передаче.

Квантование в turbovec реализовано в четыре последовательных шага: сначала векторы нормализуют и сохраняют их норму как одно значение float; затем применяют случайную ортогональную ротацию, которая выравнивает распределение координат; дальше используют Lloyd — Max скалярное квантование с заранее вычисленными границами и центроидами — без проходов по данным; наконец, координаты бит‑упаковывают. На примере вектора размерности 1536 это означает: исходные FP32 занимают 6 144 байт, а 2‑битная упаковка даёт 384 байта — примерно 16× сжатие.

Механика поиска также строится вокруг той же случайной матрицы: запрос поворачивают той же трансформацией, а оценку близости выполняют напрямую по значениям кодбука. Внутреннее скоринговое ядро использует SIMD‑оптимизации: NEON на ARM, AVX‑512BW на современных x86 с AVX2 в качестве фоллбэка; для пропускной способности применяют nibble‑split lookup‑таблицы, что повышает скорость обработки закодированных координат.

Бенчмарки приведены при 100K векторах, 1 000 запросах, k=64 и медиане по пяти запускам. Для сравнения использовали FAISS IndexPQ (LUT256, nbits=8, float32 LUT). В задачах с OpenAI‑эмбеддингами при d=1536 и d=3072 TurboQuant уступает FAISS по R@1 на 0–1 процентный пункт, причём обе системы сходятся к полноте ~1.0 уже при k≈4–8. Для GloVe при d=200 turbovec отстаёт сильнее — на 3–6 пунктов по R@1, но разрыв сокращается к k≈16 — 32.

По производительности turbovec в ряде конфигураций быстрее FAISS. На ARM (Apple M3 Max) turbovec опережает FAISS IndexPQFastScan на 12 — 20% во всех протестированных конфигурациях. На x86 (Intel Xeon Platinum 8481C, 8 vCPU) он выигрывает в 4‑битных режимах на 1–6% и оказывается примерно на одном уровне с FAISS (~1% разницы) в 2‑битном однопоточном режиме. Исключения есть: в двух сценариях (2‑битный многопоточный режим при d=1536 и d=3072) FAISS лидирует на 2–4% — авторы связывают это с очень короткой внутренней петлёй, где путь FAISS с AVX‑512 VBMI оказывается эффективнее.

Для разработчиков доступен Python‑интерфейс: установка через pip install turbovec, основной класс TurboQuantIndex(dim, bit_width) и методы index.add(vectors) и index.search(query, k=10). TurboQuant спроектирован как data‑oblivious квантайзер — без отдельного кодбука и без проходов по данным, что упрощает работу с растущими или меняющимися корпусами; по заявлению авторов, искажение квантования находится примерно в 2.7× от теоретической нижней границы Шеннона.

Источники

  1. MarkTechPost AI · 5/20/2026
0
0
0

Ответы (0)

Пока нет ответов в этой теме.

9:41