Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Примечание
Поиск с использованием ИИ Azure доступна через портал Azure, REST API и Azure SDKs. Он также лежит в основе Foundry IQ — управляемого слоя знаний, который преобразует корпоративный контент в многократно используемые базы знаний с учетом разрешений доступа для агентов на портале Microsoft Foundry.
Important
Функции, возможности или свойства, помеченные (предварительная версия), не охватываются соглашением об уровне обслуживания, не рекомендуются для рабочих нагрузок и могут изменяться или ограничиваться до того, как они становятся общедоступными. Условия предварительной версии Поиск с использованием ИИ Azure применяются ко всем функциям предварительной версии, независимо от того, является ли он автономным или частью общедоступной функции.
Функция поддержки многоекторных полей (предварительная версия) в Поиск с использованием ИИ Azure позволяет индексировать несколько дочерних векторов в одном поле документа. Эта функция ценна для вариантов использования, таких как многомодальные данные или документы длинной формы, где представление содержимого с одним вектором приведет к потере важных деталей.
Ограничения
- Семантический рангировщик не поддерживается для вложенных блоков в сложном поле. Поэтому семантический рангировщик не поддерживает вложенные векторы в полях с несколькими векторами.
Общие сведения о поддержке многоекторных полей
Традиционно типы векторов, например Collection(Edm.Single) , могут использоваться только в полях верхнего уровня. Благодаря поддержке многоекторных полей теперь можно использовать типы вложенных полей сложных коллекций, что позволяет эффективно связывать несколько векторов с одним документом.
Один документ может содержать до 100 векторов в общей сложности во всех сложных полях коллекции. Векторные поля могут быть вложены только на один уровень глубины.
Определение индекса с многоекторным полем
Для этой функции не требуются новые свойства индекса. Ниже приведен пример определения индекса:
{
"name": "multivector-index",
"fields": [
{
"name": "id",
"type": "Edm.String",
"key": true,
"searchable": true
},
{
"name": "title",
"type": "Edm.String",
"searchable": true
},
{
"name": "description",
"type": "Edm.String",
"searchable": true
},
{
"name": "descriptionEmbedding",
"type": "Collection(Edm.Single)",
"dimensions": 3,
"searchable": true,
"retrievable": true,
"vectorSearchProfile": "hnsw"
},
{
"name": "scenes",
"type": "Collection(Edm.ComplexType)",
"fields": [
{
"name": "embedding",
"type": "Collection(Edm.Single)",
"dimensions": 3,
"searchable": true,
"retrievable": true,
"vectorSearchProfile": "hnsw"
},
{
"name": "timestamp",
"type": "Edm.Int32",
"retrievable": true
},
{
"name": "description",
"type": "Edm.String",
"searchable": true,
"retrievable": true
},
{
"name": "framePath",
"type": "Edm.String",
"retrievable": true
}
]
}
]
}
Пример документа импорта
Ниже приведен пример документа, иллюстрирующий использование многоекторных полей на практике:
{
"id": "123",
"title": "Non-Existent Movie",
"description": "A fictional movie for demonstration purposes.",
"descriptionEmbedding": [1, 2, 3],
"releaseDate": "2025-08-01",
"scenes": [
{
"embedding": [4, 5, 6],
"timestamp": 120,
"description": "A character is introduced.",
"framePath": "nonexistentmovie\\scenes\\scene120.png"
},
{
"embedding": [7, 8, 9],
"timestamp": 2400,
"description": "The climax of the movie.",
"framePath": "nonexistentmovie\\scenes\\scene2400.png"
}
]
}
В этом примере поле сцен представляет собой сложную коллекцию, содержащую несколько векторов (поля внедрения), а также другие связанные данные. Каждый вектор представляет сцену из фильма и может использоваться для поиска аналогичных сцен в других фильмах, среди других потенциальных вариантов использования.
Поддержка запросов с несколькими векторными полями
Функция поддержки многоекторных полей содержит некоторые изменения в механизме запроса в Поиск с использованием ИИ Azure. Однако основной процесс запроса остается в значительной степени одинаковым.
Ранее vectorQueries могло нацеливаться только на векторные поля, определенные как поля индекса верхнего уровня. Благодаря этой функции мы ослабляем это ограничение и разрешаем vectorQueries нацеливаться на поля, вложенные в коллекцию сложных типов (до одного уровня).
Кроме того, доступен новый параметр времени запроса: perDocumentVectorLimit
- Установка
perDocumentVectorLimitв1обеспечивает, что на каждый документ приходится не более одного вектора, что гарантирует, что результаты получены из разных документов. - Настройка
perDocumentVectorLimitна0(неограниченно) позволяет сопоставить несколько соответствующих векторов из одного документа.
{
"vectorQueries": [
{
"kind": "text",
"text": "whales swimming",
"K": 50,
"fields": "scenes/embedding",
"perDocumentVectorLimit": 0
}
],
"select": "title, scenes/timestamp, scenes/framePath"
}
Ранжирование по нескольким векторам в одном поле
Если несколько векторов связаны с одним документом, Поиск с использованием ИИ Azure использует максимальную оценку среди них для ранжирования. Система использует наиболее релевантный вектор для оценки каждого документа, что предотвращает разбавление менее релевантными.
Получение соответствующих элементов в коллекции
Если коллекция сложных типов включена в $select параметр, возвращаются только элементы, соответствующие запросу вектора. Это полезно для получения связанных метаданных, таких как метки времени, текстовые описания или пути изображения.
Примечание
Чтобы уменьшить размер нагрузки, избегайте включения значений векторов в параметр $select. Если это не требуется, рекомендуется полностью исключить хранилище векторов.
Отладка запросов с несколькими векторами (предварительная версия)
Если документ содержит несколько внедренных векторов, таких как вставка текста и изображения в разных подполях, система использует самую высокую оценку векторов во всех элементах для ранжирования документа.
Чтобы отладить, как каждый вектор вносит свой вклад, используйте режим отладки innerHits (доступный в последней предварительной версии REST API).
POST /indexes/my-index/docs/search?api-version=2026-08-01-preview
{
"vectorQueries": [
{
"kind": "vector",
"field": "keyframes.imageEmbedding",
"kNearestNeighborsCount": 5,
"vector": [ /* query vector */ ]
}
],
"debug": "innerHits"
}
Пример фигуры ответа
"@search.documentDebugInfo": {
"innerHits": {
"keyframes": [
{
"ordinal": 0,
"vectors": [
{
"imageEmbedding": {
"searchScore": 0.958,
"vectorSimilarity": 0.956
},
"textEmbedding": {
"searchScore": 0.958,
"vectorSimilarity": 0.956
}
}
]
},
{
"ordinal": 1,
"vectors": [
{
"imageEmbedding": null,
"textEmbedding": {
"searchScore": 0.872,
"vectorSimilarity": 0.869
}
}
]
}
]
}
}
Описания полей
| Поле | Описание |
|---|---|
ordinal |
Отсчитываемый от нуля индекс элемента внутри коллекции. |
vectors |
Одна запись для поля вектора, доступного для поиска, содержащегося в элементе. |
searchScore |
Окончательный счет для этого поля, после любых пересчетов и улучшений. |
vectorSimilarity |
Необработанное сходство, возвращаемое функцией расстояния. |
Примечание
innerHits В настоящее время сообщает только векторные поля.
Связь с debug=vector
Ниже приведены некоторые факты об этом свойстве:
Существующий
debug=vectorкоммутатор остается неизменным.При использовании с полями с несколькими векторами
@search.documentDebugInfo.vector.subscoreпоказывается максимальная оценка, используемая для ранжирования родительского документа, но не отображаются детали для каждого элемента.Используйте
innerHitsдля получения сведений о том, как отдельные элементы способствовали оценке.