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.
En este tutorial, creará una canalización de indexador multimodal que realiza estas tareas:
- Extracción y fragmentación de texto e imágenes
- Vectorizar texto e imágenes para la búsqueda de similitud
- Envío de imágenes recortadas a un almacén de conocimiento para su recuperación por parte de la aplicación
En este tutorial se muestran varios conjuntos de aptitudes en paralelo para ilustrar diferentes formas de extraer, fragmentar y vectorizar contenido vectorial.
Prerrequisitos
Azure AI Search, en el plan de tarifa básico o superior si desea usar los datos de ejemplo. Configure una identidad administrada para el acceso basado en roles a modelos y datos.
Azure Storage, que se usa para almacenar datos de ejemplo y para crear un almacén de conocimiento.
Recurso de Microsoft Foundry que proporciona modelos y API de Foundry. Si usa Azure AI Vision multimodal, elija una de sus regiones admitidas para el recurso de Microsoft Foundry.
Visual Studio Code con el cliente REST o la extensión de Python. Si no ha instalado una versión adecuada de Python, siga las instrucciones del Tutorial de Python de VS Code.
La indexación multimodal se implementa a través de habilidades que llaman a modelos y API de inteligencia artificial en un flujo de trabajo de indexación. Los requisitos previos del modelo varían en función de las aptitudes elegidas para cada tarea.
Sugerencia
Para completar este tutorial en el nivel gratis, use un documento más pequeño con menos imágenes. En este tutorial solo se usan modelos Foundry, pero puede crear aptitudes personalizadas para usar otros modelos.
Configurar el acceso
Antes de empezar, asegúrese de que tiene permisos para acceder al contenido y las operaciones en Azure AI Search. En esta guía de inicio rápido se usa Microsoft Entra ID para la autenticación y el acceso basado en roles para la autorización. Debe ser Propietario o Administrador de acceso de usuario para asignar roles. Si los roles no son factibles, use la autenticación basada en claves en su lugar.
Para configurar el acceso basado en rol recomendado:
Habilite el acceso basado en roles para el servicio de búsqueda.
Asigne los siguientes roles a la cuenta de usuario.
Colaborador del servicio Search
Colaborador de datos de índice de búsqueda
Lector de datos de índice de búsqueda
Obtención del punto de conexión
Cada servicio azure AI Search tiene un punto de conexión, que es una dirección URL única que identifica y proporciona acceso de red al servicio. En una sección posterior, especifique este punto de conexión para conectarse al servicio de búsqueda mediante programación.
Para obtener el punto de conexión:
Inicie sesión en Azure Portal y seleccione el servicio de búsqueda.
En el panel izquierdo, seleccione Información general.
Anote el punto de conexión, que debería tener un aspecto similar a
https://my-service.search.windows.net.
Preparación de los datos
Los datos de ejemplo son un documento PDF de 36 páginas que combina contenido visual enriquecido, como gráficos, infografías y páginas escaneadas, con texto original. Azure Storage proporciona los datos de ejemplo y hospeda el almacén de conocimiento. Una identidad administrada del servicio de búsqueda necesita:
Acceso de lectura al almacenamiento de Azure para recuperar datos de ejemplo.
Acceso de escritura para crear un almacén de conocimiento. El servicio de búsqueda crea el contenedor para las imágenes recortadas durante el procesamiento del conjunto de aptitudes, con el nombre que se proporciona en una variable de entorno.
Siga estos pasos para configurar los datos de ejemplo.
Descargue el siguiente PDF de ejemplo: sustainable-ai-pdf
Inicie sesión en Azure Portal.
En Azure Storage, cree un contenedor denominado sustainable-ai-pdf.
Asigne roles a la identidad administrada del servicio de búsqueda:
Lector de datos de Storage Blob para la recuperación de datos
Colaborador de datos de Storage Blob y Colaborador de datos de tabla de almacenamiento para crear el almacén de conocimiento.
Mientras tienes las páginas de almacenamiento de Azure abiertas en el portal de Azure, obten una cadena de conexión para la variable de entorno.
En Configuración>Puntos de conexión, seleccione el punto de conexión para el ID de recurso. Debería ser similar al ejemplo siguiente:
/subscriptions/00000000-0000-0000-0000-00000000/resourceGroups/rg-mydemo/providers/Microsoft.Storage/storageAccounts/mydemostorage/blobServices/default.Prefijo
ResourceId=a esta cadena de conexión. Use esta versión para la variable de entorno.ResourceId=/subscriptions/00000000-0000-0000-0000-00000000/resourceGroups/rg-mydemo/providers/Microsoft.Storage/storageAccounts/mydemostorage/blobServices/defaultPara las conexiones realizadas mediante una identidad administrada asignada por el usuario, use la misma cadena de conexión y proporcione una
identitypropiedad establecida en una identidad administrada asignada por el usuario predefinida."credentials" : { "connectionString" : "ResourceId=/subscriptions/00000000-0000-0000-0000-00000000/resourceGroups/MY-DEMO-RESOURCE-GROUP/providers/Microsoft.Storage/storageAccounts/MY-DEMO-STORAGE-ACCOUNT/;" }, "identity" : { "@odata.type": "#Microsoft.Azure.Search.DataUserAssignedIdentity", "userAssignedIdentity" : "/subscriptions/00000000-0000-0000-0000-00000000/resourcegroups/MY-DEMO-RESOURCE-GROUP/providers/Microsoft.ManagedIdentity/userAssignedIdentities/MY-DEMO-USER-MANAGED-IDENTITY" }
Elección de aptitudes para la indexación multimodal
Las definiciones de índice, origen de datos e indexador son principalmente las mismas para todos los escenarios, pero el conjunto de aptitudes puede incluir una combinación de aptitudes diferente en función de cómo quiera extraer, fragmentar y vectorizar texto e imágenes.
Elija aptitudes para la extracción y fragmentación:
- Extracción de documentos, división de texto
- Diseño del documento
Elija aptitudes para la vectorización:
- Instrucciones de IA generativa, vectores de Azure OpenAI
- Inserción Multimodal de Azure AI Vision
La mayoría de estas aptitudes dependen de un modelo implementado o de un recurso de Microsoft Foundry. En la tabla siguiente se identifica el modelo que respalda cada aptitud, además del recurso y los permisos que proporcionan acceso al modelo.
| Habilidad | Usage | Modelo | Resource | Permissions |
|---|---|---|---|---|
| Habilidad de extracción de documentos, Habilidad de división de texto | Extraer y fragmentar en función del tamaño fijo. La extracción de texto es libre. La extracción de imágenes es facturable. |
Ninguno (integrados) | Azure AI Search | Consulte Configuración del acceso |
| Aptitud de diseño de documento | Extraer y fragmentar en función del diseño del documento. | Inteligencia de documentos 4.0 | Microsoft Foundry | Usuario de Cognitive Services |
| Habilidad de Azure AI Vision | Vectorice el texto y el contenido de la imagen. | Azure AI Vision multimodal 4.0 | Microsoft Foundry | Usuario de Cognitive Services |
| Aptitud de solicitud de GenAI | Llame a un LLM para generar descripciones de texto del contenido de la imagen. | GPT-5 o GPT-4 | Microsoft Foundry | Usuario de Cognitive Services |
| Aptitud de inserción de Azure OpenAI | Vectorice el texto y las descripciones de imágenes textuales generadas. | Text-embedding-3 or text-embedding-ada-002 | Microsoft Foundry | Usuario de Cognitive Services |
El uso del modelo es facturable, excepto la extracción de texto y la división de texto.
Las implementaciones de modelos pueden estar en cualquier región admitida si el servicio de búsqueda se conecta a través del punto de conexión público, una conexión privada o si la conexión de facturación no tiene clave. De lo contrario, si la conexión está basada en claves, adjunte un recurso de Microsoft Foundry desde la misma región que Azure AI Search.
Configuración del entorno
En este tutorial, la conexión del cliente REST local a Azure AI Search requiere un punto de conexión y una clave de API. Puede obtener estos valores en Azure Portal. Para ver otros métodos de conexión, consulte Conexión a un servicio de búsqueda.
Para las conexiones autenticadas que se producen durante el procesamiento del indexador y del conjunto de aptitudes, el servicio de búsqueda usa las asignaciones de roles que definió anteriormente.
Inicie Visual Studio Code y cree un nuevo archivo.
Proporcione valores para las variables usadas en la solicitud:
@searchUrl = PUT-YOUR-SEARCH-SERVICE-ENDPOINT-HERE @storageConnection = PUT-YOUR-STORAGE-CONNECTION-STRING-HERE @imageProjectionContainer=sustainable-ai-pdf-images @token = PUT-YOUR-PERSONAL-IDENTITY-TOKEN HEREPara
@storageConnection, asegúrese de que la cadena de conexión no termine con un punto y coma ni con comillas. Consulte Preparación de los datos para la sintaxis de la cadena de conexión.En
@imageProjectionContainer, proporcione un nombre de contenedor único en Blob Storage. Azure AI Search crea este contenedor durante el procesamiento de aptitudes.Para obtener ayuda para obtener un token de acceso, consulte Conexión a Azure AI Search. Si no puede usar roles, consulte Conexión con claves.
Agregue esta variable si usa la aptitud Diseño de documento o la aptitud Azure AI Vision (usa la versión del modelo 2023-04-15):
@foundryUrl = PUT-YOUR-MULTISERVICE-AZURE-AI-FOUNDRY-ENDPOINT-HERE @azureAiVisionModelVersion = 2023-04-15Agregue estas variables si usa la habilidad de solicitud de GenAI y la habilidad de incrustación de Azure OpenAI:
@chatCompletionModelUri = PUT-YOUR-DEPLOYED-MODEL-URI-HERE @chatCompletionModelKey = PUT-YOUR-MODEL-KEY-HERE @textEmbeddingModelUri = PUT-YOUR-DEPLOYED-MODEL-URI-HERE @textEmbeddingModelKey = PUT-YOUR-MODEL-KEY-HEREGuarde el archivo mediante una extensión de archivo
.resto.http. Para obtener ayuda con el cliente REST, consulte Inicio rápido: Búsqueda de texto completo mediante REST.
El mismo recurso Foundry puede proporcionar Azure AI Vision, Document Intelligence, un modelo de finalización de chat y un modelo de incrustación de texto. Asegúrese de que la región admita los modelos que necesita. Si una región está en capacidad, es posible que tenga que crear un nuevo recurso para implementar los modelos necesarios.
Configuración de una canalización
Una canalización de indexador consta de cuatro componentes: origen de datos, índice, conjunto de aptitudes e indexador.
- Creación de un origen de datos
- Creación de un índice
- Creación de un conjunto de aptitudes para la extracción, fragmentación y vectorización
- Creación (y ejecución) de un indexador
Descarga de archivos REST
El repositorio de GitHub azure-search-rest-samples contiene archivos .REST que crean la canalización y consultan el índice.
Sugerencia
Consulte el repositorio de GitHub azure-ai-search-multimodal-sample para ver un ejemplo de Python.
Creación de un origen de datos
Crear origen de datos (REST) crea una conexión de origen de datos que especifica qué datos se van a indexar.
POST {{searchUrl}}/datasources?api-version=2025-11-01-preview HTTP/1.1
Content-Type: application/json
Authorization: Bearer {{token}}
{
"name":"demo-multimodal-ds",
"description":null,
"type":"azureblob",
"subtype":null,
"credentials":{
"connectionString":"{{storageConnection}}"
},
"container":{
"name":"sustainable-ai-pdf",
"query":null
},
"dataChangeDetectionPolicy":null,
"dataDeletionDetectionPolicy":null,
"encryptionKey":null,
"identity":null
}
Envíe la solicitud. La respuesta debería tener este aspecto:
HTTP/1.1 201 Created
Transfer-Encoding: chunked
Content-Type: application/json; odata.metadata=minimal; odata.streaming=true; charset=utf-8
Location: https://<YOUR-SEARCH-SERVICE-NAME>.search.windows-int.net:443/datasources('demo-multimodal-ds')?api-version=2025-11-01-preview -Preview
Server: Microsoft-IIS/10.0
Strict-Transport-Security: max-age=2592000, max-age=15724800; includeSubDomains
Preference-Applied: odata.include-annotations="*"
OData-Version: 4.0
request-id: 4eb8bcc3-27b5-44af-834e-295ed078e8ed
elapsed-time: 346
Date: Sat, 26 Apr 2026 21:25:24 GMT
Connection: close
{
"name": "demo-multimodal-ds",
"description": null,
"type": "azureblob",
"subtype": null,
"indexerPermissionOptions": [],
"credentials": {
"connectionString": null
},
"container": {
"name": "sustainable-ai-pdf",
"query": null
},
"dataChangeDetectionPolicy": null,
"dataDeletionDetectionPolicy": null,
"encryptionKey": null,
"identity": null
}
Creación de un índice
Create Index (REST) crea un índice en el servicio de búsqueda. El índice es similar en todos los conjuntos de aptitudes, con las siguientes excepciones:
En la sección se
vectorizersdefine cómo se vectoriza el texto de la consulta en tiempo de búsqueda. Debe usar el mismo proveedor de incrustaciones y la misma familia de modelos utilizados por el conjunto de aptitudes (incrustación multimodal de Azure AI Vision o incrustación de texto de Azure OpenAI), por lo que los vectores de consulta y los vectores indexados son compatibles.El
content_embeddingvalor del campodimensionsdebe coincidir exactamente con el tamaño de vector generado por el modelo de incrustación (por ejemplo,1024para Azure AI Vision multimodal o3072paratext-embedding-3-large). Una falta de coincidencia puede provocar errores de indexación o consulta.Para los tipos complejos, los nombres de campo anidados del índice deben coincidir exactamente con los nombres finales de datos enriquecidos (incluido el uso de mayúsculas y minúsculas). Azure AI Search no puede asignar subcampos anidados a nombres diferentes. Use
location_metadata,bounding_polygonsypage_numberpara los campos que aceptan salidas de división de texto, ylocationMetadata,boundingPolygonsypageNumberpara los campos que aceptan salidas de diseño de documento.
Estas son las definiciones de índice para cada combinación de aptitudes.
- Extracción de documentos e incrustación multimodal
- Extracción de documentos e inserción de texto
- Diseño de documento e integración multimodal
- Inserción de texto y diseño de documentos
Este patrón usa:
Aptitud de extracción de documentos y Aptitud de división de texto para la extracción y fragmentación.
Habilidad multimodal de Azure AI Vision para representaciones de texto e imágenes.
{
"name":"demo-multimodal-1-index",
"fields":[
{
"name":"content_id",
"type":"Edm.String",
"retrievable":true,
"key":true,
"analyzer":"keyword"
},
{
"name":"text_document_id",
"type":"Edm.String",
"searchable":false,
"filterable":true,
"retrievable":true,
"stored":true,
"sortable":false,
"facetable":false
},
{
"name":"document_title",
"type":"Edm.String",
"searchable":true
},
{
"name":"image_document_id",
"type":"Edm.String",
"filterable":true,
"retrievable":true
},
{
"name":"content_text",
"type":"Edm.String",
"searchable":true,
"retrievable":true
},
{
"name":"content_embedding",
"type":"Collection(Edm.Single)",
"dimensions":1024,
"searchable":true,
"retrievable":true,
"vectorSearchProfile":"hnsw"
},
{
"name":"content_path",
"type":"Edm.String",
"searchable":false,
"retrievable":true
},
{
"name":"location_metadata",
"type":"Edm.ComplexType",
"fields":[
{
"name":"page_number",
"type":"Edm.Int32",
"searchable":false,
"retrievable":true
},
{
"name":"bounding_polygons",
"type":"Edm.String",
"searchable":false,
"retrievable":true,
"filterable":false,
"sortable":false,
"facetable":false
}
]
}
],
"vectorSearch":{
"profiles":[
{
"name":"hnsw",
"algorithm":"defaulthnsw",
"vectorizer":"demo-vectorizer"
}
],
"algorithms":[
{
"name":"defaulthnsw",
"kind":"hnsw",
"hnswParameters":{
"m":4,
"efConstruction":400,
"metric":"cosine"
}
}
],
"vectorizers":[
{
"name":"demo-vectorizer",
"kind":"aiServicesVision",
"aiServicesVisionParameters":{
"resourceUri":"{{foundryUrl}}",
"authIdentity":null,
"modelVersion":"{{azureAiVisionModelVersion}}"
}
}
]
},
"semantic":{
"defaultConfiguration":"semanticconfig",
"configurations":[
{
"name":"semanticconfig",
"prioritizedFields":{
"titleField":{
"fieldName":"document_title"
},
"prioritizedContentFields":[
],
"prioritizedKeywordsFields":[
]
}
}
]
}
}
Puntos clave:
content_embeddinges el único campo vectorial y almacena vectores para el contenido de texto e imagen. Debe configurarse con dimensiones adecuadas para el modelo basado en vectores como3072para text-embedding-3-large y un perfil de búsqueda de vectores.content_pathes la ruta de cada imagen en el almacén de conocimiento.location_metadataolocationMetadatacaptura los metadatos de los polígono delimitadores y de los números de página de cada imagen normalizada, lo que permite una búsqueda espacial precisa o superposiciones de interfaz de usuario. Los nombres de campo varían en función de cómo se extrae la información.Para la extracción de contenido basada en la habilidad de División de texto, los metadatos de ubicación solo se admiten para archivos PDF. Además, para la aptitud División de texto (Text Split), debe incluir una aptitud Conformador (Shaper) para capturar los metadatos de la ubicación en memoria y representarlos en el árbol de documentos. La aptitud Conformador también se encarga de añadir el nombre del contenedor del almacén de conocimiento a
content_path.
Creación de un conjunto de aptitudes para la extracción, fragmentación y vectorización
Crear conjunto de aptitudes (REST) crea un conjunto de aptitudes en el servicio de búsqueda. Un conjunto de aptitudes define las operaciones que extraen, fragmentan y vectorizan contenido antes de la indexación.
Hay cuatro patrones de habilidades. Cada uno muestra una estrategia de extracción y fragmentación, emparejada con una estrategia de vectorización. Hay dos diferencias clave en cada patrón: la composición del conjunto de habilidades y indexProjections. Las proyecciones varían en función de los resultados de cada habilidad de incrustación.
Los cuatro patrones incluyen la habilidad Shaper. El resultado de la aptitud Conformador crea la ruta normalizada de las imágenes en el almacén de conocimiento y los metadatos de la ubicación (número de página y polígonos delimitadores).
- Extracción de documentos e incrustación multimodal
- Extracción de documentos e inserción de texto
- Diseño de documento e integración multimodal
- Inserción de texto y diseño de documentos
Este patrón usa:
Aptitud de extracción de documentos y Aptitud de división de texto para la extracción y fragmentación.
Habilidad multimodal de Azure AI Vision para representaciones de texto e imágenes.
La habilidad Conformador captura los metadatos de la ubicación y el nombre del contenedor para la ruta del archivo de imagen en el almacén de conocimiento. Esta funcionalidad es única para el contenido pdf y la extracción de documentos.
{
"name":"demo-multimodal-skillset",
"description":"A test skillset",
"skills":[
{
"@odata.type":"#Microsoft.Skills.Util.DocumentExtractionSkill",
"name":"document-extraction-skill",
"description":"Document extraction skill to extract text and images from documents",
"parsingMode":"default",
"dataToExtract":"contentAndMetadata",
"configuration":{
"imageAction":"generateNormalizedImages",
"normalizedImageMaxWidth":2000,
"normalizedImageMaxHeight":2000
},
"context":"/document",
"inputs":[
{
"name":"file_data",
"source":"/document/file_data"
}
],
"outputs":[
{
"name":"content",
"targetName":"extracted_content"
},
{
"name":"normalized_images",
"targetName":"normalized_images"
}
]
},
{
"@odata.type":"#Microsoft.Skills.Text.SplitSkill",
"name":"split-skill",
"description":"Split skill to chunk documents",
"context":"/document",
"defaultLanguageCode":"en",
"textSplitMode":"pages",
"maximumPageLength":2000,
"pageOverlapLength":200,
"unit":"characters",
"inputs":[
{
"name":"text",
"source":"/document/extracted_content",
"inputs":[
]
}
],
"outputs":[
{
"name":"textItems",
"targetName":"pages"
}
]
},
{
"@odata.type":"#Microsoft.Skills.Vision.VectorizeSkill",
"name":"text-embedding-skill",
"description":"Vision Vectorization skill for text",
"context":"/document/pages/*",
"modelVersion":"{{azureAiVisionModelVersion}}",
"inputs":[
{
"name":"text",
"source":"/document/pages/*"
}
],
"outputs":[
{
"name":"vector",
"targetName":"text_vector"
}
]
},
{
"@odata.type":"#Microsoft.Skills.Vision.VectorizeSkill",
"name":"image-embedding-skill",
"description":"Vision Vectorization skill for images",
"context":"/document/normalized_images/*",
"modelVersion":"{{azureAiVisionModelVersion}}",
"inputs":[
{
"name":"image",
"source":"/document/normalized_images/*"
}
],
"outputs":[
{
"name":"vector",
"targetName":"image_vector"
}
]
},
{
"@odata.type":"#Microsoft.Skills.Util.ShaperSkill",
"name":"shaper-skill",
"description":"Shaper skill to reshape the data to fit the index schema",
"context":"/document/normalized_images/*",
"inputs":[
{
"name":"normalized_images",
"source":"/document/normalized_images/*",
"inputs":[
]
},
{
"name":"imagePath",
"source":"='{{imageProjectionContainer}}/'+$(/document/normalized_images/*/imagePath)",
"inputs":[
]
},
{
"name":"dataUri",
"source":"='data:image/jpeg;base64,'+$(/document/normalized_images/*/data)",
"inputs":[
]
},
{
"name":"location_metadata",
"sourceContext":"/document/normalized_images/*",
"inputs":[
{
"name":"page_number",
"source":"/document/normalized_images/*/page_number"
},
{
"name":"bounding_polygons",
"source":"/document/normalized_images/*/bounding_polygon"
}
]
}
],
"outputs":[
{
"name":"output",
"targetName":"new_normalized_images"
}
]
}
],
"cognitiveServices":{
"@odata.type":"#Microsoft.Azure.Search.AIServicesByIdentity",
"subdomainUrl":"{{foundryUrl}}",
"identity":null
},
"indexProjections":{
"selectors":[
{
"targetIndexName":"demo-multimodal-index",
"parentKeyFieldName":"text_document_id",
"sourceContext":"/document/pages/*",
"mappings":[
{
"name":"content_embedding",
"source":"/document/pages/*/text_vector"
},
{
"name":"content_text",
"source":"/document/pages/*"
},
{
"name":"document_title",
"source":"/document/document_title"
}
]
},
{
"targetIndexName":"demo-multimodal-index",
"parentKeyFieldName":"image_document_id",
"sourceContext":"/document/normalized_images/*",
"mappings":[
{
"name":"content_embedding",
"source":"/document/normalized_images/*/image_vector"
},
{
"name":"content_path",
"source":"/document/normalized_images/*/new_normalized_images/imagePath"
},
{
"name":"location_metadata",
"source":"/document/normalized_images/*/new_normalized_images/location_metadata"
},
{
"name":"document_title",
"source":"/document/document_title"
}
]
}
],
"parameters":{
"projectionMode":"skipIndexingParentDocuments"
}
},
"knowledgeStore":{
"storageConnectionString":"{{storageConnection}}",
"identity":null,
"projections":[
{
"files":[
{
"storageContainer":"{{imageProjectionContainer}}",
"source":"/document/normalized_images/*"
}
]
}
]
}
}
Ejecución del indexador
Crear indexador crea un indexador en el servicio de búsqueda. Un indexador se conecta al origen de datos, carga datos, ejecuta un conjunto de aptitudes e indexa el contenido enriquecido.
### Create and run an indexer
POST {{searchUrl}}/indexers?api-version=2025-11-01-preview HTTP/1.1
Content-Type: application/json
Authorization: Bearer {{token}}
{
"name": "demo-multimodal-indexer",
"dataSourceName": "demo-multimodal-ds",
"targetIndexName": "demo-multimodal-index",
"skillsetName": "demo-multimodal-skillset",
"parameters": {
"maxFailedItems": -1,
"maxFailedItemsPerBatch": 0,
"batchSize": 1,
"configuration": {
"allowSkillsetToReadFileData": true
}
},
"fieldMappings": [
{
"sourceFieldName": "metadata_storage_name",
"targetFieldName": "document_title"
}
],
"outputFieldMappings": []
}
Realizar consultas
Puede empezar a realizar búsquedas en cuanto se cargue el primer documento. Se trata de una consulta de búsqueda de texto completo no especificada que devuelve todos los campos marcados como recuperables en el índice, junto con un recuento de documentos.
Sugerencia
El content_embedding campo contiene más de mil dimensiones. Use una select instrucción para excluir ese campo de la respuesta eligiendo explícitamente todos los demás campos. Ajuste la instrucción select para que coincida con los campos (location_metadata frente a locationMetadata) de su índice. A continuación, tiene un ejemplo: "select": "content_id, text_document_id, document_title, image_document_id, content_text,
### Query the index
POST {{searchUrl}}/indexes/demo-multimodal-index/docs/search?api-version=2025-11-01-preview HTTP/1.1
Content-Type: application/json
Authorization: Bearer {{token}}
{
"search": "*",
"count": true
}
Envíe la solicitud. La respuesta debería tener este aspecto:
HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: application/json; odata.metadata=minimal; odata.streaming=true; charset=utf-8
Content-Encoding: gzip
Vary: Accept-Encoding
Server: Microsoft-IIS/10.0
Strict-Transport-Security: max-age=2592000, max-age=15724800; includeSubDomains
Preference-Applied: odata.include-annotations="*"
OData-Version: 4.0
request-id: 712ca003-9493-40f8-a15e-cf719734a805
elapsed-time: 198
Date: Wed, 30 Apr 2025 23:20:53 GMT
Connection: close
{
"@odata.count": 100,
"@search.nextPageParameters": {
"search": "*",
"count": true,
"skip": 50
},
"value": [
],
"@odata.nextLink": "https://<YOUR-SEARCH-SERVICE-NAME>.search.windows.net/indexes/demo-multimodal-index/docs/search?api-version=2025-11-01-preview "
}
Se devuelven 100 documentos en la respuesta.
Consulta de contenido de solo imagen
Use un filtro para excluir todo el contenido que no sea de imagen. El $filter parámetro solo funciona en campos marcados como filtrables durante la creación del índice.
En el caso de los filtros, también puede usar operadores lógicos (y, o no) y operadores de comparación (eq, ne, gt, lt, ge, le). La comparación de cadenas distingue mayúsculas de minúsculas. Para obtener más información y ejemplos, vea Ejemplos de consultas de búsqueda sencillas.
POST {{searchUrl}}/indexes/demo-multimodal-index/docs/search?api-version=2025-11-01-preview HTTP/1.1
Content-Type: application/json
Authorization: Bearer {{token}}
{
"search": "*",
"count": true,
"filter": "image_document_id ne null"
}
Los resultados de la búsqueda que contienen contenido de solo imagen no tienen contenido de texto, por lo que puede excluir campos de texto.
El content_embedding campo contiene vectores de alta dimensión (normalmente de 1000 a 3000 dimensiones) para el texto de página y las descripciones de imágenes verbalizadas. Excluya este campo de la consulta.
El content_path campo contiene la ruta de acceso relativa al archivo de imagen dentro del contenedor de proyección de imagen designado. Este campo solo se genera para las imágenes extraídas de archivos PDF cuando imageAction se establece en generateNormalizedImages, y se puede asignar desde el documento enriquecido desde el campo de origen /document/normalized_images/*/imagePath.
Para el contexto extraído de un PDF mediante la función División de texto, la función Conformador añade el nombre del contenedor a la ruta y los metadatos de la ubicación.
Consulta de contenido relacionado con "energía"
Consulta de texto o imágenes con contenido relacionado con energía, donde se devuelve el ID del contenido, el documento principal y el texto (solo se rellena para los fragmentos del texto) y la ruta del contenido donde se guarda la imagen en el almacén de conocimiento (solo se rellena para las imágenes).
Esta consulta es solo búsqueda de texto completo, pero puede consultar el campo vectorial para buscar similitud.
POST {{searchUrl}}/indexes/demo-multimodal-index/docs/search?api-version=2025-11-01-preview HTTP/1.1
Content-Type: application/json
Authorization: Bearer {{token}}
{
"search": "energy",
"count": true
}
Restablecer y volver a ejecutar
Los indexadores se pueden restablecer para borrar el punto de referencia, lo que permite una reconstrucción completa. Las siguientes solicitudes POST son para el restablecimiento, seguido de la repetición de la ejecución.
### Reset the indexer
POST {{searchUrl}}/indexers/demo-multimodal-indexer/reset?api-version=2025-11-01-preview HTTP/1.1
Content-Type: application/json
Authorization: Bearer {{token}}
### Run the indexer
POST {{searchUrl}}/indexers/demo-multimodal-indexer/run?api-version=2025-11-01-preview HTTP/1.1
Content-Type: application/json
Authorization: Bearer {{token}}
### Check indexer status
GET {{searchUrl}}/indexers/demo-multimodal-indexer/status?api-version=2025-11-01-preview HTTP/1.1
Content-Type: application/json
Authorization: Bearer {{token}}
Visualización de imágenes en el almacén de conocimiento
Recuerde que el conjunto de aptitudes de este tutorial permite crear un almacén de conocimiento para el contenido de la imagen extraída del PDF. Una vez que se ejecuta el indexador, el contenedor sustainable-ai-pdf-images debe tener aproximadamente 23 imágenes.
No se pueden devolver estas imágenes en una consulta de búsqueda. Sin embargo, puede escribir código de aplicación que llame a las API de Azure Storage para recuperar las imágenes si las necesita para la experiencia del usuario. El content_path campo tiene la ruta de acceso a cada imagen.
Para ver las imágenes en el explorador de Storage:
Inicie sesión en Azure Portal y vaya a la cuenta de Storage.
En el Explorador de almacenamiento, expanda el contenedor sustainable-ai-pdf-images.
Seleccione una imagen.
En el menú de la derecha (...), seleccione Ver/Editar.
Limpieza de recursos
Cuando trabaja en su propia suscripción, es una buena idea finalizar un proyecto quitando los recursos que ya no necesita. Los recursos que quedan en ejecución pueden costar dinero.
En Azure Portal, seleccione Todos los recursos o Grupos de recursos en el panel izquierdo para buscar y administrar recursos. Puede eliminar recursos individualmente o eliminar el grupo de recursos para quitar todos los recursos a la vez.