Выбор службы Azure для поиска векторов
Векторный поиск — это метод поиска информации, хранящейся в базе данных в форме векторов. Векторы — это группы чисел, представляющих функции или характеристики мультимедиа, например текст или изображения. Векторы — это значительный прогресс по сравнению с традиционными методами поиска на основе ключевых слов. Они предлагают более быстрые, более точные результаты, понимая семантические связи в информации.
Azure предлагает несколько способов хранения и поиска векторных данных. Эта статья помогает архитекторам и разработчикам, которым необходимо понять и выбрать правильную службу Azure для поиска векторов для своего приложения.
В этой статье сравниваются следующие службы на основе возможностей поиска векторов:
- Поиск по искусственному интеллекту Azure
- Azure Cosmos DB for NoSQL
- Azure Cosmos DB для MongoDB (vCore)
- Azure Cosmos DB for PostgreSQL
- База данных Azure для PostgreSQL
- База данных SQL Azure
Архитекторы и разработчики должны сравнить доступные службы с точки зрения системных требований в выборе службы кандидата и в матрице возможностей.
Выбор службы кандидатов
Этот раздел поможет выбрать наиболее вероятные службы для ваших потребностей. Чтобы сузить выбор, начните с рассмотрения требований к системе.
Основные требования
При выборе того, следует ли использовать традиционное решение базы данных или azure AI служба , учитывайте свои требования и можете ли выполнять поиск в реальном времени или векторе в реальном времени для данных. Традиционная реляционная база данных или база данных NoSQL лучше всего подходит для вашего сценария, если вы часто изменяете значения в векторизованных полях и изменения должны быть доступны для поиска в режиме реального времени или практически в реальном времени. Аналогичным образом, использование существующей базы данных может быть лучшим решением для удовлетворения целевых показателей производительности. С другой стороны, если для рабочей нагрузки не требуется в режиме реального времени или почти в режиме реального времени возможность поиска векторов, и вы принимаете управление индексом векторов, поиск ИИ может быть убедительным выбором.
Если выбрать традиционное решение для базы данных, определенный тип службы базы данных, который вы решили использовать, в основном зависит от набора навыков вашей команды и баз данных, которые в настоящее время работают. Если вы уже используете определенный тип базы данных, например MongoDB, то использование такого же типа базы данных может быть самым простым решением для вашего сценария. Как показано в разделе матрицы возможностей, каждая служба базы данных имеет некоторые уникальные возможности и ограничения для поиска векторов. Просмотрите эти сведения, чтобы убедиться, что предпочтительный тип базы данных поддерживает необходимые функции.
Если проблемы с затратами являются фактором вождения, поддержание существующей структуры, скорее всего, лучше всего подходит для вашего сценария, так как внедрение новых служб или других экземпляров службы базы данных может добавить новые чистые затраты и сложность. Использование текущих баз данных для поиска векторов, скорее всего, влияет на затраты меньше, чем использование выделенной службы.
Если вы решили использовать традиционную базу данных вместо поиска ИИ, некоторые функции расширенного поиска по умолчанию недоступны. Например, если вы хотите выполнить повторную настройку или гибридный поиск, включите эту функцию с помощью Transact-SQL (T-SQL) или другого кода.
Матрица возможностей
В таблицах в этом разделе приведены основные различия в возможностях.
Функции уровня "Базовый"
Встроенная поддержка типов векторных данных, приблизительных ближайших индексов векторов (ANN), ограничений измерения векторов, нескольких полей векторов и нескольких векторных индексов иногда отличаются между службами. Для ваших требований к рабочей нагрузке могут потребоваться некоторые из этих конкретных функций. Основные векторные функции каждой службы Azure, как показано в следующей таблице.
Возможность | Azure Cosmos DB for PostgreSQL | Azure Cosmos DB for NoSQL | Azure Cosmos DB для MongoDB (vCore) | База данных Azure для PostgreSQL (Flex) | Поиск с использованием ИИ Azure | База данных SQL Azure |
---|---|---|---|---|---|---|
Встроенный векторный поиск | Да 1 | Да | Да 2 | Да 1 | Да 3 | Да 4 |
Тип векторных данных | Да | Да | Да | Да | Да | Нет |
Ограничения измерения 6 | 16 000 7 или 2000 | 5058 или 4096 | 2 000 | 16 000 7 или 2000 | 3072 | 1998 (предварительная версия)5 |
Несколько векторных полей | Да | Да | No | Да | Да | Да |
Несколько векторных индексов | Да | Да | No | Да | Да | Да |
- Pgvector поддерживает векторный поиск, который является расширением PostgreSQL.
- Использование векторного поиска по внедрению в Azure Cosmos DB для виртуальных ядер MongoDB
- Векторы в поиске ИИ Azure
- Собственный векторный поиск доступен с помощью предварительной версии База данных SQL Azure ранних версий внедрения
- Векторы могут храниться в столбце или переменной VARBINARY(8000).
- Внедрение моделей из OpenAI, 1536 для текстовых внедрения-ada-002 и text-embedding-3-small, а также 3072 для внедрения текста-3-большой. Для многомодальных моделей внедрения в Azure AI Vision 1024 для изображений и текста.
- Векторы могут иметь до 16 000 измерений. Но индекс с использованием IVFlat и HNSW поддерживает векторы с размером до 2000 измерений.
- Векторы, индексированные с типом неструктурированного индекса, могут быть не более 505 измерений. Векторы, индексированные с помощью типа индекса QuantizedFlat или DiskANN, могут быть не более 4096 измерений.
Методы поиска
Рабочие нагрузки часто требуют объединения векторного поиска с полнотекстовым поиском или даже гибридным поиском (полнотекстовый поиск или семантический поиск и векторный поиск). Сочетание гибридного поиска и повторного использования обеспечивает высокую точность для рабочих нагрузок. Вы можете вручную реализовать гибридный поиск и повторное выполнение с помощью собственного кода или рассмотреть, как хранилище векторов поддерживает это требование рабочей нагрузки.
Метод поиска | Azure Cosmos DB for PostgreSQL | Azure Cosmos DB for NoSQL | Azure Cosmos DB для MongoDB (vCore) | База данных Azure для PostgreSQL (Flex) | Поиск с использованием ИИ Azure | База данных SQL Azure |
---|---|---|---|---|---|---|
Полнотекстовый поиск | Да 1 | No | Да 2 | Да 1 | Да 3 | Да 4 |
Гибридный поиск | Да 5 | No | No | Да 5 | Да 6 | Да 7 |
Встроенное повторное выполнение | No | No | No | No | Да 8 | No |
- Поиск полнотекстового текста PostgreSQL
- Поиск и запрос с текстовыми индексами в Azure Cosmos DB для виртуальных ядер MongoDB
- Начало работы с полнотекстовый поиск
- Векторные данные в SQL Server
- Не предоставляется в качестве функции первого класса, но предоставляются примеры кодов .
- Гибридный поиск (сочетание полнотекстового поиска, векторного поиска и семантического ранжирования) предоставляется в качестве функции первого класса.
- Пример гибридного поиска для базы данных SQL Azure и SQL Server.
- Повторное ранжирование называется семантической ранжированием — это функция первого класса для повторного поиска полнотекстового поиска и (или) векторного поиска.
Алгоритмы индексирования векторных данных
Индексирование векторных данных — это возможность эффективно хранить и извлекать векторы. Эта возможность важна, так как индексирование влияет на скорость и точность поиска сходства и ближайших соседей запросов к источникам данных.
Индексы обычно основаны на исчерпывающих к-ближайших соседах (Ek-NN) или алгоритме ANN. Ek-NN выполняет исчерпывающий поиск по всем точкам данных по одному и возвращает точные ближайшие соседи K . Ek-NN работает в миллисекундах с небольшим объемом данных, но может привести к задержке для больших объемов данных.
DiskANN, HNSW и IVFlat — это индексы алгоритмов ANN. Выбор соответствующей стратегии индексирования включает тщательное рассмотрение различных факторов, таких как характер набора данных, конкретные требования запросов и доступные ресурсы. DiskANN может адаптироваться к изменению набора данных и сохранять вычислительные ресурсы. HNSW в системах, требующих быстрых ответов запросов, и может адаптироваться к изменениям в наборе данных. IVFlat действует в средах, где аппаратные ресурсы ограничены, или объемы запросов не высоки.
Узнайте, какие типы индексирования векторных данных предоставляются в следующей таблице.
Подход к индексации | Azure Cosmos DB for PostgreSQL | Azure Cosmos DB for NoSQL | Azure Cosmos DB для MongoDB (vCore) | База данных Azure для PostgreSQL (Flex) | Поиск с использованием ИИ Azure | База данных SQL Azure |
---|---|---|---|---|---|---|
DiskANN | No | Да | No | No | No | No |
Исчерпывающий K-ближайший сосед (EKNN) | Да | Да | Да | Да | Да | Да |
Иерархический навигации небольшой мир (HNSW) | Да | Нет | Да (предварительная версия)1 | Да | Да | Нет |
IVFflat | Да | No | Да | Да | No | No |
Другие | - | flat, quantizedFlat2 | Ограничение поля вектора 3 векторного индекса 4 |
- | - | Внешние библиотеки доступны5 |
- Azure Cosmos DB для MongoDB — обзор векторного поиска
- Политики индексирования векторов
- Доступно только одно поле вектора для каждого контейнера.
- Доступно только один векторный индекс для каждого контейнера.
- Индекс можно создать с помощью внешних библиотек, таких как Scikit Learn или FAISS
Возможности вычисления сходства и расстояния
Существуют методы вычисления подобия косинуса, dot product и Евклидеан расстояния для поиска векторов. Эти методы используются для вычисления сходства между двумя векторами или расстоянием между двумя векторами.
Предварительный анализ данных дает преимущества как от метрик, так и от евклидеанских расстояний, что позволяет извлекать различные аналитические сведения о структуре данных, в то время как классификация текста, как правило, лучше выполняется при расстояниях Евклиида. Извлечение наиболее похожих текстов с заданным текстом обычно лучше работает с косинусом сходства.
Внедрение Службы OpenAI Azure зависит от косинуса сходства между документами и запросом.
Встроенное вычисление сравнения векторов | Azure Cosmos DB for PostgreSQL | Azure Cosmos DB for NoSQL | Azure Cosmos DB для MongoDB (vCore) | База данных Azure для PostgreSQL (Flex) | Поиск с использованием ИИ Azure | База данных 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 for PostgreSQL | Azure Cosmos DB for NoSQL | Azure Cosmos DB для MongoDB (vCore) | База данных Azure для PostgreSQL (Flex) | Поиск с использованием ИИ Azure | База данных SQL Azure |
---|---|---|---|---|---|---|
Служба Azure OpenAI— добавление собственных данных | No | No | Да 1 | No | Да 2 | No |
Внедрение вектора с помощью Azure OpenAI | No | No | No | Да 3 | Да 4 | Да 5 |
Интеграция с потоком запросов | No | No | No | No | Да 6 | No |
Интеграция с семантическим ядром | Да 7 | Да8 | Да9 | Да 7 | Да 10 | Да 11 |
- Azure Cosmos DB для MongoDB (vCore) поддерживается в качестве источника данных для Azure OpenAI в данных.
- Поиск ИИ Azure поддерживается в качестве источника данных для Azure OpenAI в ваших данных.
- Доступно расширение ИИ Azure (предварительная версия ).
- Поиск по искусственному интеллекту Azure предоставляет навык для векторизации фрагментированного текста.
- Для развертывания модели внедрения можно создать хранимую процедуру.
- Поддерживается в качестве векторной базы данных в средстве подстановки векторной базы данных.
- Поддерживается как соединитель памяти и соединитель векторной базы данных (C#).
- Поддерживается как соединитель памяти и соединитель векторной базы данных (C#, Python).
- Поддерживается как соединитель векторной базы данных (C#, Python).
- Поддерживается как соединитель памяти и соединитель векторной базы данных (C#, Python).
- Поддерживается как соединитель памяти.
Соавторы
Эта статья поддерживается корпорацией Майкрософт. Первоначально он был написан следующими участниками.
Основные авторы:
- Кейта Onabuta | Старший инженер клиента
- Гэри Ли | Старший инженер клиента
Другие участники:
- Крути Мехта | Инженер клиента
Чтобы просмотреть недоступные профили LinkedIn, войдите в LinkedIn.
Следующий шаг
Реализуйте интеллектуальный анализ знаний с помощью поиска ИИ Azure. В этой схеме обучения рассматривается использование службы "Поиск ИИ Azure".
Связанные ресурсы
- Общие сведения о моделях хранилища данных
- Варианты технологий для решений Azure
- Объявление EAP для поддержки векторов в База данных SQL Azure
- Поддержка машинного вектора в Azure SQL и SQL Server
- Векторная база данных в Azure Cosmos DB
- Знакомство с возможностями векторной базы данных в Azure Cosmos DB для NoSQL
- Поиск векторов в Azure Cosmos DB для NoSQL
- Примеры базы данных векторов Azure