Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Замечание
Эта функция сейчас доступна в общедоступной предварительной версии. Этот предварительный просмотр предоставляется без соглашения об уровне обслуживания и не предназначается для производственных рабочих нагрузок. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены. Для получения дополнительной информации см. Дополнительные условия использования для предварительных версий Microsoft 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=2025-11-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для получения сведений о том, как отдельные элементы способствовали оценке.