Настройка векторизатора в индексе поиска
В службе "Поиск ИИ Azure" векторизатор — это компонент, который выполняет векторизацию с помощью развернутой модели внедрения в Azure OpenAI или Azure AI Vision. Он преобразует текст (или изображения) в векторы во время выполнения запроса.
Он определен в индексе поиска, он применяется к полям векторов с возможностью поиска, и он используется во время запроса для создания внедрения для ввода текста или запроса изображения. Если вместо этого необходимо векторизировать содержимое в рамках процесса индексирования, обратитесь к интегрированной векторизации. Для встроенной векторизации во время индексирования можно настроить индексатор и набор навыков, который вызывает модель внедрения для необработанного текста или содержимого изображения.
Чтобы добавить векторизатор в индекс поиска, можно использовать конструктор индексов в портал Azure или вызвать REST API создания или обновления индекса или использовать любой обновленный пакет Azure SDK для предоставления этой функции.
Векторизаторы теперь общедоступны, если вы используете общедоступную пару векторизатора навыков. Векторизатор AzureOpenAIEmbedding и навыки azureOpenAIEmbedding являются общедоступными. Настраиваемый векторизатор веб-API также общедоступен.
Векторизатор визуального распознавания Azure, векторизатор каталога моделей Azure AI Foundry и их эквивалентные навыки по-прежнему находятся в предварительной версии. Набор навыков должен указать REST API 2024-05-01-preview, чтобы использовать навыки предварительного просмотра и векторизаторы.
Необходимые компоненты
Индекс с полями векторов с возможностью поиска в Службе поиска ИИ Azure.
Развернутая модель внедрения (см. следующий раздел).
Разрешения на использование модели внедрения. В Azure OpenAI вызывающий объект должен иметь разрешения пользователя OpenAI в Cognitive Services. Кроме того, вы можете предоставить ключ API.
Visual Studio Code с клиентом REST для отправки запроса и принятия ответа.
Рекомендуется включить ведение журнала диагностики в службе поиска для подтверждения выполнения векторного запроса.
Поддерживаемые модели внедрения
В следующей таблице перечислены модели внедрения, которые можно использовать с векторизатором. Так как для индексирования и запросов необходимо использовать ту же модель внедрения, векторизаторы связаны с навыками, которые создают внедрение во время индексирования. В таблице перечислены навыки, связанные с определенным векторизатором.
Тип векторизатора | Имена моделей | Поставщик моделей | Связанный навык |
---|---|---|---|
azureOpenAI |
text-embedding-ada-002, text-embedding-3 | Azure OpenAI | Навык azureOpenAIEmbedding |
aml |
Facebook-DinoV2-Image-Embeddings, Cohere-embed-v3 | Каталог моделей Azure AI Foundry | Навык AML |
aiServicesVision |
Api многомодальных внедрения 4.0 | Azure AI Vision (с помощью учетной записи azure AI с несколькими службами) | Навыки многомодального внедрения в azure AI Vision |
customWebApi |
Любая модель внедрения | Размещено внешняя среда | Навык пользовательского веб-API |
Попробуйте векторизатор с примерами данных
Мастер импорта и векторизации данных считывает файлы из хранилища 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", "modelName": "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", "modelName": "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
Вставьте в векторный запрос запроса.
### 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
вектора.
Отправьте запрос. Вы должны получить три
k
результата, где первый результат является наиболее актуальным.
Обратите внимание, что во время запроса не заданы свойства векторизатора. Запрос считывает свойства векторизатора согласно назначению поля профиля вектора в индексе.
Проверка журналов
Если вы включили ведение журнала диагностики для службы поиска, выполните запрос Kusto, чтобы подтвердить выполнение запроса в поле вектора:
OperationEvent
| where TIMESTAMP > ago(30m)
| where Name == "Query.Search" and AdditionalInfo["QueryMetadata"]["Vectors"] has "TextLength"
Рекомендации
Если вы настраиваете векторизатор Azure OpenAI, рассмотрите те же рекомендации , которые мы рекомендуем для навыка внедрения Azure OpenAI.