ExactusVectorIndex open library

Description

Библиотека создана при поддержке Фонда содействия инновациям (договор № 12ГУКодИИС12-D7/72692 о предоставлении гранта на выполнение проекта открытых библиотек от 27 декабря 2021 г).

Название: Открытая библиотека ExactusVectorIndex для распределённой индексации и поиска в сверхбольших массивах векторных представлений (эмбеддингов) с применением машинного обучения для преобразования векторных пространств и выборки данных

Руководитель проекта: Девяткин Дмитрий Алексеевич

Организация финансирования: Федеральный исследовательский центр «Информатика и управление» Российской академии наук

Срок выполнения: 2021–2023

Ссылка на готовый проект: https://exactusvectorindex.readthedocs.io

Annotation

Библиотека ExactusVectorIndex состоит из двух репозиториев:

Библиотека позволяет создавать:

  • распределённые системы мультимодального информационного поиска в больших массивах разноструктурированных данных (текстов, изображений, мультимедиа);
  • рекомендательные системы.

Библиотека может применяться в этих системах для индексации, хранения и поиска по векторным представлениям, что позволяет выполнять следующие функции:

  • поиск ответа на вопрос;
  • поиск похожих векторов (ближайших соседей);
  • анализ разнородных объектов (классификация, кластеризация).

Characteristics

Методы и технологии

Индексация больших массивов векторов – HNSW, IVF-PQ (FAISS).

Сжатие векторов с применением многослойных нейронных сетей при помощи архитектуры автокодировщика:

  • VanillaAE ;
  • DCEC — адаптивная регуляризация, направленная на повышение точности трансформации центроидов кластеров;
  • HyperAE — трансформация исходных векторных представлений объектов в гиперболическое пространство;
  • NRAE — адаптивная регуляризация, позволяет выполнять трансформацию с учётом локального контекста каждого объекта исходного массива данных.

Результаты реализации проекта

  1. Лицензия GNU GPL 3.
  2. Индексация новых векторов согласно заранее заданному типу индекса: HNSW, IVF-PQ.
  3. Преобразование хранимых данных для оптимизации одного или нескольких критериев (объём хранимых данных, скорость индексации и поиска).
  4. Сохранение части векторов в оригинальном виде для возможного переобучения.
  5. Поддержка графических ускорителей.
  6. Обеспечение выдачи результатов для входящего запроса (поиск похожих для одного входного вектора/группы векторов).
  7. Масштабируемость по нагрузке — до 100000 параллельных запросов в сутки.
  8. Масштабируемость по количеству векторов и объёма — до 100 млрд векторов (суммарный исходный объём векторов — до 100 ТБ при длине вектора в 1024 байта).

Сравнение с аналогами

ExactusVectorIndex поддерживает

шардирование — для осуществления горизонтальной масштабируемости;

репликацию — для отказоустойчивости;

синхронизацию индексов между разными репликами — если данные распределяются на два разных узла и обучаются на разных наборах данных, то качество поиска похожих и других задач снижается, поэтому важно обучать разные реплики на одинаковом наборе данных, что позовляют делать далеко не все открытые библиотеки;

хранение связей — ради поддержки иерархической модели текста, при которой можно разбить текст на уровни, например, на уровень фрагментов и уровень предложений, и уже работать с такой моделью;

предобработку данных — благодаря модульной архитектуре есть возможность использовать новые алгоритмы сжатия на этапе предобработки, в результате достигнуто ускорение поиска более чем в два раза при снижении полноты менее чем на 10% (доступно на ряде датасетов).