Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Векторный поиск — это подход к получению информации, которая поддерживает индексирование и выполнение запросов по числовым представлениям содержимого. Так как содержимое является числовым, а не обычным текстом, сопоставление основано на векторах, которые наиболее похожи на вектор запроса, что позволяет сопоставлять между собой:
- семантическое или концептуальное сходство ("собака" и "псовый", концептуально схожи, однако лингвистически различны)
- многоязычное содержимое ("собака" на английском и "hund" на немецком языке)
- несколько типов контента ("собака" в виде обычного текста и фотография собаки в файле изображения)
В этой статье приведены общие сведения о поддержке векторов в службе "Поиск ИИ Azure". Он также объясняет интеграцию с другими службами Azure и охватывает терминологию и концепции, связанные с разработкой векторного поиска.
Мы рекомендуем использовать эту статью для общего ознакомления, но если вы собираетесь начать работу с данной функцией, выполните следующие действия.
- Предоставление эмбеддингов для индекса или генерация эмбеддингов в потоке индексатора.
- Создание векторного индекса
- Выполнение векторных запросов
Вы также можете начать с краткого руководства по вектору или примеров кода на GitHub.
Какие сценарии могут поддерживать векторный поиск?
К сценариям поиска векторов относятся:
Поиск сходства. Кодируйте текст с использованием встраивающих моделей, таких как встраивания OpenAI или модели с открытым исходным кодом, такие как SBERT, и извлекайте документы с помощью запросов, которые также кодируются в виде векторов.
Поиск по разным типам контента (многомодальный). Кодируйте изображения и текст с помощью многомодальных встраиваний (например, с помощью OpenAI CLIP или GPT-4 Turbo с Vision в Azure OpenAI) и выполняйте запрос в пространстве встраиваний, состоящем из векторов обоих типов контента.
Гибридный поиск. В Azure AI Search мы определяем гибридный поиск как выполнение в одном запросе поиска с использованием двухвекторного метода и ключевых слов. Поддержка векторов реализуется на уровне поля. Если индекс содержит как векторные, так и неекторные поля, можно написать запрос, предназначенный для обоих. Запросы выполняются параллельно, и результаты объединяются в один ответ и ранжируются соответствующим образом.
Многоязычный поиск. Поиск ИИ Azure предназначен для расширения. Если у вас есть модели встраивания и чат-модели, обученные на нескольких языках, вы можете вызывать их через пользовательские или встроенные навыки на стороне индексирования или через векторизаторы на стороне запроса. Если вам нужен дополнительный контроль над письменным переводом, вы можете дополнить его многоязычными возможностями, которые поддерживает поиск ИИ Azure для невекторного контента, в гибридных сценариях поиска.
Отфильтрованный векторный поиск. Запрос может включать векторный запрос и выражение фильтра. Фильтры применяются к текстовым и числовым полям и полезны для фильтров метаданных, включая или исключая результаты поиска на основе критериев фильтра. Хотя поле вектора не фильтруется само по себе, можно настроить фильтруемый текст или числовое поле. Поисковая система может обрабатывать фильтр до или после выполнения векторного запроса.
Векторная база данных. Служба "Поиск ИИ Azure" хранит данные, которые вы запрашиваете. Используйте его в качестве чистого векторного хранилища в любое время, когда требуется долгосрочная память, база знаний, базовые данные для архитектуры генерации с подстановкой поиска (RAG) или для любого приложения, использующего векторы.
Как работает векторный поиск в службе "Поиск ИИ Azure"
Поддержка векторов включает индексирование, хранение и запросы векторных представлений из индекса поиска.
На следующей схеме показаны рабочие процессы индексирования и запроса для векторного поиска.
На стороне индексирования поиск ИИ Azure принимает векторные внедрения и использует алгоритм ближайших соседей для размещения похожих векторов в индексе. Внутри него создаются векторные индексы для каждого поля вектора.
Способ извлечения эмбеддингов из вашего исходного содержимого в поиск Azure AI зависит от того, хотите ли вы выполнять эту работу в рамках конвейера индексирования поиска Azure AI или вне его. Azure AI Search предлагает интегрированное разбиение данных на части и векторизацию в конвейере индексатора. Вы по-прежнему предоставляете ресурсы (конечные точки и сведения о подключении к Azure OpenAI), но поиск Azure AI выполняет все вызовы и обрабатывает переходы. Для этого подхода требуется индексатор, поддерживаемый источник данных и набор навыков, который отвечает за разбиение на фрагменты и интеграцию. Если вы не хотите использовать индексаторы, вы можете обрабатывать всю векторизацию вне себя, а затем отправлять превекторизованное содержимое в векторные поля в индексе поиска.
На стороне запроса в клиентском приложении вы собираете входные данные запроса от пользователя, как правило, с помощью рабочего процесса запроса. Затем можно добавить шаг кодирования, который преобразует входные данные в вектор, а затем отправить векторный запрос в индекс в службе "Поиск ИИ Azure" для поиска сходства. Как и при индексировании, можно развернуть встроенную векторизацию , чтобы преобразовать вопрос в вектор. Для любого подхода поиск Azure AI возвращает документы с запрошенными k
ближайшими соседями (kNN) в результатах.
Поиск ИИ Azure поддерживает гибридные сценарии , которые выполняют вектор и поиск ключевых слов параллельно, возвращая унифицированный результирующий набор, который часто обеспечивает лучшие результаты, чем только вектор или поиск ключевых слов. В гибридной системе как векторное, так и невекторное содержимое поступает в один и тот же индекс для обработки запросов.
Доступность и цены
Векторный поиск доступен как часть всех уровней поиска ИИ Azure во всех регионах без дополнительной платы.
Новые службы, созданные после 3 апреля 2024 г., поддерживают более высокие квоты для векторных индексов. Если у вас устаревшая служба, возможно, вы сможете обновить её, чтобы увеличить квоты на векторы.
Поиск вектора доступен в:
- портал Azure. Мастер импорта и векторизации данных
- Azure REST API
- Пакеты SDK Azure для .NET, Python и JavaScript
- Другие предложения Azure, такие как Azure AI Foundry.
Примечание.
Некоторые старые службы поиска, созданные до 1 января 2019 г., развертываются в инфраструктуре, которая не поддерживает векторные рабочие нагрузки. Если вы пытаетесь добавить поле вектора в схему и получить ошибку, это результат устаревших служб. В этой ситуации необходимо создать новую службу поиска, чтобы попробовать функцию вектора.
Интеграция Azure и связанные службы
Поиск по искусственному интеллекту Azure глубоко интегрирован в платформу ИИ Azure. В следующей таблице перечислены несколько полезных векторных рабочих нагрузок.
Продукт | Интеграция |
---|---|
Azure AI Foundry | В чате с вашей песочницей данных добавьте собственные данные, используя поиск ИИ Azure для опорных данных и поиска в диалогах. Это самый простой и быстрый подход для чата с данными. |
Azure OpenAI | Azure OpenAI предоставляет модели внедрения и модели чата. Демонстрации и примеры предназначены для text-embedding-ada-002. Мы рекомендуем Azure OpenAI для создания эмбеддингов текста. |
Службы ИИ Azure | API получения изображений векторизации изображений (предварительная версия) поддерживает векторизацию содержимого изображения. Мы рекомендуем этот API для создания эмбэддингов изображений. |
Платформы данных Azure: хранилище BLOB-объектов Azure, Azure Cosmos DB, Azure SQL, OneLake | Вы можете использовать индексаторы для автоматизации приема данных, и затем использовать встроенную векторизацию для создания векторов. Поиск ИИ Azure может автоматически индексировать векторные данные из индексаторов BLOB-объектов Azure, Azure Cosmos DB для индексаторов NoSQL, Azure Data Lake Storage 2-го поколения, хранилища таблиц Azure, Fabric OneLake. Дополнительные сведения см. в разделе "Добавление векторных полей" в индекс поиска. |
Он также часто используется в платформах с открытым исходным кодом, таких как LangChain.
Основные понятия поиска векторов
Если вы не знакомы с векторами, в этом разделе описываются некоторые основные понятия.
Сведения о поиске векторов
Векторный поиск — это метод получения информации, в котором документы и запросы представляются как векторы вместо обычного текста. В векторном поиске модели машинного обучения создают векторные представления исходных входных данных, которые могут быть текстом, изображениями или другим содержимым. Наличие математического представления содержимого предоставляет общий язык для сравнения разрозненных содержимого. Если все является вектором, запрос может найти совпадение в векторном пространстве, даже если связанное исходное содержимое находится в разных носителях или языках, отличных от запроса.
Почему используйте векторный поиск
Если содержимое, доступное для поиска, представлено в виде векторов, запрос может найти близкие совпадения в аналогичном содержимом. Модель встраивания, используемая для генерации векторов, знает, какие слова и понятия похожи, и помещает полученные векторы близко друг к другу в пространстве встраивания. Например, векторизованные исходные документы об облаках и тумане, скорее всего, будут отображаться в запросе о "тумане", так как они семантично похожи, даже если они не являются лексическим совпадением.
Внедрение и векторизация
Внедрение — это определенный тип векторного представления содержимого или запроса, созданного моделями машинного обучения, которые фиксируют семантический смысл текста или представления другого содержимого, например изображений. Модели машинного обучения естественного языка обучаются на больших объемах данных для выявления шаблонов и связей между словами. Во время обучения они учатся представлять любые входные данные в виде вектора реальных чисел на промежуточном шаге, называемом кодировщиком. После завершения обучения эти языковые модели можно изменить, чтобы промежуточное векторное представление стало выходными данными модели. Результирующие встраивания представляют собой высокоразмерные векторы, где слова с аналогичными значениями ближе друг к другу в векторном пространстве, как объяснено в Общие сведения о встраивании (Azure OpenAI).
Эффективность векторного поиска в получении соответствующей информации зависит от эффективности модели встраивания в извлечении смысла из документов и запросов в результирующий вектор. Лучшие модели хорошо обучены по типам данных, которые они представляют. Вы можете оценить существующие модели, такие как Azure OpenAI text-embedding-ada-002, использовать вашу собственную модель, обученную непосредственно для решения данной задачи, или адаптировать модель общего назначения. Поиск по искусственному интеллекту Azure не накладывает ограничения на выбранные модели, поэтому выберите наиболее подходящий для ваших данных.
Чтобы создать эффективные внедрения для векторного поиска, важно учитывать ограничения размера входных данных. Перед созданием эмбеддингов рекомендуется следовать рекомендациям по разбиению данных на фрагменты. Эта рекомендация гарантирует, что внедрение точно фиксирует соответствующую информацию и обеспечивает более эффективный векторный поиск.
Что такое пространство внедрения?
Пространство внедрения — это корпус для векторных запросов. В индексе поиска встраиваемое пространство — это все поля векторов, заполненные векторами из той же модели встраивания. Модели машинного обучения создают пространство внедрения путем сопоставления отдельных слов, фраз или документов (для обработки естественного языка), изображений или других форм данных в представление, состоящего из вектора реальных чисел, представляющих координату в высокомерном пространстве. В этом пространстве внедрения аналогичные элементы находятся близко друг к другу, а другие элементы находятся дальше друг от друга.
Например, документы, которые говорят о различных видах собак, будут кластеризованы близко в пространстве внедрения. Документы о кошках будут расположены близко друг к другу, но дальше от кластера собак, хотя все еще находятся в районе животных. Непохожие понятия, такие как облачные вычисления, будут гораздо дальше. На практике эти пространства вложений являются абстрактными и не имеют четко определяемых, интерпретируемых человеком значений, но основная идея остается неизменной.
Поиск ближайших соседей
В векторном поиске поисковые системы сканируют векторы в пространстве внедрения, чтобы определить векторы, ближайшие к вектору запроса. Этот метод называется ближайшим поиском соседей. Ближайшие соседи помогают квалифицировать сходство между элементами. Высокая степень сходства векторов указывает на то, что исходные данные были похожи тоже. Чтобы упростить быстрый поиск ближайших соседей, поисковая система выполняет оптимизацию или использует структуры данных и секционирование данных, чтобы уменьшить пространство поиска. Каждый алгоритм поиска векторов решает ближайшие проблемы соседей по-разному, так как они оптимизируют минимальную задержку, максимальную пропускную способность, отзыв и память. Для вычисления сходства метрики сходства предоставляют механизм вычисления расстояния.
В настоящее время служба "Поиск ИИ Azure" поддерживает следующие алгоритмы:
Иерархический навигационный небольшой мир (HNSW): HNSW — это ведущий алгоритм ANN, оптимизированный для приложений с высокой степенью точности и низкой задержкой, где распределение данных неизвестно или может изменяться часто. Он упорядочивает высокоразмерные точки данных в иерархическую структуру графа, что обеспечивает быстрый и масштабируемый поиск сходства и позволяет настраивать компромисс между точностью поиска и вычислительными затратами. Так как алгоритм требует, чтобы все точки данных располагались в памяти для быстрого случайного доступа, этот алгоритм использует квоту размера векторного индекса.
Исчерпывающий метод K-ближайших соседей (KNN): вычисляет расстояния между вектором запроса и всеми точками данных. Это вычислительно ресурсоемко, поэтому лучше всего работает для небольших наборов данных. Так как алгоритм не требует быстрого случайного доступа к точкам данных, этот алгоритм не потребляет квоту размера векторного индекса. Однако этот алгоритм предоставляет глобальный набор ближайших соседей.
Сведения об использовании этих алгоритмов см. в разделе "Создание поля вектора" для указания алгоритма, профилей векторов и назначения профилей.
Параметры алгоритма, используемые для инициализации индекса во время создания индекса, неизменяемы и не могут быть изменены после построения индекса. Однако параметры, влияющие на характеристики времени запроса (efSearch
) можно изменить.
Кроме того, поля, указывающие алгоритм HNSW, также поддерживают исчерпывающий "exhaustive": true
. Однако противоположность не является верной. Если поле exhaustiveKnn
индексируется, в запросе нельзя использовать HNSW, поскольку отсутствуют дополнительные структуры данных, которые обеспечивают эффективный поиск.
Приблизительные ближайшие соседи
Приблизительный поиск ближайшего соседа (ANN) — это класс алгоритмов для поиска совпадений в векторном пространстве. Этот класс алгоритмов использует различные структуры данных или методы секционирования данных, чтобы значительно сократить пространство поиска для ускорения обработки запросов.
Алгоритмы ANN жертвуют некоторой точностью, но предлагают масштабируемое и быстрое получение приблизительных ближайших соседей, что делает их идеальными для балансировки точности с эффективностью в современных приложениях извлечения информации. Вы можете настроить параметры алгоритма, чтобы точно настроить требования к памяти, задержке, памяти и объему дискового пространства приложения поиска.
Поиск ИИ Azure использует HNSW для алгоритма ANN.