Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Векторный поиск — это метод поиска информации, хранящейся в базе данных в форме векторов. Векторы — это группы чисел, представляющих функции или характеристики мультимедиа, например текст или изображения. Векторы — это значительный прогресс по сравнению с традиционными методами поиска на основе ключевых слов. Они обеспечивают более быстрые, более точные результаты путем записи и сравнения семантических связей в информации.
Azure предоставляет несколько способов хранения и поиска векторных данных. Эта статья помогает архитекторам и разработчикам, которым необходимо понять и выбрать правильную службу Azure для поиска векторов для своего приложения.
В этой статье сравниваются следующие службы на основе возможностей поиска векторов:
- Поиск по искусственному интеллекту Azure
- Azure Cosmos DB для NoSQL
- Azure DocumentDB
- Azure Cosmos DB для PostgreSQL
- База данных Azure для PostgreSQL
- База данных SQL Azure
Архитекторы и разработчики должны сравнить доступные службы с точки зрения системных требований в выборе службы кандидата и в матрице возможностей.
Выберите службу кандидатов
Этот раздел поможет выбрать наиболее вероятные службы для ваших потребностей. Чтобы сузить выбор, начните с рассмотрения требований к системе.
Основные требования
Чтобы решить, использовать ли традиционное решение для базы данных или поиск Azure AI, оцените свои требования и возможность выполнения поиска в реальном времени или векторного поиска на ваших данных. Традиционная реляционная база данных или база данных NoSQL лучше всего подходит для вашего сценария, если вы часто изменяете значения в векторизованных полях и изменения должны быть доступны для поиска в режиме реального времени или практически в реальном времени. Аналогичным образом лучшее решение для удовлетворения целевого показателя производительности может быть использование существующей базы данных. Однако если ваша рабочая нагрузка не требует поиска векторов в реальном или почти реальном времени, и вы можете управлять их индексом, поиск с ИИ может стать хорошим выбором.
При выборе традиционного решения для базы данных конкретный тип службы баз данных, который вы решили использовать, в основном зависит от набора навыков вашей команды и баз данных, которые в настоящее время работают. Если вы уже используете определенный тип базы данных, например MongoDB, то использование такого же типа базы данных может быть самым простым решением для вашего сценария. Как показано в разделе матрицы возможностей, каждая служба базы данных имеет некоторые уникальные возможности и ограничения для поиска векторов. Просмотрите эти сведения, чтобы убедиться, что предпочтительный тип базы данных поддерживает необходимые функции.
Если проблемы с затратами являются ведущим фактором, сохранение существующего дизайна, скорее всего, лучше всего подходит для вашего сценария, так как внедрение новых служб или других экземпляров службы базы данных может увеличить чистые затраты и усложнить ситуацию. Использование текущих баз данных для поиска векторов, скорее всего, влияет на затраты меньше, чем использование выделенной службы.
Если вы решили использовать традиционную базу данных вместо поиска ИИ, некоторые функции расширенного поиска по умолчанию недоступны. Например, если вы хотите выполнить переранжирование или гибридный поиск, включите эту функцию с помощью Transact-SQL (T-SQL) или другого кодирования.
Матрица возможностей
В таблицах в этом разделе приведены основные различия в возможностях.
Функции уровня "Базовый"
Встроенная поддержка типов векторных данных, приблизительные ближайшие индексы векторов (ANN), ограничения измерения векторов, несколько полей векторов и несколько векторных индексов иногда отличаются между службами. Ваша рабочая нагрузка может зависеть от некоторых из этих конкретных функций. Поймите основные векторные характеристики каждой службы Azure, которые показаны в следующей таблице.
| Возможность | Служба Azure Cosmos DB для PostgreSQL | База данных Azure Cosmos DB для NoSQL | Azure DocumentDB | Гибкий сервер Базы данных Azure для PostgreSQL | Поиск ИИ | База данных SQL Azure |
|---|---|---|---|---|---|---|
| Встроенный векторный поиск | Да1 | Да | Да2 | Да1 | Да3 | Да |
| Тип векторных данных | Да | Да | Да | Да | Да | Да8 |
| Ограничения измерения5 | 16 0006 или 2 000 | 5057 или 4096 | 16,000 | 16 0006 или 2 000 | 4,096 | 1 998 (предварительная версия)4 |
| Несколько векторных полей | Да | Да | Нет | Да | Да | Да |
| Несколько векторных индексов | Да | Да | Нет | Да | Да | Да |
-
Поддержка векторного поиска предоставляется
pgvectorрасширением PostgreSQL. - Векторный поиск по внедрениям поддерживается в Azure DocumentDB.
- Поиск ИИ поддерживает использование векторов.
-
Векторы могут храниться в столбце или переменной
VARBINARY(8000)в базе данных SQL. - Модели встраивания от OpenAI включают 1536 измерений для text-embedding-ada-002 и text-embedding-3-small, а также 3072 измерения для text-embedding-3-large. Модели многомодального внедрения в Azure AI Vision имеют 1024 измерения для изображений и текста.
- Векторы могут иметь до 16 000 измерений. Однако индексирование с помощью инвертированных плоских файлов (IVFFlat) и иерархически-навигационной структуры малого мира (HNSW) поддерживает векторы с максимальным количеством 2000 измерений.
- Векторы, индексированные с помощью типа неструктурированного индекса, могут иметь не более 505 измерений. Векторы, индексированные с помощью типа индекса quantizedFlat или DiskANN, могут иметь не более 4096 измерений.
- База данных SQL поддерживает тип векторных данных.
Методы поиска
Рабочие нагрузки часто требуют объединения векторного поиска с полнотекстовым поиском или даже гибридным поиском, который представляет собой полнотекстовый поиск или семантический поиск, а также векторный поиск. Сочетание гибридного поиска и пересортировки обеспечивает высокую точность для рабочих задач. Вы можете вручную реализовать гибридный поиск и ранжирование с помощью собственного кода или подумать о том, как ваше хранилище векторов поддерживает это требование нагрузки рабочих процессов.
| Метод поиска | Служба Azure Cosmos DB для PostgreSQL | База данных Azure Cosmos DB для NoSQL | Azure DocumentDB | Гибкий сервер Базы данных Azure для PostgreSQL | Поиск ИИ | База данных SQL Azure |
|---|---|---|---|---|---|---|
| Полнотекстовый поиск | Да1 | Да9 | Да2 | Да1 | Да3 | Да4 |
| Гибридный поиск | Да5 | Да11 | Да6 | Да5 | Да7 | Да8 |
| Встроенное переподборка результатов | Нет | Да10 | Нет | Нет | Да9 | Нет |
- PostgreSQL поддерживает полнотекстовый поиск.
- Azure DocumentDB поддерживает поиск и запрос с помощью текстовых индексов.
- Полнотекстовый поиск поддерживается в SQL Server.
- SQL Server поддерживает векторные данные.
- Гибридный поиск не предоставляется в качестве функции первого класса, но доступны примеры кодов.
- Гибридный поиск, объединяющий полнотекстовый и векторный поиск с взаимной комбинацией рангов (RRF), изначально поддерживается в Azure DocumentDB.
- Гибридный поиск, который объединяет полнотекстовый поиск, векторный поиск и семантический ранжирование, предоставляется в качестве функции первого класса в службе "Поиск ИИ Azure".
- Доступен пример гибридного поиска базы данных SQL Azure и SQL Server.
- Семантическое ранжирование — это функция первого класса, которая переупорядочивает результаты полнотекстового и векторного поиска.
- Cosmos DB NoSQL поддерживает полнотекстовый поиск с полнотекстовой оценкой.
- Cosmos DB NoSQL поддерживает гибридный поиск.
Алгоритмы индексирования векторных данных
Индексирование векторных данных — это возможность эффективно хранить и извлекать векторы. Эта возможность важна, так как индексирование влияет на скорость и точность поиска сходства и запросов ближайших соседей в источниках данных.
Индексы обычно основаны на исчерпывающем алгоритме k-ближайших соседей (Ek-NN) или алгоритме искусственных нейронных сетей (ANN). Ek-NN выполняет исчерпывающий поиск по всем точкам данных и возвращает точные k ближайших соседей. Ek-NN работает с высокой скоростью на небольших объемах данных, но может вызывать задержки при обработке больших объемов данных.
DiskANN, HNSW и IVFlat — это индексы алгоритмов ANN. Выбор соответствующей стратегии индексирования требует тщательного рассмотрения различных факторов, таких как характер набора данных, конкретные требования запросов и доступные ресурсы. DiskANN может адаптироваться к изменению набора данных и сохранять вычислительные ресурсы. HNSW превосходно работает в системах, которые требуют быстрых ответов на запросы и могут адаптироваться к изменениям в наборе данных. IVFlat эффективен в средах, где аппаратные ресурсы ограничены или объемы запросов не высоки.
В следующей таблице показаны указанные типы индексирования векторных данных.
| Подход к индексации | Служба Azure Cosmos DB для PostgreSQL | База данных Azure Cosmos DB для NoSQL | Azure DocumentDB | Гибкий сервер Базы данных Azure для PostgreSQL | Поиск ИИ | База данных SQL Azure |
|---|---|---|---|---|---|---|
| DiskANN | Да | Да | Да2 | Да1 | Нет | Да3 |
| E-kNN | Да | Да | Да | Да | Да | Да |
| HNSW | Да | Нет | Да2 | Да | Да | Нет |
| IVFFlat | Да | Нет | Да | Да | Нет | Нет |
| Другие | - | Плоская, квантизованнаяПлоская4 | Ограничение векторного поля5 Ограничение векторного индекса6 |
- | - | Внешние библиотеки доступны7 |
- Дополнительные сведения см. в разделе DiskANN для гибкого сервера Базы данных Azure для PostgreSQL.
- Дополнительные сведения см. в статье Azure DocumentDB — обзор поиска векторов.
- Индексирование векторов на основе diskANN в настоящее время доступно в частной предварительной версии для SQL Azure.
- Дополнительные сведения см. в политиках индексирования векторов.
- Для каждого контейнера доступно только одно поле вектора.
- Для каждого контейнера доступно только один векторный индекс.
- Индекс можно создать с помощью внешних библиотек, таких как Scikit Learn или FAISS.
Возможности вычисления сходства и расстояния
Существуют методы вычисления косинуса, точечного продукта и эвклиданного расстояния для поиска векторов. Эти методы используются для вычисления сходства между двумя векторами или расстоянием между двумя векторами.
Предварительный анализ данных дает преимущества как от метрик, так и от евклидеанских расстояний, что позволяет извлекать различные аналитические сведения о структуре данных. Классификация текста обычно лучше выполняется при расстояниях Евклиида. Извлечение наиболее похожих текстов для заданного текста обычно лучше работает с косинусной мерой сходства.
Встраивания Azure OpenAI используют косинусное сходство для вычисления степени схожести между документами и запросом.
| Встроенное вычисление сравнения векторов | Служба Azure Cosmos DB для PostgreSQL | База данных Azure Cosmos DB для NoSQL | Azure DocumentDB | Гибкий сервер Базы данных Azure для PostgreSQL | Поиск ИИ | База данных SQL Azure |
|---|---|---|---|---|---|---|
| Косинусное сходство | Да | Да1 | Да | Да | Да | Да2 |
| Евклидово расстояние (L2-норма) | Да | Да1 | Да | Да | Да | Да2 |
| Dot product | Да | Да1 | Да | Да | Да | Да2 |
- Дополнительные сведения см. в разделе вычисления векторного расстояния для Azure Cosmos DB для NoSQL.
- Дополнительные сведения см. в примерах вычислений расстояния для базы данных SQL Azure и SQL Server.
Интеграция с Azure OpenAI и другими компонентами
При реализации векторного поиска можно также рассмотреть возможность связывания с другими компонентами Майкрософт. Например, Azure OpenAI помогает создавать векторы для данных и входных запросов для поиска сходства векторов.
| Возможность | Служба Azure Cosmos DB для PostgreSQL | База данных Azure Cosmos DB для NoSQL | Azure DocumentDB | Гибкий сервер Базы данных Azure для PostgreSQL | Поиск ИИ | База данных SQL Azure |
|---|---|---|---|---|---|---|
| Azure OpenAI — добавление собственных данных | Нет | Нет | Да1 | Нет | Да2 | Нет |
| Внедрение вектора с помощью Azure OpenAI | Нет | Нет | Нет | Да3 | Да4 | Да5 |
| Интеграция с семантическим ядром | Да6 | Да7 | Да8 | Да6 | Да9 | Да10 |
- Azure DocumentDB поддерживается в качестве источника данных для Azure OpenAI в ваших данных.
- Поиск ИИ поддерживается в качестве источника данных для Azure OpenAI на ваших данных.
- Доступно расширение ИИ Azure .
- Поиск ИИ предоставляет навык для векторизации фрагментированного текста.
- Вы можете создать хранимую процедуру для развертывания вашей встраиваемой модели.
- Эта служба поддерживается как соединителем памяти, так и соединителем векторной базы данных. Дополнительные сведения см. в документации по C#.
- Эта служба поддерживается как соединителем памяти, так и соединителем векторной базы данных. Документация доступна как для C# , так и для Python.
- Эта служба поддерживается как соединитель векторной базы данных. Документация доступна как для C# , так и для Python.
- Эта служба поддерживается как соединителем памяти, так и соединителем векторной базы данных. Документация доступна как для C# , так и для Python.
- Эта служба поддерживается как соединитель памяти.
Соавторы
Корпорация Майкрософт поддерживает эту статью. Следующие авторы написали эту статью.
Основные авторы:
- Кейта Onabuta | Старший инженер по решениям
- Yu Saito | Инженер решений
Чтобы просмотреть неопубликованные профили LinkedIn, войдите в LinkedIn.
Дальнейшие шаги
- Реализация интеллектуального анализа знаний с помощью поиска ИИ
- Интеллектуальное приложение и ИИ
- Поиск сходства векторов с помощью SQL Azure и Azure OpenAI
- Поддержка собственных векторов в Azure SQL и SQL Server
- Векторная база данных в Azure Cosmos DB
- Примеры базы данных векторов Azure