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


Настройка векторизатора в индексе поиска

В Службе поиска искусственного интеллекта Azure векторизатор — это программное обеспечение, которое выполняет векторизацию, например развернутую модель внедрения в Azure OpenAI, которая преобразует текст (или изображения) в векторы во время выполнения запроса.

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

Чтобы добавить векторизатор в индекс поиска, можно использовать конструктор индексов в портал Azure или вызвать REST API создания или обновления индекса или использовать любой обновленный пакет Azure SDK для предоставления этой функции.

Векторизаторы теперь общедоступны, если вы используете общедоступную пару векторизатора навыков. Векторизатор AzureOpenAIEmbedding и навыки azureOpenAIEmbedding являются общедоступными. Настраиваемый векторизатор веб-API также общедоступен.

Векторизатор распознавания искусственного интеллекта Azure, векторизатор модели Azure AI Studio и их эквивалентные навыки по-прежнему находятся в предварительной версии. Набор навыков должен указать REST API 2024-05-01-preview, чтобы использовать навыки предварительного просмотра и векторизаторы.

Необходимые компоненты

Рекомендуется включить ведение журнала диагностики в службе поиска для подтверждения выполнения векторного запроса.

Попробуйте векторизатор с примерами данных

Мастер импорта и векторизации данных считывает файлы из хранилища BLOB-объектов Azure, создает индекс с блокизированными и векторизованными полями и добавляет векторизатор. По проектированию векторизатор, созданный мастером, устанавливается в ту же модель внедрения, которая используется для индексирования содержимого БОЛЬШОго двоичного объекта.

  1. Отправьте примеры файлов данных в контейнер на служба хранилища Azure. Мы использовали некоторые небольшие текстовые файлы из земной книги НАСА для тестирования этих инструкций в бесплатной службе поиска.

  2. Запустите мастер импорта и векторизации данных, выбрав контейнер BLOB-объектов для источника данных.

    Снимок экрана: подключение к странице данных.

  3. Выберите существующее развертывание text-embedding-ada-002. Эта модель создает внедрение во время индексирования и также используется для настройки векторизатора, используемого во время запросов.

    Снимок экрана: страница векторизации и обогащения данных.

  4. После завершения работы мастера и завершения всей обработки индексатора необходимо иметь индекс с полем вектора с возможностью поиска. Определение JSON поля выглядит следующим образом:

     {
         "name": "vector",
         "type": "Collection(Edm.Single)",
         "searchable": true,
         "retrievable": true,
         "dimensions": 1536,
         "vectorSearchProfile": "vector-nasa-ebook-text-profile"
     }
    
  5. У вас также должен быть профиль вектора и векторизатор, аналогичный следующему примеру:

    "profiles": [
       {
         "name": "vector-nasa-ebook-text-profile",
         "algorithm": "vector-nasa-ebook-text-algorithm",
         "vectorizer": "vector-nasa-ebook-text-vectorizer"
       }
     ],
     "vectorizers": [
       {
         "name": "vector-nasa-ebook-text-vectorizer",
         "kind": "azureOpenAI",
         "azureOpenAIParameters": {
           "resourceUri": "https://my-fake-azure-openai-resource.openai.azure.com",
           "deploymentId": "text-embedding-ada-002",
           "modelName": "text-embedding-ada-002",
           "apiKey": "0000000000000000000000000000000000000",
           "authIdentity": null
         },
         "customWebApiParameters": null
       }
     ]
    
  6. Пройдите вперед, чтобы протестировать векторизатор для преобразования текста в вектор во время выполнения запроса.

Определение векторизатора и профиля вектора

В этом разделе описываются изменения схемы индекса для определения векторизатора вручную.

  1. Используйте создание или обновление индекса для добавления vectorizers в индекс поиска.

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

      "vectorizers": [
        {
          "name": "my_azure_open_ai_vectorizer",
          "kind": "azureOpenAI",
          "azureOpenAIParameters": {
            "resourceUri": "https://url.openai.azure.com",
            "deploymentId": "text-embedding-ada-002",
            "modelName": "text-embedding-ada-002",
            "apiKey": "mytopsecretkey"
          }
        },
        {
          "name": "my_custom_vectorizer",
          "kind": "customWebApi",
          "customVectorizerParameters": {
            "uri": "https://my-endpoint",
            "authResourceId": " ",
            "authIdentity": " "
          }
        }
      ]
    
  3. В том же индексе добавьте раздел профилей векторов, указывающий один из векторизаторов. Для профилей векторов также требуется алгоритм векторного поиска, используемый для создания структур навигации.

    "profiles": [ 
        { 
            "name": "my_vector_profile", 
            "algorithm": "my_hnsw_algorithm", 
            "vectorizer":"my_azure_open_ai_vectorizer" 
        }
    ]
    
  4. Назначьте профиль вектора полю вектора. В следующем примере показана коллекция полей с обязательным ключевым полем, полем строки заголовка и двумя векторными полями с назначением векторного профиля.

    "fields": [ 
            { 
                "name": "ID", 
                "type": "Edm.String", 
                "key": true, 
                "sortable": true, 
                "analyzer": "keyword" 
            }, 
            { 
                "name": "title", 
                "type": "Edm.String"
            }, 
            { 
                "name": "vector", 
                "type": "Collection(Edm.Single)", 
                "dimensions": 1536, 
                "vectorSearchProfile": "my_vector_profile", 
                "searchable": true, 
                "retrievable": true
            }, 
            { 
                "name": "my-second-vector", 
                "type": "Collection(Edm.Single)", 
                "dimensions": 1024, 
                "vectorSearchProfile": "my_vector_profile", 
                "searchable": true, 
                "retrievable": true
            }
    ]
    

Тестирование векторизатора

Используйте клиент поиска для отправки запроса через векторизатор. В этом примере предполагается, что Visual Studio Code с клиентом REST и примером индекса.

  1. В Visual Studio Code укажите конечную точку поиска и ключ API запросов поиска:

     @baseUrl: 
     @queryApiKey: 00000000000000000000000
    
  2. Вставьте в векторный запрос запроса.

     ### Run a query
     POST {{baseUrl}}/indexes/vector-nasa-ebook-txt/docs/search?api-version=2024-07-01 HTTP/1.1
         Content-Type: application/json
         api-key: {{queryApiKey}}
    
         {
             "count": true,
             "select": "title,chunk",
             "vectorQueries": [
                 {
                     "kind": "text",
                     "text": "what cloud formations exists in the troposphere",
                     "fields": "vector",
                     "k": 3,
                     "exhaustive": true
                 }
             ]
         }
    

    Ключевые моменты запроса:

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

    • "text": "what cloud formations exists in the troposphere" — это текстовая строка для векторизации.

    • "fields": "vector" — имя поля для запроса. При использовании примера индекса, созданного мастером, создается поле vectorвектора.

  3. Отправьте запрос. Вы должны получить три k результата, где первый результат является наиболее актуальным.

Обратите внимание, что во время запроса не заданы свойства векторизатора. Запрос считывает свойства векторизатора согласно назначению поля профиля вектора в индексе.

Проверка журналов

Если вы включили ведение журнала диагностики для службы поиска, выполните запрос Kusto, чтобы подтвердить выполнение запроса в поле вектора:

OperationEvent
| where TIMESTAMP > ago(30m)
| where Name == "Query.Search" and AdditionalInfo["QueryMetadata"]["Vectors"] has "TextLength"

Рекомендации

Если вы настраиваете векторизатор Azure OpenAI, рассмотрите те же рекомендации , которые мы рекомендуем для навыка внедрения Azure OpenAI.

См. также