Исследуя чудеса Knowhere 2.0
Только что вышел Milvus 2.3 с множеством революционных обновлений. Во главе этих улучшений — Knowhere 2.0, преобразующее обновление, которое обещает поднять Milvus на новые высоты.
Присоединяйтесь к нам в этой статье блога, где мы подробно рассмотрим Knowhere 2.0, изучив его прорывные функции, оптимизации производительности и принципы проектирования, которые делают его выдающейся силой в векторных базах данных.
Что такое Knowhere?
Knowhere — это ядро векторного поискового движка для Milvus. Представьте векторную базу данных как огромную вселенную Marvel; Knowhere — это ее главный штаб. Основная миссия Knowhere — выполнять приближенный поиск ближайших соседей (ANNS), создавая индексы с низкой задержкой.
Knowhere 2.0 и его новые возможности
Мы работали над реструктуризацией и обновлением Knowhere с июля 2022 года. После непрерывных обсуждений, проектирования, разработки и тестирования Knowhere 2.0 дебютировал вместе с Milvus 2.3 в конце августа 2023 года. Эта новая версия приносит множество улучшений, включая поддержку GPU-индекса, косинусного сходства, индекса ScaNN и архитектуры Arm. Обновленный Knowhere приносит пользу пользователям и разработчикам, делая его мощным элементом Milvus. Далее давайте рассмотрим его ключевые возможности.
Поддержка GPU-индексов
Nvidia внесла индексы GPU_FLAT и GPU_IVFPQ из своей библиотеки векторного поиска RAFT в Knowhere 2.0. Это дополнение значительно ускоряет поиск по индексам: Milvus достигает впечатляющих улучшений пропускной способности на Nvidia A100 — почти в 70 раз для SIFT1M.
Milvus QPS GPU vs. CPU
Для получения дополнительной информации о GPU-индексе обратитесь к документации Milvus.
Поддержка косинусного сходства
В предыдущих версиях Knowhere пользователям приходилось использовать внутреннее произведение и нормализовать векторы перед вставкой векторов, чтобы использовать косинусное сходство. Этот процесс был очень затратным, труднодоступным и требовал от пользователей более глубоких теоретических знаний.
Knowhere 2.0 изначально поддерживает косинусное расстояние, автоматически нормализует входящие векторы внутри библиотеки и сопоставляет соответствующие типы индексов, значительно улучшая пользовательский опыт.
Поддержка индекса ScaNN
ScaNN, или FastScan, — это индекс с открытым исходным кодом для приближенного поиска ближайших соседей (ANN), реализованный FAISS. Он использует более компактное PQ-кодирование и соответствующие наборы инструкций для доступа к регистрам CPU, что обеспечивает отличную производительность индексирования.
Knowhere 2.0 теперь изначально поддерживает индекс ScaNN. С Knowhere 2.0 Milvus 2.3 достигает QPS в семь раз выше, чем у IVF_FLAT, и в 1,2 раза выше, чем у HNSW, с показателем полноты примерно 95% на наборах данных Cohere.
Поддержка архитектуры ARM
Архитектура ARM известна своей экономичностью по сравнению с архитектурой x86. Хотя она менее мощная, ARM имеет более простую конструкцию и наборы инструкций, что делает ее все более популярной. Например, экземпляры ARM с теми же характеристиками CPU (например, 1 vCPU и 16GB RAM) примерно на 15% дешевле на платформе AWS, чем экземпляры x86.
Благодаря поддержке архитектуры ARM в Knowhere 2.0 пользователи теперь могут запускать и создавать сервисы верхнего уровня на этой архитектуре.
Поддержка поиска по диапазону
Существует два метода поиска ближайших соседей: K Nearest Neighbor (KNN) и Range Search. KNN находит "k" ближайших векторов к вектору запроса "q" в коллекции векторов "X." Между тем, Range Search не имеет заданного "k"; вместо этого он возвращает все векторы в пределах определенного расстояния (радиуса) от вектора запроса "q" в коллекции векторов "X."
Knowhere 2.0 поддерживает поиск по диапазону для нескольких индексов в библиотеке, таких как HNSW, DiskANN и индексы IVF. Эта функция позволяет пользователям задавать расстояние между входным вектором и векторами, хранящимися в Milvus, во время запроса.
Оптимизированные запросы с фильтрами
В смешанных скалярных и векторных запросах вы можете отфильтровывать некоторые векторы. Knowhere 2.0 значительно улучшил запросы фильтрации векторов для HNSW, что привело к увеличению производительности до 6–80 раз по сравнению с более ранними версиями.
Улучшения структуры кода и компиляции
Knowhere 2.0 упрощает наследование классов C++, использует шаблоны proxy для интеграции новых индексов, перерабатывает модуль Config, применяет Conan как пакетный менеджер для упрощенной компиляции и использует пул потоков Folly для точного управления потоками. Все эти улучшения делают использование Milvus более простым.
Поддержка MMap
В прошлом некоторые пользователи сталкивались с ограничениями объема памяти из-за своих больших наборов данных, что влияло на индексы, которые они могли хранить. Однако с появлением Knowhere 2.0 Milvus теперь поддерживает Memory Mapping (MMap), обеспечивая автоматическое отображение больших файлов в память. Эта новая функция позволяет пользователям получать доступ к обширным данным индексов, несмотря на недостаточный объем памяти.
Поддержка получения исходных векторов
После завершения поиска пользователям может потребоваться доступ к исходным векторам на основе возвращенных ID для дальнейших пользовательских вычислений или фильтрации. С Knowhere 2.0 пользователи могут напрямую извлекать исходные векторы из индекса, снижая задержку по сравнению с получением из удаленного хранилища, такого как S3.
Более подробную информацию о функциях и улучшениях Knowhere 2.0 см. в примечаниях к выпуску Knowhere 2.0.
Приглашаем внести вклад в Knowhere!
Knowhere постоянно развивается, и ваше мнение важно. Если у вас есть ценные предложения или идеи, не стесняйтесь внести вклад в репозиторий Knowhere.
Читать далее

Democratizing AI: Making Vector Search Powerful and Affordable
Zilliz democratizes AI vector search with Milvus 2.6 and Zilliz Cloud for powerful, affordable scalability, cutting costs in infrastructure, operations, and development.

Why AI Databases Don't Need SQL
Whether you like it or not, here's the truth: SQL is destined for decline in the era of AI.

Balancing Precision and Performance: How Zilliz Cloud's New Parameters Help You Optimize Vector Search
Optimize vector search with Zilliz Cloud’s level and recall features to tune accuracy, balance performance, and power AI applications.



