Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Nota:
Esta característica actualmente está en su versión preliminar pública. Esta versión preliminar se ofrece sin contrato de nivel de servicio y no es aconsejable usarla en las cargas de trabajo de producción. Es posible que algunas características no sean compatibles o que tengan sus funcionalidades limitadas. Para más información, consulte Términos de uso complementarios para las versiones preliminares de Microsoft Azure.
La característica de compatibilidad con campos multi vector en Azure AI Search permite indexar varios vectores secundarios dentro de un único campo de documento. Esta característica es valiosa para casos de uso como datos bidireccionales o documentos de formato largo, donde representar el contenido con un único vector provocaría la pérdida de detalles importantes.
Limitaciones
- No se admite el clasificador semántico para fragmentos anidados dentro de un campo complejo. Por lo tanto, el clasificador semántico no admite vectores anidados en campos multi vector.
Entender el soporte para campos multivectoriales
Tradicionalmente, los tipos de vector, por ejemplo Collection(Edm.Single) , solo se podían usar en campos de nivel superior. Con la introducción de la compatibilidad con campos de múltiples vectores, ahora se pueden utilizar tipos de vectores en campos anidados dentro de colecciones complejas, lo que permite asociar varios vectores a un único documento.
Un único documento puede incluir hasta 100 vectores en total, en todos los campos de colección complejos. Los campos vectoriales solo se pueden anidar en un nivel profundo.
Definición de índice con campo multi vector
No se necesitan nuevas propiedades de índice para esta característica. Esta es una definición de índice de ejemplo:
{
"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
}
]
}
]
}
Documento de ingesta de ejemplo
Este es un documento de ejemplo que muestra cómo puede usar campos multi vector en la práctica:
{
"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"
}
]
}
En este ejemplo, el campo de escenas es una colección compleja que contiene varios vectores (los campos de inserción), junto con otros datos asociados. Cada vector representa una escena de la película y podría usarse para buscar escenas similares en otras películas, entre otros casos de uso potenciales.
Consulta con soporte para campos multivector
La característica de compatibilidad con campos multi vector introduce algunos cambios en el mecanismo de consulta en Azure AI Search. Sin embargo, el proceso de consulta principal sigue siendo en gran medida el mismo.
Anteriormente, vectorQueries solo podía establecer como destino los campos vectoriales definidos como campos de índice de nivel superior. Con esta característica, se relaja esta restricción y se permite que vectorQueries tenga como destino campos anidados dentro de una colección de tipos complejos (hasta un nivel profundo).
Además, hay disponible un nuevo parámetro de hora de consulta: perDocumentVectorLimit.
- Establecer
perDocumentVectorLimiten1garantiza que, como máximo, se coincide con un vector por documento, lo que garantiza que los resultados proceden de documentos distintos. - Establecer
perDocumentVectorLimiten0(ilimitado) permite que se coincidan varios vectores pertinentes del mismo documento.
{
"vectorQueries": [
{
"kind": "text",
"text": "whales swimming",
"K": 50,
"fields": "scenes/embedding",
"perDocumentVectorLimit": 0
}
],
"select": "title, scenes/timestamp, scenes/framePath"
}
Clasificación entre varios vectores en un solo campo
Cuando hay varios vectores asociados a un único documento, Azure AI Search usa la puntuación máxima entre ellos para la clasificación. El sistema utiliza el vector más relevante para puntuar cada documento, lo que evita la dilución por las menos relevantes.
Recuperación de elementos relevantes en una colección
Cuando se incluye una colección de tipos complejos en el $select parámetro , solo se devuelven los elementos que coinciden con la consulta vectorial. Esto resulta útil para recuperar metadatos asociados, como marcas de tiempo, descripciones de texto o rutas de acceso de imagen.
Nota:
Para reducir el tamaño de la carga, evite incluir los propios valores vectoriales en el $select parámetro . Considere la posibilidad de omitir el almacenamiento de vectores por completo si no es necesario.
Depuración de consultas multi vector (versión preliminar)
Cuando un documento incluye varios vectores incrustados, como incrustaciones de texto e imágenes en diferentes subcampos, el sistema usa la puntuación de vector más alta en todos los elementos para clasificar el documento.
Para depurar cómo ha contribuido cada vector, use el innerHits modo de depuración (disponible en la API de REST de versión preliminar más reciente).
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"
}
Forma de respuesta de ejemplo
"@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
}
}
]
}
]
}
}
Descripciones de los campos
| Campo | Descripción |
|---|---|
ordinal |
Índice de base cero del elemento dentro de la colección. |
vectors |
Una entrada por campo vectorial que se puede buscar incluido en el elemento . |
searchScore |
La puntuación final del campo después de cualquier nueva puntuación y suma de puntos. |
vectorSimilarity |
Similitud en bruto devuelta por la función de distancia. |
Nota:
innerHits actualmente solo notifica campos vectoriales.
Relación con debug=vector
Estos son algunos hechos sobre esta propiedad:
El interruptor existente
debug=vectorsigue sin cambios.Cuando se usa con campos de varios vectores,
@search.documentDebugInfo.vector.subscoremuestra la puntuación máxima utilizada para clasificar el documento primario, pero no por detalle de elemento.Use
innerHitspara obtener información sobre cómo han contribuido los elementos individuales a la puntuación.