Поддержка нескольких типов индексов в Milvus
Milvus — это векторная база данных с открытым исходным кодом с передовыми возможностями для поиска по сходству и приложений ИИ. Одна из важнейших возможностей Milvus — поддержка различных типов индексов; индексы помогают оптимизировать запросы к данным и их извлечение.
Типы индексов
В настоящее время Milvus поддерживает восемь типов индексов:
- FLAT: FLAT лучше всего подходит для сценариев, в которых требуются идеально точные и полные результаты поиска (100% полнота) на небольшом наборе данных масштаба миллионов. FLAT не сжимает векторы и является единственным индексом, гарантирующим точные результаты поиска. Результаты FLAT могут служить точкой сравнения для результатов, полученных другими индексами с полнотой менее 100%.
- IVF_FLAT: IVF_FLAT — это индекс на основе квантования, лучше всего подходящий для сценариев, в которых требуется идеальный баланс между точностью и скоростью запросов (низкоразмерные данные с менее чем 100 000 записей). IVF_FLAT — это система, которая делит векторные данные на кластеры и возвращает результаты поиска по сходству на основе сравнений между целевым вводом и векторами в наиболее похожем(их) кластере(ах). IVS_FLAT резко сокращает время запроса с учетом количества опрашиваемых кластеров. Обратите внимание, что IVF_FLAT не выполняет сжатия, поэтому создаваемые им индексные файлы имеют примерно тот же размер, что и исходные необработанные неиндексированные векторные данные.
- IV_SQ8: IVF_SQ8 — это индекс на основе квантования, который лучше всего подходит для сценариев, требующих значительного сокращения потребления дисковой памяти, CPU и GPU в ситуациях, когда эти ресурсы ограничены. IV_SQ8 может достигать этого, преобразуя каждый FLOAT (4 байта) в UINT8 (1 байт) путем выполнения скалярного квантования. Индекс IV_SQ8 подходит для сценариев с низкоразмерными данными с менее чем 100 000 записей.
- HNSW Index: Hierarchical Navigable Small World (HNSW) — это индекс на основе графа, лучше всего подходящий для сценариев с высокими требованиями к эффективности поиска. Этот индекс создает древовидную структуру для индексирования векторов. Поэтому он полезен, когда набор данных огромен (большой набор данных со многими измерениями) и требуется быстрый поиск. Он строит многоуровневую навигационную структуру для изображения согласно определенным правилам. В этой структуре верхние уровни более разрежены, и расстояния между узлами больше; нижние уровни более плотные, и расстояния между узлами меньше. Поиск начинается с самого верхнего уровня, находит на этом уровне узел, ближайший к цели, а затем переходит на следующий уровень, чтобы начать другой поиск. После нескольких итераций он может быстро приблизиться к целевой позиции.
- IVF_PQ: IVF_PQ — это индекс на основе квантования, лучше всего подходящий для сценариев, в которых требуется высокая скорость запросов к высокоразмерным данным даже ценой точности. Он равномерно разлагает высокоразмерное векторное пространство на декартовы произведения низкоразмерных векторных пространств, затем квантует низкоразмерные векторные пространства. Продуктовое квантование вычисляет расстояния между целевым вектором и центром кластеризации каждого низкоразмерного пространства, снижая временную и пространственную сложность. Индексный файл IVF_PQ меньше (и менее точен), чем IVF_SQ8.
- ANNOY: ANNOY — это индекс на основе деревьев, лучше всего подходящий для сценариев, в которых требуется высокая полнота. Он удобен для наборов данных (менее 1 миллиона записей) с высокой размерностью (и при поиске похожих векторов).
- BIN_FLAT: Этот индекс подходит для низкоразмерных данных с менее чем 100 000 записей. Этот индекс аналогичен FLAT, за исключением того, что BIN_FLAT используется для бинарных эмбеддингов.
- BIN_IVF_FLAT: Этот индекс подходит для наборов высокоразмерных данных с менее чем 10 миллионами записей при поиске похожих векторов. Этот индекс аналогичен FLAT, за исключением того, что BIN_IVF_FLAT используется для бинарных эмбеддингов.
В заключение
Milvus поддерживает различные типы Index, которые помогают оптимизировать запросы и извлечение данных для разных сценариев использования. Выбор правильного типа Index может значительно улучшить производительность поиска в вашем приложении.
Если вы всё ещё определяете, какой тип Index использовать для вашего конкретного сценария, рекомендуется попробовать разные Indexes и сравнить их производительность. Milvus может обеспечить молниеносную производительность поиска для ваших AI-приложений при правильном типе Index и конфигурации.
Следующие шаги
- Скачайте Milvus и начните работу
- Узнайте больше о типах Index в Milvus
- Ознакомьтесь с бенчмарками Milvus в этом документе
Читать далее

What Is a Vector Lakebase?
A Vector Lakebase is a unified, lake-native data architecture for AI that combines vector-database-grade serving with open lake storage, reusable lake-level indexes, and a shared semantic layer.

Our Journey to 35K+ GitHub Stars: The Real Story of Building Milvus from Scratch
Join us in celebrating Milvus, the vector database that hit 35.5K stars on GitHub. Discover our story and how we’re making AI solutions easier for developers.

Building RAG Pipelines for Real-Time Data with Cloudera and Milvus
explore how Cloudera can be integrated with Milvus to effectively implement some of the key functionalities of RAG pipelines.



