Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Замечание
Поиск с использованием ИИ Azure доступна через портал Azure, REST API и Azure SDKs. Он также лежит в основе Foundry IQ — управляемого слоя знаний, который преобразует корпоративный контент в многократно используемые базы знаний с учетом разрешений доступа для агентов на портале Microsoft Foundry.
В службе "Поиск ИИ Azure" векторизатор преобразует текст или изображения в векторы во время выполнения запроса, что позволяет отправлять текстовые запросы к векторным полям без необходимости самостоятельно вычислять встраивания.
Векторизатор определяется в индексе поиска и назначается полям векторов через профиль вектора. Во время запроса векторизатор вызывает модель внедрения, чтобы создать вектор из входных данных запроса. Дополнительные сведения см. в статье "Использование интегрированной векторизации в запросах".
Чтобы добавить векторизатор в индекс, используйте мастер импорта или конструктор индексов на портале Azure, индексы — создание или обновление (REST API) или пакет azure SDK. В этой статье используется REST для иллюстрации.
Подсказка
Векторизатор обрабатывает векторизацию времени запроса. Чтобы также векторизировать содержимое во время индексирования, настройте индексатор и набор навыков с навыком встраивания. Дополнительные сведения см. в статье Об использовании встроенной векторизации во время индексирования.
Предварительные требования
Индекс с полями векторов с возможностью поиска в службе поиска.
(Необязательно) Ведение журнала диагностики в службе поиска для подтверждения выполнения векторного запроса.
Поддерживаемое развертывание модели встраивания для векторизатора.
Разрешения на обновление и запрос индекса. В этой статье используется рекомендуемая проверка подлинности без ключа. Назначьте роли вкладчик службы поиска и читатель данных индекса поиска вашему учетному аккаунту, войдите в Azure и получите маркер доступа. Если вместо этого используются ключи API , получите ключ администратора для операций обновления и ключ запроса для операций поиска.
Разрешения на использование модели внедрения. Например, при использовании Azure OpenAI вызывающий объект должен иметь разрешения пользователя OpenAI Cognitive Services . Вы также можете использовать ключ API.
Visual Studio Code с расширением клиента REST. Для отправки каждого запроса REST из этой статьи напрямую из редактора, создайте файл формата
.restили.http.
Поддерживаемые модели внедрения
Поиск по искусственному интеллекту Azure предлагает несколько типов векторизаторов, каждый из которых связан с соответствующим навыком. Навык генерирует эмбеддинги во время индексирования, а векторизатор — во время выполнения запроса. Для обеих моделей необходимо использовать одну и ту же модель встраивания, поэтому выберите пару векторизатор-навык, которая указывает на одно развертывание модели.
В следующей таблице перечислены векторизаторы и их поддерживаемые модели и связанные навыки.
| Векторизатор | Поддерживаемые модели | Связанный навык |
|---|---|---|
| Azure OpenAI | text-embedding-ada-002 текст-встраивание-3-большой Встраивание текста - версия 3 - малая |
Внедрение Azure OpenAI |
| каталог моделей Microsoft Foundry (предварительная версия) | Cohere-embed-v3-english Cohere-embed-v3-multilingual Cohere-embed-v4 1 |
AML |
| Azure Vision (предварительная версия) | API многомодальных встраивания 4.0 | Мультимодальные эмбеддинги Azure Vision (предварительная версия) |
| Настраиваемый веб-API | Любая модель встраивания (размещенная внешне) | Настраиваемый веб-API |
1 Можно указать embed-v-4-0 только программным способом с помощью векторизатора каталога моделей AML или векторизатора каталога моделей Microsoft Foundry, а не через портал Azure. Однако вы можете использовать портал для управления набором навыков или векторизатором после этого.
Замечание
Векторизаторы обычно доступны, если вы используете общедоступную пару навыков и векторизатора. Последние сведения о доступности см. в документации для каждого векторизатора и навыка в предыдущей таблице.
Определение векторизатора с помощью мастера
Мастер импорта данных на портале Azure может считывать файлы из хранилища BLOB-объектов Azure, создавать индекс с блоками и векторизованными полями и добавлять векторизатор. По умолчанию векторизатор, созданный мастером, использует ту же модель встраивания, которая применяется для индексирования содержимого BLOB.
Чтобы создать пример индекса с векторизатором с помощью мастера, выполните следующие действия.
Отправка файлов в контейнер в службе хранилища Azure. Мы использовали небольшие текстовые файлы из электронной книги NASA "Земля ночью" для тестирования этих инструкций на бесплатном поисковом сервисе.
Запустите мастер импорта данных. Выберите контейнер BLOB для источника данных.
Выберите тип векторизатора и, если применимо, развертывание модели. В этом примере используется Azure OpenAI и развертывание модели text-embedding-ada-002.
После завершения работы мастера и завершения всей обработки индексатора необходимо иметь индекс с полем вектора с возможностью поиска. Определение JSON поля выглядит следующим образом:
{ "name": "text_vector", "type": "Collection(Edm.Single)", "searchable": true, "filterable": false, "retrievable": true, "stored": true, "sortable": false, "facetable": false, "key": false, "dimensions": 1536, "vectorSearchProfile": "vector-nasa-ebook-text-profile", "synonymMaps": [] }У вас также должен быть векторный профиль, алгоритм векторного поиска и векторизатор. Их определения JSON выглядят следующим образом:
"algorithms": [ { "name": "vector-nasa-ebook-text-algorithm", "kind": "hnsw", "hnswParameters": { "metric": "cosine", "m": 4, "efConstruction": 400, "efSearch": 500 } } ], "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-azure-openai-resource.openai.azure.com", "deploymentId": "text-embedding-ada-002", "modelName": "text-embedding-ada-002", }, } ]
Определение векторизатора программным способом
Если вы не использовали мастер портала или хотите добавить векторизатор в существующий индекс, можно определить векторизатор и профиль векторов программным способом. Профиль вектора связывает векторизатора с одним или несколькими векторными полями и задает алгоритм векторного поиска, используемый для структур навигации.
Определение векторизатора и профиля вектора в существующем индексе:
Получение определения индекса с помощью Indexes - Get (REST API). Замените имя службы, имя индекса и маркер доступа собственными значениями.
### Get index definition GET https://my-search-service.search.windows.net/indexes/my-index?api-version=2026-04-01 HTTP/1.1 Authorization: Bearer <your-access-token> // For API keys, replace this line with api-key: <your-admin-api-key>Предупреждение
Полученный пользовательский векторизатор Web API содержит
<redacted>для каждого значенияhttpHeaders. Если вы обновляете один и тот же векторизатор, не изменяя егоname,kindилиuri, вы можете повторно отправить<redacted>для сопоставления с существующими именами заголовков. При измененииuriотправьте фактические значения для каждойhttpHeadersзаписи. Сведения о других правилах обновления см. в разделе Пользовательский векторизатор Web API.Используйте индексы— создание или обновление (REST API) для обновления определения индекса. Вставьте полное определение индекса в текст запроса.
### Update index definition PUT https://my-search-service.search.windows.net/indexes/my-index?api-version=2026-04-01 HTTP/1.1 Content-Type: application/json Authorization: Bearer <your-access-token> // For API keys, replace this line with api-key: <your-admin-api-key> // Paste your index definition hereДобавьте раздел
vectorizersв объектvectorSearch. В этом разделе указываются сведения о подключении к развернутой модели внедрения. Следующий пример включает как Azure OpenAI, так и пользовательский веб API для сравнения."vectorSearch": { "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": "<your-azure-openai-api-key>" } }, { "name": "my_custom_vectorizer", "kind": "customWebApi", "customWebApiParameters": { "uri": "https://contoso.embeddings.com", "httpMethod": "POST", "authResourceId": null, "authIdentity": null } } ] }Добавьте
algorithmsраздел вvectorSearch. В этом разделе определяется алгоритм векторного поиска , используемый для структур навигации."algorithms": [ { "name": "my_hnsw_algorithm", "kind": "hnsw", "hnswParameters": { "m": 4, "efConstruction": 400, "efSearch": 500, "metric": "cosine" } } ]Добавьте раздел
profilesвvectorSearch. В этом разделе ссылается алгоритм векторизатора и векторного поиска, определенный на предыдущих шагах."profiles": [ { "name": "my_vector_profile", "algorithm": "my_hnsw_algorithm", "vectorizer": "my_azure_open_ai_vectorizer" } ]В массиве
fieldsназначьте профиль вектора одному или нескольким полям вектора, указавvectorSearchProfileсвойство."fields": [ ... // Trimmed for brevity { "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": 1536, "vectorSearchProfile": "my_vector_profile", "searchable": true, "retrievable": true } ]Отправьте запрос PUT для обновления определения индекса. Если запрос выполнен успешно, вы должны получить
204 No Contentответ.Чтобы проверить векторизатор и профиль вектора, повторно запустите запрос GET с первого шага. Убедитесь, что:
Массив
vectorSearch.vectorizersсодержит определение вашего векторизатора и правильныеkindпараметры подключения.Массив
vectorSearch.profilesсодержит профиль, ссылающийся на векторизатор по имени.Массив
vectorSearch.algorithmsвключает алгоритм векторного поиска, на который ссылается ваш профиль.Свойство
vectorSearchProfileвекторных полей в массивеfieldsсоответствует имени профиля.
Тестирование векторизатора
Чтобы подтвердить работу векторизатора, отправьте векторный запрос , который передает текстовую строку вместо вектора. В следующем примере используется пример индекса из определения векторизатора с помощью мастера, но можно протестировать собственный индекс, изменив имена полей и параметры запроса.
Используйте Документы - Search Post (REST API) для отправки запроса. Замените имя службы, имя индекса и маркер доступа собственными значениями.
### Test a vectorizer with a vector query
POST https://my-search-service.search.windows.net/indexes/vector-nasa-ebook-txt/docs/search?api-version=2026-04-01 HTTP/1.1
Content-Type: application/json
Authorization: Bearer <your-access-token> // For API keys, replace this line with api-key: <your-query-api-key>
{
"count": true,
"select": "title, chunk",
"vectorQueries": [
{
"kind": "text",
"text": "what cloud formations exist in the troposphere",
"fields": "text_vector",
"k": 3,
"exhaustive": true
}
]
}
Основные моменты:
"kind": "text"сообщает поисковой системе, что входные данные являются текстовой строкой и используют векторизатор, связанный с полем поиска."text"— это строка обычного языка для векторизации."fields": "text_vector"— имя поля для запроса. При использовании примера индекса, созданного мастером, создается векторное полеtext_vector."exhaustive": trueминует граф HNSW и выполняет поиск методом перебора по всем векторам. Этот параметр полезен для проверки точности, но медленнее, чем приблизительный поиск по умолчанию. Удалите этот параметр в рабочих запросах для повышения производительности.Запрос не задает свойства векторизатора. Поисковая система автоматически считывает их из профиля вектора, назначенного полю.
Если векторизатор настроен правильно, ответ возвращает соответствующие документы, ранжированные по сходству. Вы должны получить три результата (k3), первое из которых наиболее актуально.
{
"@odata.count": 3,
"value": [
{
"@search.score": 0.66195244,
"chunk": "Cloud Shadow\tGermany\nIn November 2012, the Earth Observing...",
"title": "page-25.txt"
},
... // Trimmed for brevity
]
}
Устранение неполадок
Если векторизатор не работает должным образом, начните с таблицы распространенных ошибок, а затем проверьте журналы диагностики для получения дополнительных сведений.
Распространенные ошибки
В следующей таблице перечислены распространенные ошибки векторизатора и способы их устранения.
| Ошибка | Причина | Резолюция |
|---|---|---|
| Сбой проверки подлинности (401/403) | Недопустимый ключ API или отсутствует назначение ролей RBAC для модели внедрения. | Проверьте ваш ключ API или убедитесь, что удостоверение службы поиска обладает ролью Cognitive Services OpenAI User в ресурсе Azure OpenAI. |
| Несоответствие измерений | Модель векторизатора создает эмбеддинги, количество измерений которых отличается от ожидаемого векторным полем. | Убедитесь, что свойство dimensions векторного поля соответствует размерам на выходе модели встраивания (например, 1536 для text-embedding-ada-002). |
| Ограничение скорости (429) | Поставщик встраиваемой модели ограничивает запросы. | Просмотрите ограничения квоты Azure OpenAI и рассмотрите возможность увеличения лимита токенов в минуту (TPM) или уменьшения размера пакета. |
| Векторизатор не найден | Профиль вектора ссылается на имя векторизатора, которое не существует в индексе. | Убедитесь, что vectorizer свойство в профиле вектора соответствует name векторизатору в массиве vectorizers . |
| Пустые результаты | Преобразование текста в вектор успешно выполнено, но не было найдено совпадений по запросу. | Убедитесь, что fields параметр в векторном запросе соответствует имени поля вектора для поиска. Увеличьте k значение, чтобы вернуть больше результатов. |
Проверка журналов
Если вы включили ведение журнала диагностики для службы поиска, выполните следующий запрос Kusto, чтобы подтвердить выполнение запроса в поле вектора.
OperationEvent
| where TIMESTAMP > ago(30m)
| where Name == "Query.Search" and AdditionalInfo["QueryMetadata"]["Vectors"] has "TextLength"
Лучшие практики
Используйте управляемое удостоверение вместо ключей API в рабочей среде. Управляемые удостоверения являются более безопасными и избегают затрат на смену ключей. Дополнительные сведения см. в статье "Настройка службы поиска для подключения с помощью управляемого удостоверения".
Разверните модель внедрения в том же регионе, что и служба поиска. Совместное размещение уменьшает задержку и повышает скорость передачи данных между службами. Векторизаторы доступны во всех регионах, где доступен поиск ИИ Azure, но доступность модели зависит от поставщика.
Используйте отдельные развертывания одной и той же модели внедрения для индексирования и запросов. Выделенные развертывания позволяют выделять квоту TPM независимо для каждой загрузки и упростить определение источников трафика.
Отслеживайте квоту Azure OpenAI TPM. Если вы достигаете предела вашего TPM, просмотрите ограничения квоты и попробуйте запросить более высокий предел, обратившись в службу поддержки.
Ознакомьтесь с рекомендациями по внедрению Azure OpenAI. Это же руководство относится к векторизатору Azure OpenAI.