Исследуя чудеса 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.
Читать далее

Introducing Loon: A New Storage Engine for Vector Data That Never Stops Changing
Loon is a new storage engine for Milvus 3.0 and Zilliz Vector Lakebase, built to manage evolving vector datasets with ColumnGroups, row ID alignment, and Manifests.

Why We Built Vector Lakebase: Rethinking Unstructured Data Architecture for AI
Vector Lakebase: a unified, lake-native data foundation for AI workloads — and an answer to what happens after vector databases succeed.

Why and How to Migrate from Self-Hosted Milvus to Zilliz Cloud
A simple, step-by-step guide to migrating from Milvus to Zilliz Cloud. Learn both endpoint and backup methods for a smooth, scalable vector database migration.



