Настройка векторизатора в индексе поиска
Внимание
Эта функция предоставляется в общедоступной предварительной версии, и к ней применяются дополнительные Условия использования. REST API 2023-10-01-Preview поддерживает эту функцию.
В службе поиска ИИ Azure векторизатор — это программное обеспечение, которое выполняет векторизацию, например развернутую модель внедрения в Azure OpenAI, которая преобразует текст в векторы во время выполнения запроса.
Он определен в индексе поиска, он применяется к полям векторов, доступных для поиска, и он используется во время запроса для создания внедрения входных данных текстового запроса. Если вместо этого необходимо векторизировать текст в рамках процесса индексирования, обратитесь к интегрированной векторизации (предварительная версия). Для встроенной векторизации во время индексирования можно настроить индексатор и набор навыков, вызывающий модель внедрения Azure OpenAI для необработанного текстового содержимого.
Чтобы добавить векторизатор в индекс поиска, можно использовать конструктор индексов в портал Azure или вызвать API REST Для создания или обновления индекса 2023-10-01-preview ИЛИ использовать любой пакет пакета SDK бета-версии Azure, который обновлен для предоставления этой функции.
Необходимые компоненты
Индекс с полями векторов с возможностью поиска в Службе поиска ИИ Azure.
Развернутая модель внедрения, например text-embedding-ada-002 в Azure OpenAI. Он используется для векторизации запроса. Он должен быть идентичен модели, используемой для создания внедрения в индекс.
Разрешения на использование модели внедрения. Если вы используете Azure OpenAI, вызывающий объект должен иметь разрешения пользователя OpenAI Cognitive Services. Кроме того, вы можете предоставить ключ API.
Visual Studio Code с клиентом REST для отправки запроса и принятия ответа.
Рекомендуется включить ведение журнала диагностики в службе поиска для подтверждения выполнения векторного запроса.
Попробуйте векторизатор с примерами данных
Мастер импорта и векторизации данных считывает файлы из хранилища BLOB-объектов Azure, создает индекс с блокизированными и векторизованными полями и добавляет векторизатор. По проектированию векторизатор, созданный мастером, устанавливается в ту же модель внедрения, которая используется для индексирования содержимого БОЛЬШОго двоичного объекта.
Отправьте примеры файлов данных в контейнер на служба хранилища Azure. Мы использовали некоторые небольшие текстовые файлы из земной книги НАСА для тестирования этих инструкций в бесплатной службе поиска.
Запустите мастер импорта и векторизации данных, выбрав контейнер BLOB-объектов для источника данных.
Выберите существующее развертывание text-embedding-ada-002. Эта модель создает внедрение во время индексирования и также используется для настройки векторизатора, используемого во время запросов.
После завершения работы мастера и завершения всей обработки индексатора необходимо иметь индекс с полем вектора с возможностью поиска. Определение JSON поля выглядит следующим образом:
{ "name": "vector", "type": "Collection(Edm.Single)", "searchable": true, "retrievable": true, "dimensions": 1536, "vectorSearchProfile": "vector-nasa-ebook-text-profile" }
У вас также должен быть профиль вектора и векторизатор, аналогичный следующему примеру:
"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", "apiKey": "0000000000000000000000000000000000000", "authIdentity": null }, "customWebApiParameters": null } ]
Пройдите вперед, чтобы протестировать векторизатор для преобразования текста в вектор во время выполнения запроса.
Определение векторизатора и профиля вектора
В этом разделе описываются изменения схемы индекса для определения векторизатора вручную.
Используйте создание или обновление индекса (предварительная версия) для добавления
vectorizers
в индекс поиска.Добавьте следующий код 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", "apiKey": "mytopsecretkey" } }, { "name": "my_custom_vectorizer", "kind": "customWebApi", "customVectorizerParameters": { "uri": "https://my-endpoint", "authResourceId": " ", "authIdentity": " " } } ]
В том же индексе добавьте раздел профилей векторов, указывающий один из векторизаторов. Для профилей векторов также требуется алгоритм векторного поиска, используемый для создания структур навигации.
"profiles": [ { "name": "my_vector_profile", "algorithm": "my_hnsw_algorithm", "vectorizer":"my_azure_open_ai_vectorizer" } ]
Назначьте профиль вектора полю вектора. В следующем примере показана коллекция полей с обязательным ключевым полем, полем строки заголовка и двумя векторными полями с назначением векторного профиля.
"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 и примером индекса.
В Visual Studio Code укажите конечную точку поиска и ключ API запросов поиска:
@baseUrl: @queryApiKey: 00000000000000000000000
Вставьте в векторный запрос запроса. Обязательно используйте предварительную версию REST API.
### Run a query POST {{baseUrl}}/indexes/vector-nasa-ebook-txt/docs/search?api-version=2023-10-01-preview 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
вектора.
Отправьте запрос. Вы должны получить три
k
результата, где первый результат является наиболее актуальным.
Обратите внимание, что во время запроса не заданы свойства векторизатора. Запрос считывает свойства векторизатора согласно назначению поля профиля вектора в индексе.
Проверка журналов
Если вы включили ведение журнала диагностики для службы поиска, выполните запрос Kusto, чтобы подтвердить выполнение запроса в поле вектора:
OperationEvent
| where TIMESTAMP > ago(30m)
| where Name == "Query.Search" and AdditionalInfo["QueryMetadata"]["Vectors"] has "TextLength"
Рекомендации
Если вы настраиваете векторизатор Azure OpenAI, рассмотрите те же рекомендации , которые мы рекомендуем для навыка внедрения Azure OpenAI.