Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Векторный поиск — это метод поиска информации, хранящейся в базе данных в форме векторов. Векторы — это группы чисел, представляющих функции или характеристики мультимедиа, например текст или изображения. Векторы — это значительный прогресс по сравнению с традиционными методами поиска на основе ключевых слов. Они обеспечивают более быстрые, более точные результаты путем записи и сравнения семантических связей в информации.
Azure предоставляет несколько способов хранения и поиска векторных данных. Эта статья помогает архитекторам и разработчикам, которым необходимо понять и выбрать правильную службу Azure для поиска векторов для своего приложения.
В этой статье сравниваются следующие службы на основе возможностей поиска векторов:
- Поиск по искусственному интеллекту Azure
- Azure Cosmos DB для NoSQL
- Azure DocumentDB
- Azure Cosmos DB для PostgreSQL
- База данных Azure для PostgreSQL
- Управляемый Azure Redis
- База данных SQL Azure
Архитекторы и разработчики должны сравнить доступные службы с точки зрения системных требований в выборе службы кандидата и в матрице возможностей.
Выберите службу кандидатов
Этот раздел поможет выбрать наиболее вероятные службы для ваших потребностей. Чтобы сузить выбор, начните с рассмотрения требований к системе.
Основные требования
Чтобы решить, использовать ли традиционное решение для базы данных или поиск Azure AI, оцените свои требования и возможность выполнения поиска в реальном времени или векторного поиска на ваших данных. Традиционная реляционная база данных или база данных NoSQL лучше всего подходит для вашего сценария, если вы часто изменяете значения в векторизованных полях и изменения должны быть доступны для поиска в режиме реального времени или практически в реальном времени. Аналогичным образом лучшее решение для удовлетворения целевого показателя производительности может быть использование существующей базы данных. Однако если ваша рабочая нагрузка не требует поиска векторов в реальном или почти реальном времени, и вы можете управлять их индексом, поиск с ИИ может стать хорошим выбором.
При выборе традиционного решения для базы данных конкретный тип службы баз данных, который вы решили использовать, в основном зависит от набора навыков вашей команды и баз данных, которые в настоящее время работают. Если вы уже используете определенный тип базы данных, например MongoDB или Redis, то использование такого же типа базы данных может быть самым простым решением для вашего сценария. Управляемый Redis Azure особенно подходит, если требуется супернизкая задержка для векторного поиска в памяти или когда Redis уже развернут для кэширования или управления сеансами. Как показано в разделе матрицы возможностей, каждая служба базы данных имеет некоторые уникальные возможности и ограничения для поиска векторов. Просмотрите эти сведения, чтобы убедиться, что предпочтительный тип базы данных поддерживает необходимые функции.
Если проблемы с затратами являются ведущим фактором, сохранение существующего дизайна, скорее всего, лучше всего подходит для вашего сценария, так как внедрение новых служб или других экземпляров службы базы данных может увеличить чистые затраты и усложнить ситуацию. Использование текущих баз данных для поиска векторов, скорее всего, влияет на затраты меньше, чем использование выделенной службы.
Если вы решили использовать традиционную базу данных вместо поиска ИИ, некоторые функции расширенного поиска по умолчанию недоступны. Например, если вы хотите выполнить переранжирование или гибридный поиск, включите эту функцию с помощью Transact-SQL (T-SQL) или другого кодирования.
Матрица возможностей
В таблицах в этом разделе приведены основные различия в возможностях.
Функции уровня "Базовый"
Встроенная поддержка типов векторных данных, приблизительные ближайшие индексы векторов (ANN), ограничения измерения векторов, несколько полей векторов и несколько векторных индексов иногда отличаются между службами. Ваша рабочая нагрузка может зависеть от некоторых из этих конкретных функций. Поймите основные векторные характеристики каждой службы Azure, которые показаны в следующей таблице.
| Возможность | Служба Azure Cosmos DB для PostgreSQL | База данных Azure Cosmos DB для NoSQL | Azure DocumentDB | Гибкий сервер Базы данных Azure для PostgreSQL | Управляемый Redis в Azure | Поиск ИИ | База данных SQL Azure |
|---|---|---|---|---|---|---|---|
| Встроенный векторный поиск | Да1 | Да | Да2 | Да1 | Да9 | Да3 | Да |
| Тип векторных данных | Да | Да | Да | Да | Да | Да | Да8 |
| Ограничения измерения5 | 16 0006 или 2 000 | 5057 или 4096 | 16,000 | 16 0006 или 2 000 | 32,768 | 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 Vision в Foundry Tools имеется 1024 измерения как для изображений, так и для текста.
- Векторы могут иметь до 16 000 измерений. Однако индексирование с помощью инвертированных плоских файлов (IVFFlat) и иерархически-навигационной структуры малого мира (HNSW) поддерживает векторы с максимальным количеством 2000 измерений.
- Векторы, индексированные с помощью типа неструктурированного индекса, могут иметь не более 505 измерений. Векторы, индексированные с помощью типа индекса quantizedFlat или DiskANN, могут иметь не более 4096 измерений.
- База данных SQL поддерживает тип векторных данных.
- Векторный поиск предоставляется модулем RediSearch в Управляемом Redis Azure.
Методы поиска
Рабочие нагрузки часто требуют объединения векторного поиска с полнотекстовым поиском или даже гибридным поиском, который представляет собой полнотекстовый поиск или семантический поиск, а также векторный поиск. Сочетание гибридного поиска и пересортировки обеспечивает высокую точность для рабочих задач. Вы можете вручную реализовать гибридный поиск и ранжирование с помощью собственного кода или подумать о том, как ваше хранилище векторов поддерживает это требование нагрузки рабочих процессов.
| Метод поиска | Служба Azure Cosmos DB для PostgreSQL | База данных Azure Cosmos DB для NoSQL | Azure DocumentDB | Гибкий сервер Базы данных Azure для PostgreSQL | Управляемый Redis в Azure | Поиск ИИ | База данных SQL Azure |
|---|---|---|---|---|---|---|---|
| Полнотекстовый поиск | Да1 | Да9 | Да2 | Да1 | Да12 | Да3 | Да4 |
| Гибридный поиск | Да5 | Да11 | Да6 | Да5 | Да13 | Да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 поддерживает гибридный поиск.
- Управляемый Redis Azure поддерживает полнотекстовый поиск по модулю RediSearch, включая маркеризацию текста, стебливание и ранжирование.
- Управляемый Redis Azure поддерживает гибридный поиск путем объединения поиска сходства векторов с фильтрацией атрибутов по тексту, числовым, тегам и географическим полям.
Алгоритмы индексирования векторных данных
Индексирование векторных данных — это возможность эффективно хранить и извлекать векторы. Эта возможность важна, так как индексирование влияет на скорость и точность поиска сходства и запросов ближайших соседей в источниках данных.
Индексы обычно основаны на исчерпывающем алгоритме 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 | Управляемый Redis в Azure | Поиск ИИ | База данных SQL Azure |
|---|---|---|---|---|---|---|---|
| DiskANN | Да | Да | Да2 | Да1 | Нет | Нет | Да3 |
| E-kNN | Да | Да | Да | Да | Да8 | Да | Да |
| HNSW | Да | Нет | Да2 | Да | Да9 | Да | Нет |
| IVFFlat | Да | Нет | Да | Да | Нет | Нет | Нет |
| Другие | - | Плоская, квантизованнаяПлоская4 | Ограничение векторного поля5 Ограничение векторного индекса6 |
- | - | - | Внешние библиотеки доступны7 |
- Дополнительные сведения см. в разделе DiskANN для гибкого сервера Базы данных Azure для PostgreSQL.
- Дополнительные сведения см. в статье Azure DocumentDB — обзор поиска векторов.
- Индексирование векторов на основе diskANN в настоящее время доступно в частной предварительной версии для SQL Azure.
- Дополнительные сведения см. в политиках индексирования векторов.
- Для каждого контейнера доступно только одно поле вектора.
- Для каждого контейнера доступно только один векторный индекс.
- Индекс можно создать с помощью внешних библиотек, таких как Scikit Learn или FAISS.
- Управляемый Redis Azure поддерживает исчерпывающий поиск k-ближайших соседей с помощью типа индекса FLAT (грубая сила).
- В Azure Managed Redis поддерживается HNSW для поиска приблизительных ближайших соседей. Дополнительные сведения см. в разделе "Поиск сходства векторов".
Возможности вычисления сходства и расстояния
Существуют методы вычисления косинуса, точечного продукта и эвклиданного расстояния для поиска векторов. Эти методы используются для вычисления сходства между двумя векторами или расстоянием между двумя векторами.
Предварительный анализ данных дает преимущества как от метрик, так и от евклидеанских расстояний, что позволяет извлекать различные аналитические сведения о структуре данных. Классификация текста обычно лучше выполняется при расстояниях Евклиида. Извлечение наиболее похожих текстов для заданного текста обычно лучше работает с косинусной мерой сходства.
Встраивания Azure OpenAI используют косинусное сходство для вычисления степени схожести между документами и запросом.
| Встроенное вычисление сравнения векторов | Служба Azure Cosmos DB для PostgreSQL | База данных Azure Cosmos DB для NoSQL | Azure DocumentDB | Гибкий сервер Базы данных Azure для PostgreSQL | Управляемый Redis в Azure | Поиск ИИ | База данных SQL Azure |
|---|---|---|---|---|---|---|---|
| Косинусное сходство | Да | Да1 | Да | Да | Да3 | Да | Да2 |
| Евклидово расстояние (L2-норма) | Да | Да1 | Да | Да | Да3 | Да | Да2 |
| Dot product | Да | Да1 | Да | Да | Да3 | Да | Да2 |
- Дополнительные сведения см. в разделе вычисления векторного расстояния для Azure Cosmos DB для NoSQL.
- Дополнительные сведения см. в примерах вычислений расстояния для базы данных SQL Azure и SQL Server.
- Управляемый Redis Azure поддерживает косинусное сходство, евклидово расстояние (L2) и метрики расстояния внутреннего произведения (IP). Дополнительные сведения см. в разделе "Поиск сходства векторов".
Интеграция с Azure OpenAI и другими компонентами
При реализации векторного поиска можно также рассмотреть возможность связывания с другими компонентами Майкрософт. Например, Azure OpenAI помогает создавать векторы для данных и входных запросов для поиска сходства векторов.
| Возможность | Служба Azure Cosmos DB для PostgreSQL | База данных Azure Cosmos DB для NoSQL | Azure DocumentDB | Гибкий сервер Базы данных Azure для PostgreSQL | Управляемый Redis в Azure | Поиск ИИ | База данных SQL Azure |
|---|---|---|---|---|---|---|---|
| Azure OpenAI — добавление собственных данных | Нет | Нет | Да1 | Нет | Нет | Да2 | Нет |
| Внедрение вектора с помощью Azure OpenAI | Нет | Нет | Нет | Да3 | Нет | Да4 | Да5 |
| Интеграция с семантическим ядром | Да6 | Да7 | Да8 | Да6 | Да11 | Да9 | Да10 |
- Azure DocumentDB поддерживается в качестве источника данных для Azure OpenAI в ваших данных.
- Поиск ИИ поддерживается в качестве источника данных для Azure OpenAI на ваших данных.
- Доступно расширение ИИ Azure .
- Поиск ИИ предоставляет навык для векторизации фрагментированного текста.
- Вы можете создать хранимую процедуру для развертывания вашей встраиваемой модели.
- Эта служба поддерживается как соединителем памяти, так и соединителем векторной базы данных. Дополнительные сведения см. в документации по C#.
- Эта служба поддерживается как соединителем памяти, так и соединителем векторной базы данных. Документация доступна как для C# , так и для Python.
- Эта служба поддерживается как соединитель векторной базы данных. Документация доступна как для C# , так и для Python.
- Эта служба поддерживается как соединителем памяти, так и соединителем векторной базы данных. Документация доступна как для C# , так и для Python.
- Эта служба поддерживается как соединитель памяти.
- Эта служба поддерживается как соединитель векторной базы данных. Дополнительные сведения см. в документации по соединителю Redis.
Это важно
Azure OpenAI On Your Data не рекомендуется.
Мы рекомендуем перенести рабочие нагрузки Azure OpenAI On Your Data в Службу агента Foundry с помощью Foundry IQ, чтобы извлекать содержимое и генерировать основанные на ваших данных ответы.
Соавторы
Корпорация Майкрософт поддерживает эту статью. Следующие авторы написали эту статью.
Основные авторы:
- Кейта Onabuta | Старший инженер по решениям
- Yu Saito | Инженер решений
Чтобы просмотреть неопубликованные профили LinkedIn, войдите в LinkedIn.
Дальнейшие шаги
- Реализация интеллектуального анализа знаний с помощью поиска ИИ
- Интеллектуальное приложение и ИИ
- Поиск сходства векторов с помощью SQL Azure и Azure OpenAI
- Поддержка собственных векторов в Azure SQL и SQL Server
- Векторная база данных в Azure Cosmos DB
- Поиск сходства векторов в Управляемом Redis в Azure
- Примеры базы данных векторов Azure