Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Векторный поиск — это метод поиска информации, хранящейся в базе данных в форме векторов. Векторы — это группы чисел, представляющих функции или характеристики мультимедиа, например текст или изображения. Векторы — это значительный прогресс по сравнению с традиционными методами поиска на основе ключевых слов. Они предлагают более быстрые, более точные результаты, понимая семантические связи в информации.
Azure предлагает несколько способов хранения и поиска векторных данных. Эта статья помогает архитекторам и разработчикам, которым необходимо понять и выбрать правильную службу Azure для поиска векторов для своего приложения.
В этой статье сравниваются следующие службы на основе возможностей поиска векторов:
- Поиск по искусственному интеллекту Azure
- Azure Cosmos DB для NoSQL
- Azure Cosmos DB для MongoDB (vCore)
- 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 Cosmos DB для MongoDB (vCore) | База данных Azure для PostgreSQL (Flex) | Поиск с использованием ИИ Azure | База данных SQL Azure |
---|---|---|---|---|---|---|
Встроенный векторный поиск | Да 1 | Да | Да 2 | Да 1 | Да 3 | Да 4 |
Тип векторных данных | Да | Да | Да | Да | Да | Да 9 |
Пределы измерений 6 | 16 000 7 или 2000 | 5058 или 4096 | 2 000 | 16 000 7 или 2000 | 3072 | 1998 (предварительная версия)5 |
Несколько векторных полей | Да | Да | Нет | Да | Да | Да |
Несколько векторных индексов | Да | Да | Нет | Да | Да | Да |
- Pgvector поддерживает векторный поиск, который является расширением PostgreSQL.
- Используйте векторный поиск по векторным представлениям в Azure Cosmos DB для MongoDB vCore
- Векторы в поиске ИИ Azure
- Собственный векторный поиск доступен с помощью базы данных SQL Azure предварительный просмотр для ранних пользователей
- Векторы могут храниться в столбце или переменной VARBINARY(8000).
- Модели встраивания из 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 Cosmos DB для MongoDB (vCore) | База данных Azure для PostgreSQL (Flex) | Поиск с использованием ИИ Azure | База данных SQL Azure |
---|---|---|---|---|---|---|
Полнотекстовый поиск | Да 1 | Да 9 | Да 2 | Да 1 | Да 3 | Да 4 |
Гибридный поиск | Да 5 | Да 10 | Нет | Да 5 | Да 6 | Да 7 |
Встроенное переподборка результатов | Нет | Да 9 | Нет | Нет | Да 8 | Нет |
- Поиск полнотекстового текста PostgreSQL
- Поиск и запрос с текстовыми индексами в Azure Cosmos DB для виртуальных ядер MongoDB
- Начало работы с полнотекстовым поиском
- Векторные данные в SQL Server
- Не предоставляется в качестве функции первого класса, но предоставляются примеры кодов .
- Гибридный поиск (сочетание полнотекстового поиска, векторного поиска и семантического ранжирования) предоставляется в качестве функции первого класса.
- Пример гибридного поиска для базы данных 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 Cosmos DB для MongoDB (vCore) | База данных Azure для PostgreSQL (Flex) | Поиск с использованием ИИ Azure | База данных SQL Azure |
---|---|---|---|---|---|---|
DiskANN | Да | Да | Да (предварительная версия) 2 | Да 1 | Нет | Нет |
Исчерпывающий K-ближайший сосед (EKNN) | Да | Да | Да | Да | Да | Да |
Иерархический навигационный малый мир (HNSW) | Да | Нет | Да 2 | Да | Да | Нет |
IVFflat | Да | Нет | Да | Да | Нет | Нет |
Другие | - | плоский, квантованныйПлоский3 | Ограничение поля вектора 4 Ограничение индекса вектора 5 |
- | - | Внешние библиотеки доступны6 |
- DiskANN для Базы данных Azure для PostgreSQL — гибкий сервер
- Azure Cosmos DB для MongoDB — обзор векторного поиска
- Политики индексирования векторов
- Доступно только одно поле вектора для каждого контейнера.
- Доступно только один векторный индекс для каждого контейнера.
- Индекс можно создать с помощью внешних библиотек, таких как Scikit Learn или FAISS
Возможности вычисления сходства и расстояния
Существуют методы вычисления косинусного подобия, скалярного произведения и Евклидова расстояния для поиска векторов. Эти методы используются для вычисления сходства между двумя векторами или расстоянием между двумя векторами.
Предварительный анализ данных дает преимущества как от метрик, так и от евклидеанских расстояний, что позволяет извлекать различные аналитические сведения о структуре данных, в то время как классификация текста, как правило, лучше выполняется при расстояниях Евклиида. Извлечение наиболее похожих текстов для заданного текста обычно лучше работает с косинусной мерой сходства.
Эмбединги в Службе OpenAI Azure используют косинусное сходство для вычисления степени схожести между документами и запросом.
Встроенное вычисление сравнения векторов | Служба Azure Cosmos DB для PostgreSQL | База данных Azure Cosmos DB для 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 для PostgreSQL | База данных Azure Cosmos DB для NoSQL | Azure Cosmos DB для MongoDB (vCore) | База данных Azure для PostgreSQL (Flex) | Поиск с использованием ИИ Azure | База данных SQL Azure |
---|---|---|---|---|---|---|
Служба Azure OpenAI— добавление собственных данных | Нет | Нет | Да 1 | Нет | Да 2 | Нет |
Внедрение вектора с помощью Azure OpenAI | Нет | Нет | Нет | Да 3 | Да 4 | Да 5 |
Интеграция с потоком запросов | Нет | Нет | Нет | Нет | Да 6 | Нет |
Интеграция с семантическим ядром | Да 7 | Да8 | Да9 | Да 7 | Да 10 | Да 11 |
- Azure Cosmos DB для MongoDB (vCore) поддерживается в качестве источника данных для Azure OpenAI на Ваших данных.
- Поиск ИИ Azure поддерживается в качестве источника данных для Azure OpenAI в ваших данных.
- Доступно расширение ИИ Azure (предварительная версия ).
- Поиск по искусственному интеллекту Azure предоставляет навык для векторизации фрагментированного текста.
- Вы можете создать хранимую процедуру для развертывания вашей встраиваемой модели.
- Поддерживается в качестве векторной базы данных в инструменте Vector DB Lookup.
- Поддерживается как соединитель памяти и соединитель векторной базы данных (C#).
- Поддерживается как соединитель памяти и соединитель векторной базы данных (C#, Python).
- Поддерживается как соединитель векторной базы данных (C#, Python).
- Поддерживается как соединитель памяти и соединитель векторной базы данных (C#, Python).
- Поддерживается как соединитель памяти.
Соавторы
Эта статья поддерживается корпорацией Майкрософт. Первоначально он был написан следующими участниками.
Основные авторы:
- Кейта Onabuta | Старший инженер клиента
- Гэри Ли | Старший инженер клиента
Другие участники:
- Крути Мехта | Инженер клиента
Чтобы просмотреть недоступные профили LinkedIn, войдите в LinkedIn.
Следующий шаг
Реализуйте интеллектуальный анализ знаний с помощью поиска ИИ Azure. В этой схеме обучения рассматривается использование службы "Поиск ИИ Azure".
Связанные ресурсы
- Общие сведения о моделях хранилища данных
- Варианты технологий для решений Azure
- Интеллектуальные приложения и ИИ
- Поиск векторного сходства с использованием Azure SQL & Azure OpenAI
- Поддержка машинного вектора в Azure SQL и SQL Server
- Векторная база данных в Azure Cosmos DB
- Поиск векторов в Azure Cosmos DB для NoSQL
- Примеры базы данных векторов Azure