Крупномасштабная схема поиска подобия векторов

задняя часть

1. Представьте

Существует множество показателей, которые можно использовать для измерения подобия векторов, таких как косинусное расстояние, расстояние Хэмминга, евклидово расстояние и т. д.

В области изображений, видео, текста и аудио существует множество точек приложения для поиска сходства векторов, таких как распознавание изображений, распознавание речи и фильтрация спама.

Этот подход, основанный на поиске подобия, отличается от подхода модели машинного обучения. Например, использование модели обучения с учителем для распознавания лиц имеет более низкую интерпретируемость модели, в то время как для распознавания лиц на основе поиска сходства интерпретируемость выше.

Однако, когда объем данных велик, например, десятки миллионов изображений, поиск по сходству становится более сложным. Исчерпывающий метод возможен, но требует очень много времени. Для этого сценария в этой статье в основном представлены сведения об уровне решения.

2. Общие решения

Общие методы поиска сходства векторов в основном следующие:

  1. исчерпывающий поиск

Эта схема имеет временную сложность O(n) и подходит только для случаев с небольшим объемом данных.

  1. Поиск на основе MySQL

Это достигается за счет оригинального построения структуры таблицы базы данных. Например, если вектор разбит на N сегментов, по принципу сортиментного ящика вектор с подобием M (M

  1. KD-Tree

Построить дерево, очень похожее на BST, которое можно использовать для бинарного поиска, с временной сложностью O(logN).

  1. ES

После версии ElasticSearch 7.x интегрирована функция векторного поиска.

  1. векторная поисковая система

Такие компании, как Facebook, разработали механизмы специально для поиска по сходству векторов, а некоторые также могут поддерживать GPU и распределенное развертывание.

3. Алгоритм векторного поиска

В настоящее время большинство векторных поисковых систем используют алгоритм hnsw. В августе 2019 года Google предложил новый алгоритм под названием ScaNN (Scalable Nearest Neighbours).GitHub.com/Google – Горячие цвета…

4. Векторный поисковик

Система поиска по сходству векторов объединяет различные алгоритмы и индексы. Она может динамически выбирать стратегии поиска в соответствии с различными типами данных и различными требованиями к поиску сходства и достигать большей эффективности поиска. Это лучший выбор. Текущие распространенные векторные поисковые системы следующие:

  1. faiss
  • Разработчик: Facebook
  • Независимо от того, с открытым исходным кодом: с открытым исходным кодом
  • Ссылка на сайт:GitHub.com/Facebook Рес…
  • преимущество:
    • Более взрослая, более актуальная информация, высокая звезда на github
    • Поддерживает ускорение процессора и графического процессора
  1. milvus
  • Разработчик: Zilla (отечественное ПО, шанхайская компания)
  • Независимо от того, с открытым исходным кодом: с открытым исходным кодом
  • Ссылка на сайт:GitHub.com/Power-lawUS-IO/Нет…
  • преимущество:
    • Информации много, присоединился к проекту linux fund, техническое сообщество хорошо поддерживается, а также своевременно обновляется собственный блог.
    • Поддержка ускорения графического процессора
    • Многие крупные компании, такие как Ali и Xiaomi в Китае, используют
  1. SPTAG
  • Разработчик: Майкрософт
  • Независимо от того, с открытым исходным кодом: с открытым исходным кодом
  • Ссылка на сайт:GitHub.com/Microsoft/S…
  • Достоинства: Сравните другие двигатели и узнайте, есть ли у СПТАГ преимущества
  1. annoy
  • Библиотека, которая не поддерживает ускорение, такое как графические процессоры и другие сложные приложения.
  1. Zsearch
  1. vearch
  • Разработчик: Jingdong
  • Независимо от того, с открытым исходным кодом: с открытым исходным кодом
  • Ссылка на сайт:Woohoo.info Q.Can/article/Спасибо Y…
  • Преимущества: vearch разработан на базе faiss, предоставляя гибкий и простой в использовании API, аналогичный ES.
  1. ESKNN
  • Разработчик: АМАЗОН
  • Независимо от того, с открытым исходным кодом: с открытым исходным кодом
  • Ссылка на сайт:GitHub.com/open День 3 RO-…
  • Преимущества: AMAZON напрямую модифицирован на основе ES, и есть поговорка, что он потребляет больше памяти для использования.

5. Данные о производительности

В этой статье приведены данные о производительности некоторых упомянутых выше векторных поисковых систем, сведенные в следующую таблицу:

Engine Performance Data Size Vector Size Link
ES 0.6s 1,000,000 128 GitHub.com/jobSecondaunt/The…
ES-aliyun 0.09s 20,000,000 128 developer.aliyun.com/article/738…
milvus 27ms 1,000,000,000 128 GitHub.com/Power-lawUS-IO/Нет…
SPTAG not good N/A N/A GitHub.com/Microsoft/S…
GitHub.com/Microsoft/S…

Можно видеть, что при сравнении было обнаружено, что производительность milvus очень хорошая.

6. Знакомство с Милвусом

  1. Как установить (используя докер, легко настроить)
  1. python SDK и его использование (измерено, эффективность действительно хорошая)
  1. Графический интерфейс (размеренный, простой в установке и настройке)

Первоначально опубликовано в:blog.CSDN.net/общее желание/AR…