1. Представьте
Существует множество показателей, которые можно использовать для измерения подобия векторов, таких как косинусное расстояние, расстояние Хэмминга, евклидово расстояние и т. д.
В области изображений, видео, текста и аудио существует множество точек приложения для поиска сходства векторов, таких как распознавание изображений, распознавание речи и фильтрация спама.
Этот подход, основанный на поиске подобия, отличается от подхода модели машинного обучения. Например, использование модели обучения с учителем для распознавания лиц имеет более низкую интерпретируемость модели, в то время как для распознавания лиц на основе поиска сходства интерпретируемость выше.
Однако, когда объем данных велик, например, десятки миллионов изображений, поиск по сходству становится более сложным. Исчерпывающий метод возможен, но требует очень много времени. Для этого сценария в этой статье в основном представлены сведения об уровне решения.
2. Общие решения
Общие методы поиска сходства векторов в основном следующие:
- исчерпывающий поиск
Эта схема имеет временную сложность O(n) и подходит только для случаев с небольшим объемом данных.
- Поиск на основе MySQL
Это достигается за счет оригинального построения структуры таблицы базы данных. Например, если вектор разбит на N сегментов, по принципу сортиментного ящика вектор с подобием M (M Построить дерево, очень похожее на BST, которое можно использовать для бинарного поиска, с временной сложностью O(logN). После версии ElasticSearch 7.x интегрирована функция векторного поиска. Такие компании, как Facebook, разработали механизмы специально для поиска по сходству векторов, а некоторые также могут поддерживать GPU и распределенное развертывание. В настоящее время большинство векторных поисковых систем используют алгоритм hnsw. В августе 2019 года Google предложил новый алгоритм под названием ScaNN (Scalable Nearest Neighbours).GitHub.com/Google – Горячие цвета… Система поиска по сходству векторов объединяет различные алгоритмы и индексы. Она может динамически выбирать стратегии поиска в соответствии с различными типами данных и различными требованиями к поиску сходства и достигать большей эффективности поиска. Это лучший выбор. Текущие распространенные векторные поисковые системы следующие: В этой статье приведены данные о производительности некоторых упомянутых выше векторных поисковых систем, сведенные в следующую таблицу: Можно видеть, что при сравнении было обнаружено, что производительность milvus очень хорошая. Первоначально опубликовано в:blog.CSDN.net/общее желание/AR…
3. Алгоритм векторного поиска
4. Векторный поисковик
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…
6. Знакомство с Милвусом