Поделиться через


Генерация эмбеддингов для поисковых запросов и документов

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

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

Если вы хотите самостоятельно обрабатывать блоки и векторизацию данных, мы предоставляем демонстрации в репозитории с примерами, которые показывают, как интегрироваться с другими решениями сообщества.

Использование моделей встраивания в векторных запросах

  • Входные данные запроса — это векторы, текст или изображения, которые преобразуются в векторы во время обработки запросов. Встроенное решение в службе "Поиск ИИ Azure" — использовать векторизатор.

    Кроме того, вы можете самостоятельно обрабатывать преобразование, передав входные данные запроса в модель встраивания на ваш выбор. Чтобы избежать ограничения скорости, можно реализовать логику повторных попыток в рабочей нагрузке. Для демонстрации Python мы использовали tenacity.

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

Создание ресурсов в одном регионе

Хотя интегрированная векторизация с моделями внедрения Azure OpenAI не требует наличия ресурсов в одном регионе, использование одного и того же региона может повысить производительность и уменьшить задержку.

  1. Проверьте регионы для модели встраивания текста.

  2. Найдите тот же регион для поиска ИИ Azure.

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

Создание внедрения для импровизированного запроса

Следующий код Python создает внедрение, которое можно вставить в свойство "значения" векторного запроса.

!pip install openai

import openai

openai.api_type = "azure"
openai.api_key = "YOUR-API-KEY"
openai.api_base = "https://YOUR-OPENAI-RESOURCE.openai.azure.com"
openai.api_version = "2024-02-01"

response = openai.Embedding.create(
    input="How do I use Python in VS Code?",
    engine="text-embedding-ada-002"
)
embeddings = response['data'][0]['embedding']
print(embeddings)

Выходные данные — это векторный массив размером 1536 измерений.

Выбор модели внедрения в Azure AI Foundry

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

  • текст-встраивание-3-большой
  • Встраивание текста - версия 3 - малая
  • text-embedding-ada-002
  • Cohere-embed-v3-english (английский язык)
  • Cohere-embed-v3-multilingual (многоязычная)

Модель уже должна быть развернута, и у вас должно быть разрешение на доступ к ней. Дополнительные сведения см. в статье "Развертывание моделей ИИ" на портале Azure AI Foundry.

Советы и рекомендации по интеграции модели

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

  • Разработка стратегии разбиения на части: модели встраивания имеют ограничения на количество токенов, которые они могут принимать, что создаёт необходимость разбиения данных на фрагменты для больших файлов. Для получения дополнительной информации см. раздел "Разделение больших документов для решений векторного поиска".

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

  • Выберите правильную модель внедрения: выберите подходящую модель для конкретного варианта использования, например внедрения слов для текстовых поисков или внедрения изображений для визуального поиска. Рассмотрите возможность использования предварительно обученных моделей, таких как text-embedding-ada-002 от OpenAI или REST API извлечения изображений от Azure AI для компьютерного зрения.

  • Нормализованные длины векторов: убедитесь, что длина вектора нормализована перед их хранением в индексе поиска, чтобы повысить точность и производительность поиска сходства. Большинство предварительно подготовленных моделей уже нормализованы, но не все.

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

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

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