Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Note
Recherche Azure AI est disponible via le portail Azure, les API REST et les SDK Azure. Il sous-tend également Foundry IQ, la couche de connaissances managée qui transforme le contenu d’entreprise en bases de connaissances réutilisables et prenant en charge les autorisations pour les agents dans le portail Microsoft Foundry.
Note
Cette fonctionnalité est actuellement en préversion. Cette préversion est fournie sans contrat de niveau de service et n’est pas recommandée pour les charges de travail de production. Certaines fonctionnalités peuvent ne pas être prises en charge ou avoir des fonctionnalités contraintes. Pour plus d’informations, consultez les Conditions d’utilisation supplémentaires des versions préliminaires de Microsoft Azure.
La fonctionnalité de prise en charge du champ multivecteur dans Recherche Azure AI vous permet de référencer plusieurs vecteurs enfants dans un seul champ de document. Cette fonctionnalité est utile pour les cas d’usage tels que les données modales ou les documents de longue durée, où la représentation du contenu avec un seul vecteur entraînerait une perte de détails importants.
Limitations
- Le ranker sémantique n’est pas pris en charge pour les blocs imbriqués dans un champ complexe. Par conséquent, le ranker sémantique ne prend pas en charge les vecteurs imbriqués dans les champs à vecteurs multiples.
Comprendre la prise en charge des champs multi-vecteurs
Traditionnellement, les types de vecteurs, par exemple Collection(Edm.Single) , ne peuvent être utilisés que dans les champs de niveau supérieur. Avec l’introduction de la prise en charge des champs multi-vecteurs, vous pouvez désormais utiliser des types de vecteurs dans des champs imbriqués de collections complexes, ce qui permet à plusieurs vecteurs d’être associés à un seul document.
Un document unique peut inclure jusqu’à 100 vecteurs au total, dans tous les champs de collection complexes. Les champs vectoriels ne peuvent être imbriqués qu’à un niveau profond.
Définition d’index avec champ multi-vecteur
Aucune nouvelle propriété d’index n’est nécessaire pour cette fonctionnalité. Voici un exemple de définition d’index :
{
"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
}
]
}
]
}
Exemple de document d’ingestion
Voici un exemple de document qui illustre la façon dont vous pouvez utiliser des champs multi-vecteurs dans la pratique :
{
"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"
}
]
}
Dans cet exemple, le champ de scènes est une collection complexe contenant plusieurs vecteurs (champs d’incorporation), ainsi que d’autres données associées. Chaque vecteur représente une scène du film et peut être utilisé pour trouver des scènes similaires dans d’autres films, entre autres cas d’usage potentiels.
Requête avec prise en charge des champs multi-vecteurs
La fonctionnalité de prise en charge de champ multi-vecteur introduit certaines modifications apportées au mécanisme de requête dans Recherche Azure AI. Toutefois, le processus d’interrogation principal reste largement le même.
Auparavant, vectorQueries seuls les champs vectoriels cibles définis en tant que champs d’index de niveau supérieur pouvaient être ciblés. Avec cette fonctionnalité, nous allons assouplir cette restriction et autoriser vectorQueries à cibler des champs imbriqués dans une collection de types complexes (jusqu’à un niveau profond).
En outre, un nouveau paramètre de temps de requête est disponible : perDocumentVectorLimit.
- Le réglage de
perDocumentVectorLimiten1garantit qu'au plus un vecteur par document est mis en correspondance, assurant ainsi que les résultats proviennent de documents distincts. - Le paramètre
perDocumentVectorLimitsur0(illimité) permet à plusieurs vecteurs pertinents du même document d’être mis en correspondance.
{
"vectorQueries": [
{
"kind": "text",
"text": "whales swimming",
"K": 50,
"fields": "scenes/embedding",
"perDocumentVectorLimit": 0
}
],
"select": "title, scenes/timestamp, scenes/framePath"
}
Classer selon plusieurs vecteurs dans un même champ
Lorsque plusieurs vecteurs sont associés à un document unique, Recherche Azure AI utilise le score maximal entre eux pour le classement. Le système utilise le vecteur le plus pertinent pour noter chaque document, empêchant la dilution par des vecteurs moins pertinents.
Récupérer des éléments pertinents dans une collection
Lorsqu’une collection de types complexes est incluse dans le $select paramètre, seuls les éléments correspondant à la requête vectorielle sont retournés. Cela est utile pour récupérer les métadonnées associées, telles que les horodatages, les descriptions de texte ou les chemins d’accès aux images.
Note
Pour réduire la taille de la charge utile, évitez d’inclure les valeurs vectorielles elles-mêmes dans le $select paramètre. Envisagez d’omettre entièrement le stockage vectoriel s’il n’est pas nécessaire.
Déboguer des requêtes multi-vecteurs (aperçu)
Lorsqu’un document inclut plusieurs vecteurs incorporés, tels que du texte et des incorporations d’images dans différents sous-champs, le système utilise le score de vecteur le plus élevé entre tous les éléments pour classer le document.
Pour déboguer la façon dont chaque vecteur a contribué, utilisez le innerHits mode débogage (disponible dans la dernière API REST en préversion).
POST /indexes/my-index/docs/search?api-version=2026-05-01-preview
{
"vectorQueries": [
{
"kind": "vector",
"field": "keyframes.imageEmbedding",
"kNearestNeighborsCount": 5,
"vector": [ /* query vector */ ]
}
],
"debug": "innerHits"
}
Exemple de forme de réponse
"@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
}
}
]
}
]
}
}
Descriptions des champs
| Champ | Description |
|---|---|
ordinal |
Index de base zéro de l'élément dans la collection. |
vectors |
Une entrée par champ de vecteur pouvant faire l’objet d’une recherche contenue dans l’élément. |
searchScore |
Score final pour ce champ, après tous les rescoring et boosts. |
vectorSimilarity |
Similarité brute retournée par la fonction de distance. |
Note
innerHits indique actuellement uniquement les champs vectoriels.
Relation de débogage=vecteur
Voici quelques faits sur cette propriété :
Le commutateur existant
debug=vectorreste inchangé.Lorsqu’il est utilisé avec des champs à vecteurs multiples,
@search.documentDebugInfo.vector.subscoreaffiche le score maximal utilisé pour classer le document parent, mais pas les détails par élément.Permet
innerHitsd’obtenir des informations sur la façon dont les éléments individuels ont contribué au score.