Инструменты24 августа 2026 г., 13:46 МСК🤖 Auto

Turbovec: векторный поиск на Rust быстрее FAISS и в 8 раз компактнее

Библиотека turbovec использует алгоритм TurboQuant для сжатия индекса в 8 раз (с 31 ГБ до 4 ГБ) и обеспечивает ускорение поиска до 3.5x по сравнению с FAISS на ARM и x86.

Баннер новости 6382

Сжатие и скорость: цифры, которые важны

Основная проблема векторных баз данных — потребление памяти. Корпус из 10 миллионов документов в формате float32 занимает 31 ГБ ОЗУ. Библиотека turbovec упаковывает тот же объем данных в 4 ГБ, используя алгоритм квантования TurboQuant от Google Research. Это не просто экономия места: индекс становится быстрее благодаря оптимизированным SIMD-ядрам.

Разработчики провели бенчмарки на корпусе из 100 000 векторов (1 000 запросов, k=64). Результаты показывают, что turbovec превосходит FAISS IndexPQFastScan во всех конфигурациях:

Архитектура Битность Ускорение над FAISS Детали реализации
ARM (Google Axion) 4-bit 3.5x (в среднем) NEON SDOT/SMMLA
ARM (Google Axion) 2-bit 26% NEON SDOT/SMMLA
x86 (Intel Sapphire Rapids) 4-bit 3.4x (в среднем) AVX-512 VNNI
x86 (Intel Sapphire Rapids) 2-bit 20% AVX-512 VNNI + vpermb

Производительность вставки и удаления

В отличие от многих индексов, требующих переобучения при изменении данных, turbovec поддерживает онлайн-ингест. Добавление векторов происходит мгновенно без этапа тренировки. Задержка вставки одного вектора составляет всего 6.3–19.7 мкс (в 7.6–13.9 раза быстрее аналога в FAISS). Удаление по ID (O(1)) занимает 0.44–1.22 мкс, что критично для систем с частыми обновлениями.

Фильтрация на уровне ядра

Важная особенность для RAG-систем: фильтрация происходит внутри SIMD-ядра. При поиске с allowlist (списком разрешенных ID) блоки, не содержащие разрешенных слотов, отбрасываются до вычислений. Это позволяет избежать накладных расходов на перебор всего индекса, если выборка узкая.

Интеграция и безопасность

Библиотека написана на Rust и предоставляет биндинги для Python. Она полностью локальна (air-gapped), не требует внешних сервисов и совместима с популярными фреймворками через плагины:

  • LangChain: замена InMemoryVectorStore
  • LlamaIndex: замена SimpleVectorStore
  • Haystack: замена InMemoryDocumentStore

Установка через pip: pip install turbovec. Для работы с устойчивыми ID (сохраняемыми при удалении) используется класс IdMapIndex.

Источник: Github ↗