Векторы в поиске ИИ Azure

Векторный поиск — это подход к получению информации, которая поддерживает индексирование и выполнение запросов по числовым представлениям содержимого. Так как содержимое является числовым, а не обычным текстом, сопоставление основано на векторах, которые наиболее похожи на вектор запроса, что позволяет сопоставлять между собой:

  • семантическое или концептуальное сходство ("собака" и "каноина", концептуально аналогичное, но лингвистически уникальное)
  • многоязычное содержимое ("собака" на английском и "hund" на немецком языке)
  • несколько типов контента ("собака" в виде обычного текста и фотография собаки в файле изображения)

В этой статье представлено высокоуровневое введение в векторы в поиске ИИ Azure. Он также объясняет интеграцию с другими службами Azure и охватывает терминологию и концепции, связанные с разработкой векторного поиска.

Мы рекомендуем использовать эту статью для общего ознакомления, но если вы собираетесь начать работу с данной функцией, выполните следующие действия.

Вы также можете начать с краткого руководства по вектору или примеров кода на GitHub.

Какие сценарии могут поддерживать векторный поиск?

К сценариям поиска векторов относятся:

  • Поиск сходства. Кодирование текста с помощью моделей внедрения, таких как внедрение OpenAI или открытый код моделей, таких как SBERT, и получение документов с запросами, которые также кодируются как векторы.

  • Поиск по разным типам контента (многомодальный). Кодирование изображений и текста с помощью многомодальных внедрения (например, с помощью OpenAI C пакет интерфейса пользователя или GPT-4 Turbo с помощью Визуального распознавания в Azure OpenAI) и запроса пространства внедрения, состоящего из векторов обоих типов контента.

  • Гибридный поиск. В службе "Поиск ИИ Azure" гибридный поиск относится к вектору и ключевое слово выполнению запросов в том же запросе. Поддержка векторов реализуется на уровне поля с индексом, содержащими как векторные поля, так и текстовые поля, доступные для поиска. Запросы выполняются параллельно и результаты объединяются в один ответ. При необходимости добавьте семантический рейтинг для повышения точности при повторном использовании L2, используя те же языковые модели, что и Bing.

  • Многоязычный поиск. Предоставление интерфейса поиска на собственном языке пользователей возможно путем внедрения моделей и моделей чата, обученных на нескольких языках. Если вам нужен более контроль над переводом, вы можете дополнить многоязычные возможности, поддерживаемые поиском ИИ Azure для содержимого невектора, в гибридных сценариях поиска.

  • Отфильтрованный векторный поиск. Запрос может включать векторный запрос и выражение фильтра. Фильтры применяются к текстовым и числовым полям и полезны для фильтров метаданных, включая или исключая результаты поиска на основе критериев фильтра. Хотя поле вектора не фильтруется само по себе, можно настроить фильтруемый текст или числовое поле. Поисковая система может обрабатывать фильтр до или после выполнения векторного запроса.

  • Векторная база данных. Служба "Поиск ИИ Azure" хранит данные, которые вы запрашиваете. Используйте его в качестве чистого векторного хранилища в любое время, когда требуется долгосрочная память или база знаний, или данные о заземления для архитектуры получения дополненного поколения (RAG) или любого приложения, использующего векторы.

Поддержка векторов включает индексирование, хранение и запросы векторных внедрения из индекса поиска.

На следующей схеме показаны рабочие процессы индексирования и запроса для векторного поиска.

Архитектура рабочего процесса поиска векторов.

На стороне индексирования поиск ИИ Azure принимает векторные внедрения и использует алгоритм ближайших соседей для размещения похожих векторов в индексе. Внутри него создаются векторные индексы для каждого поля вектора.

Как вы получаете внедрение из исходного содержимого в поиск ИИ Azure, зависит от вашего подхода и того, можно ли использовать предварительные версии функций. Вы можете векторизировать или создать внедрение в качестве предварительного шага с помощью моделей из OpenAI, Azure OpenAI и любого количества поставщиков, в широком спектре исходного содержимого, включая текст, изображения и другие типы контента, поддерживаемые моделями. Затем можно отправить превекторное содержимое в векторные поля в хранилище векторов. Это общедоступный подход. Если вы можете использовать предварительные версии функций, служба "Поиск ИИ Azure" предлагает интегрированные блоки данных и векторизацию в конвейере индексатора. Вы по-прежнему предоставляете ресурсы (конечные точки и сведения о подключении к Azure OpenAI), но поиск Azure AI выполняет все вызовы и обрабатывает переходы.

На стороне запроса в клиентском приложении вы собираете входные данные запроса от пользователя, как правило, с помощью рабочего процесса запроса. Затем можно добавить шаг кодирования, который преобразует входные данные в вектор, а затем отправить векторный запрос в индекс в службе "Поиск ИИ Azure" для поиска сходства. Как и при индексировании, можно развернуть встроенную векторизацию (предварительная версия) для преобразования вопроса в вектор. Для любого подхода поиск Azure AI возвращает документы с запрошенными k ближайшими соседями (kNN) в результатах.

Поиск ИИ Azure поддерживает гибридные сценарии, которые выполняют вектор и ключевое слово поиск параллельно, возвращая унифицированный результирующий набор, который часто обеспечивает лучшие результаты, чем только вектор или ключевое слово поиск. Для гибридного, векторного и невекторного содержимого выполняется прием в один и тот же индекс для запросов, выполняемых параллельно.

Доступность и цены

Векторный поиск доступен как часть всех уровней поиска ИИ Azure во всех регионах без дополнительной платы.

Новые службы, созданные после 3 апреля 2024 г., поддерживают более высокие квоты для векторных индексов.

Поиск вектора доступен в:

Примечание.

Некоторые старые службы поиска, созданные до 1 января 2019 г., развертываются в инфраструктуре, которая не поддерживает векторные рабочие нагрузки. Если вы пытаетесь добавить поле вектора в схему и получить ошибку, это результат устаревших служб. В этой ситуации необходимо создать новую службу поиска, чтобы попробовать функцию вектора.

Поиск по искусственному интеллекту Azure глубоко интегрирован в платформу ИИ Azure. В следующей таблице перечислены несколько полезных векторных рабочих нагрузок.

Продукт Интеграция
Студия Azure OpenAI В чате с игровой площадкой данных добавьте собственные данные , используя поиск ИИ Azure для поиска данных и беседы. Это самый простой и быстрый подход для чата с данными.
Azure OpenAI Azure OpenAI предоставляет модели внедрения и модели чата. Демонстрации и примеры предназначены для текстового внедрения-ada-002. Мы рекомендуем Azure OpenAI для создания внедрения текста.
Службы ИИ Azure API получения изображений векторизации изображений (предварительная версия) поддерживает векторизацию содержимого изображения. Мы рекомендуем использовать этот API для создания внедренных образов.
Платформы данных Azure: Хранилище BLOB-объектов Azure, Azure Cosmos DB Индексаторы можно использовать для автоматизации приема данных, а затем использовать встроенную векторизацию (предварительная версия) для создания внедрения. Поиск ИИ Azure может автоматически индексировать векторные данные из двух источников данных: индексаторов BLOB-объектов Azure и Azure Cosmos DB для индексаторов NoSQL. Дополнительные сведения см. в разделе "Добавление векторных полей" в индекс поиска.

Он также часто используется в платформах с открытым исходным кодом, таких как LangChain.

Основные понятия поиска векторов

Если вы не знакомы с векторами, в этом разделе описываются некоторые основные понятия.

Векторный поиск — это метод получения информации, в котором документы и запросы представляются как векторы вместо обычного текста. В векторном поиске модели машинного обучения создают векторные представления исходных входных данных, которые могут быть текстом, изображениями или другим содержимым. Наличие математического представления содержимого обеспечивает общую основу для сценариев поиска. Если все является вектором, запрос может найти совпадение в векторном пространстве, даже если связанное исходное содержимое находится в разных носителях или языках, отличных от запроса.

Если содержимое, доступное для поиска, представлено в виде векторов, запрос может найти близкие совпадения в аналогичном содержимом. Модель внедрения, используемая для создания векторов, знает, какие слова и понятия похожи, и он помещает результирующий вектор в пространство внедрения. Например, векторизованные исходные документы об облаках и тумане, скорее всего, будут отображаться в запросе о "тумане", так как они семантично похожи, даже если они не являются лексическим совпадением.

Внедрение и векторизация

Внедрение — это определенный тип векторного представления содержимого или запроса, созданного моделями машинного обучения, которые фиксируют семантический смысл текста или представления другого содержимого, например изображений. Модели машинного обучения естественного языка обучаются на больших объемах данных для выявления шаблонов и связей между словами. Во время обучения они учатся представлять любые входные данные в виде вектора реальных чисел на промежуточном шаге, называемом кодировщиком. После завершения обучения эти языковые модели можно изменить, чтобы промежуточное векторное представление стало выходными данными модели. Результирующий вектор — это высокомерные векторы, где слова с аналогичными значениями ближе друг к другу в векторном пространстве, как описано в статье "Общие сведения о внедрении" (Azure OpenAI).

Эффективность векторного поиска в получении соответствующей информации зависит от эффективности модели внедрения при перегонке смысла документов и запросов в результирующий вектор. Лучшие модели хорошо обучены по типам данных, которые они представляют. Вы можете оценить существующие модели, такие как Azure OpenAI text-embedding-ada-002, принести собственную модель, обученную непосредственно в пространстве проблем, или точно настроить модель общего назначения. Поиск по искусственному интеллекту Azure не накладывает ограничения на выбранные модели, поэтому выберите наиболее подходящий для ваших данных.

Чтобы создать эффективные внедрения для векторного поиска, важно учитывать ограничения размера входных данных. Перед созданием внедренных данных рекомендуется следовать рекомендациям по блокированию данных . Эта рекомендация гарантирует, что внедрение точно фиксирует соответствующую информацию и обеспечивает более эффективный векторный поиск.

Что такое пространство внедрения?

Пространство внедрения — это корпус для векторных запросов. В индексе поиска пространство внедрения — это все поля векторов, заполненные внедрением из той же модели внедрения. Модели машинного обучения создают пространство внедрения путем сопоставления отдельных слов, фраз или документов (для обработки естественного языка), изображений или других форм данных в представление, состоящего из вектора реальных чисел, представляющих координату в высокомерном пространстве. В этом пространстве внедрения аналогичные элементы находятся близко друг к другу, а другие элементы находятся дальше друг от друга.

Например, документы, которые говорят о различных видах собак, будут кластеризованы близко в пространстве внедрения. Документы о кошках будут близки вместе, но дальше от собак кластер, все еще находясь в районе для животных. Непохожие понятия, такие как облачные вычисления, будут гораздо дальше. На практике эти пробелы внедрения являются абстрактными и не имеют четко определенных, интерпретируемых человеком значений, но основная идея остается одной и той же.

В векторном поиске поисковые системы сканируют векторы в пространстве внедрения, чтобы определить векторы, ближайшие к вектору запроса. Этот метод называется ближайшим поиском соседей. Ближайшие соседи помогают квалифицировать сходство между элементами. Высокая степень сходства векторов указывает на то, что исходные данные были похожи тоже. Чтобы упростить быстрый поиск ближайших соседей, поисковая система выполняет оптимизацию или использует структуры данных и секционирование данных, чтобы уменьшить пространство поиска. Каждый алгоритм поиска векторов решает ближайшие проблемы соседей по-разному, так как они оптимизируют минимальную задержку, максимальную пропускную способность, отзыв и память. Для вычисления сходства метрики сходства предоставляют механизм вычисления расстояния.

В настоящее время служба "Поиск ИИ Azure" поддерживает следующие алгоритмы:

  • Иерархический навигационируемый небольшой мир (HNSW): HNSW — это ведущий алгоритм ANN, оптимизированный для приложений с высокой задержкой, где распределение данных неизвестно или может часто изменяться. Он упорядочивает высокомерные точки данных в иерархическую структуру графа, которая обеспечивает быстрый и масштабируемый поиск сходства, позволяя ошеломить компромисс между точностью поиска и вычислительными затратами. Так как алгоритм требует, чтобы все точки данных располагались в памяти для быстрого случайного доступа, этот алгоритм использует квоту размера векторного индекса.

  • Исчерпывающие соседи K-ближайших соседей (KNN): вычисляет расстояния между вектором запроса и всеми точками данных. Это вычислительный ресурсоемкий, поэтому он лучше всего подходит для небольших наборов данных. Так как алгоритм не требует быстрого случайного доступа к точкам данных, этот алгоритм не потребляет квоту размера векторного индекса. Однако этот алгоритм предоставляет глобальный набор ближайших соседей.

В определении индекса можно указать один или несколько алгоритмов, а затем для каждого поля вектора указать, какой алгоритм следует использовать:

Параметры алгоритма, используемые для инициализации индекса во время создания индекса, неизменяемы и не могут быть изменены после построения индекса. Однако параметры, влияющие на характеристики времени запроса (efSearch) можно изменить.

Кроме того, поля, указывающие алгоритм HNSW, также поддерживают исчерпывающий поиск KNN с помощью параметра "exhaustive": trueзапроса. Однако противоположность не является верной. Если в запросе индексируется exhaustiveKnnполе, в запросе нельзя использовать HNSW, так как дополнительные структуры данных, обеспечивающие эффективный поиск, не существуют.

Приблизительные ближайшие соседи

Приблизительный поиск ближайшего соседа (ANN) — это класс алгоритмов для поиска совпадений в векторном пространстве. Этот класс алгоритмов использует различные структуры данных или методы секционирования данных, чтобы значительно сократить пространство поиска для ускорения обработки запросов.

Алгоритмы ANN жертвуют некоторой точностью, но предлагают масштабируемое и быстрое получение приблизительных ближайших соседей, что делает их идеальными для балансировки точности с эффективностью в современных приложениях извлечения информации. Вы можете настроить параметры алгоритма, чтобы точно настроить требования к памяти, задержке, памяти и объему дискового пространства приложения поиска.

Поиск ИИ Azure использует HNSW для алгоритма ANN.

Следующие шаги