Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O Azure AI Search pode extrair e indexar texto e imagens de documentos PDF armazenados no Armazenamento de Blobs do Azure. Este tutorial mostra como criar um pipeline de indexação multimodal que fragmenta dados usando a habilidade interna de Divisão de Texto e usa a verbalização de imagem para descrever imagens. As imagens cortadas são armazenadas em um repositório de conhecimento e o conteúdo visual é descrito em linguagem natural e ingerido ao lado do texto em um índice pesquisável.
Para obter verbalizações de imagem, cada imagem extraída é passada para a habilidade GenAI Prompt (visualização) que chama um modelo de conclusão de bate-papo para gerar uma descrição textual concisa. Essas descrições, juntamente com o texto original do documento, são incorporadas em representações vetoriais usando o modelo text-embedding-3-large do Azure OpenAI. O resultado é um único índice contendo conteúdo pesquisável de ambas as modalidades: texto e imagens verbalizadas.
Neste tutorial, você usa:
Um documento PDF de 36 páginas que combina conteúdo visual rico, como gráficos, infográficos e páginas digitalizadas, com texto tradicional.
Um indexador e um conjunto de habilidades para criar um pipeline de indexação que inclua o enriquecimento da IA por meio de habilidades.
A habilidade de extração de documentos para extrair imagens e texto normalizados. A habilidade Divisão de texto fragmenta os dados.
A capacidade GenAI Prompt (pré-visualização) que chama um modelo de conclusão de bate-papo para criar descrições de conteúdo visual.
Um índice de pesquisa configurado para armazenar verbalizações de texto e imagem. Alguns conteúdos são vetorizados para pesquisa de semelhança baseada em vetores.
Este tutorial demonstra uma abordagem de baixo custo para indexar conteúdo multimodal usando a habilidade de extração de documentos e legendas de imagens. Ele permite a extração e a pesquisa de texto e imagens de documentos no Armazenamento de Blobs do Azure. No entanto, ele não inclui metadados de localização para texto, como números de página ou regiões delimitadoras. Para obter uma solução mais abrangente que inclui layout de texto estruturado e metadados espaciais, consulte Tutorial: verbalizar imagens de um layout de documento estruturado.
Note
A extração de imagens pela habilidade Extração de Documentos não é gratuita. Definir imageAction para generateNormalizedImages no conjunto de habilidades ativa a extração de imagem, resultando numa cobrança adicional. Para obter informações de cobrança, consulte Preços do Azure AI Search.
Prerequisites
Azure AI Search. Configure seu serviço de pesquisa para controle de acesso baseado em função e uma identidade gerenciada. Seu serviço deve estar na camada Básica ou superior. Este tutorial não é suportado no nível Gratuito.
Armazenamento do Azure, usado para armazenar dados de exemplo e para criar um repositório de conhecimento.
Azure OpenAI com uma implementação de
Um modelo de conclusão de chat alojado no Microsoft Foundry ou noutra fonte. O modelo é usado para verbalizar o conteúdo da imagem. Você fornece o URI para o modelo hospedado na definição de habilidade do GenAI Prompt. Você pode usar qualquer modelo de conclusão de chat.
Um modelo de embedding de texto implementado no Foundry. O modelo é usado para vetorizar o conteúdo de texto extraído de documentos de origem e as descrições de imagem geradas pelo modelo de conclusão de chat. Para a vetorização integrada, o modelo de incorporação deve estar localizado no Foundry, e deve ser text-embedding-ada-002, text-embedding-3-large ou text-embedding-3-small. Se você quiser usar um modelo de incorporação externo, use uma habilidade personalizada em vez da habilidade de incorporação do Azure OpenAI.
Preparar dados
As instruções a seguir se aplicam ao Armazenamento do Azure, que fornece os dados de exemplo e também hospeda o repositório de conhecimento. Uma identidade de serviço de pesquisa precisa de acesso de leitura ao Armazenamento do Azure para recuperar os dados de exemplo e precisa de acesso de gravação para criar o repositório de conhecimento. O serviço de pesquisa cria o contêiner para imagens cortadas durante o processamento do conjunto de habilidades, usando o nome fornecido em uma variável de ambiente.
Faça o download do seguinte PDF de exemplo: sustainable-ai-pdf
No Armazenamento do Azure, crie um novo contêiner chamado sustainable-ai-pdf.
Crie atribuições de função e especifique uma identidade gerenciada em uma cadeia de conexão:
Atribua o Storage Blob Data Reader para recuperação de dados pelo indexador. Atribua o Contribuidor de Dados de Blob de Armazenamento e o Colaborador de Dados da Tabela de Armazenamento para criar e carregar o repositório de conhecimento. Você pode usar uma identidade gerenciada atribuída pelo sistema ou uma identidade gerenciada atribuída pelo usuário para sua atribuição de função de serviço de pesquisa.
Para conexões feitas usando uma identidade gerenciada atribuída pelo sistema, obtenha uma cadeia de conexão que contenha um ResourceId, sem chave de conta ou senha. O ResourceId deve incluir a ID de assinatura da conta de armazenamento, o grupo de recursos da conta de armazenamento e o nome da conta de armazenamento. A cadeia de conexão é semelhante ao exemplo a seguir:
"credentials" : { "connectionString" : "ResourceId=/subscriptions/00000000-0000-0000-0000-00000000/resourceGroups/MY-DEMO-RESOURCE-GROUP/providers/Microsoft.Storage/storageAccounts/MY-DEMO-STORAGE-ACCOUNT/;" }Para conexões feitas usando uma identidade gerenciada atribuída pelo usuário, obtenha uma cadeia de conexão que contenha um ResourceId, sem chave de conta ou senha. O ResourceId deve incluir a ID de assinatura da conta de armazenamento, o grupo de recursos da conta de armazenamento e o nome da conta de armazenamento. Forneça uma identidade usando a sintaxe mostrada no exemplo a seguir. Defina userAssignedIdentity como a identidade gerenciada atribuída pelo usuário. A cadeia de conexão é semelhante ao exemplo a seguir:
"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" }
Preparar modelos
Este tutorial pressupõe que você tenha um recurso Azure OpenAI existente através do qual as funcionalidades utilizam o modelo de incorporação de texto e os modelos de conclusão de bate-papo. O serviço de pesquisa se conecta aos modelos durante o processamento do conjunto de habilidades e durante a execução da consulta usando sua identidade gerenciada. Esta seção fornece orientações e links para atribuir funções para acesso autorizado.
Entre no portal do Azure (não no portal do Foundry) e localize o recurso do Azure OpenAI.
Selecione Controlo de acesso (IAM) .
Selecione Adicionar e, em seguida, Adicionar atribuição de função.
Pesquisar por Cognitive Services OpenAI User e, em seguida, selecione-o.
Escolha Identidade gerenciada e atribua a identidade gerenciada do serviço de pesquisa.
Para mais informações, consulte Controlo de acesso baseado em funções para Azure OpenAI em Foundry Models.
Configurar o arquivo REST
Para este tutorial, a sua ligação cliente REST local com o Azure AI Search requer um ponto de extremidade e uma chave de API. Você pode obter esses valores no portal do Azure. Para obter métodos de conexão alternativos, consulte Conectar-se a um serviço de pesquisa.
Para conexões autenticadas que ocorrem durante o processamento do indexador e do conjunto de habilidades, o serviço de pesquisa usa as atribuições de função definidas anteriormente.
Inicie o Visual Studio Code e crie um novo arquivo.
Forneça valores para variáveis usadas no pedido. Para
@storageConnection, verifique se a string de conexão não termina com um ponto-e-vírgula ou aspas. Para@imageProjectionContainer, forneça um nome de contentor único no armazenamento de blobs. O Azure AI Search cria esse contêiner para você durante o processamento de habilidades.@searchUrl = PUT-YOUR-SEARCH-SERVICE-ENDPOINT-HERE @searchApiKey = PUT-YOUR-ADMIN-API-KEY-HERE @storageConnection = PUT-YOUR-STORAGE-CONNECTION-STRING-HERE @openAIResourceUri = PUT-YOUR-OPENAI-URI-HERE @openAIKey = PUT-YOUR-OPENAI-KEY-HERE @chatCompletionResourceUri = PUT-YOUR-CHAT-COMPLETION-URI-HERE @chatCompletionKey = PUT-YOUR-CHAT-COMPLETION-KEY-HERE @imageProjectionContainer=sustainable-ai-pdf-imagesGuarde o ficheiro usando uma extensão de ficheiro
.restou.http. Para obter ajuda com o cliente REST, consulte Guia de início rápido: pesquisa de texto completo usando REST.
Para obter o URL do ponto de extremidade e a chave da API do Azure AI Search:
Entre no portal do Azure, navegue até a página Visão geral do serviço de pesquisa e copie a URL. Um ponto final de exemplo poderá ser parecido com
https://mydemo.search.windows.net.Em Configurações>Teclas, copie uma chave de administrador. As chaves de administrador são usadas para adicionar, modificar e excluir objetos. Existem duas chaves de administração intercambiáveis. Copie qualquer uma delas.
Criar uma fonte de dados
Create Data Source (REST) cria uma conexão de fonte de dados que especifica quais dados indexar.
### Create a data source
POST {{searchUrl}}/datasources?api-version=2025-11-01-preview HTTP/1.1
Content-Type: application/json
api-key: {{searchApiKey}}
{
"name": "doc-extraction-image-verbalization-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
}
Envie o pedido. A resposta deve ser semelhante a:
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('doc-extraction-multimodal-embedding-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 2025 21:25:24 GMT
Connection: close
{
"name": "doc-extraction-multimodal-embedding-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
}
Criar um índice
Criar índice (REST) cria um índice de pesquisa no seu serviço de pesquisa. Um índice especifica todos os parâmetros e seus atributos.
Para JSON aninhado, os campos de índice devem ser idênticos aos campos de origem. Atualmente, o Azure AI Search não oferece suporte a mapeamentos de campo para JSON aninhado, portanto, os nomes de campo e os tipos de dados devem corresponder completamente. O índice a seguir se alinha aos elementos JSON no conteúdo bruto.
### Create an index
POST {{searchUrl}}/indexes?api-version=2025-11-01-preview HTTP/1.1
Content-Type: application/json
api-key: {{searchApiKey}}
{
"name": "doc-extraction-image-verbalization-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": 3072,
"searchable": true,
"retrievable": true,
"vectorSearchProfile": "hnsw"
},
{
"name": "content_path",
"type": "Edm.String",
"searchable": false,
"retrievable": true
},
{
"name": "offset",
"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": "azureOpenAI",
"azureOpenAIParameters": {
"resourceUri": "{{openAIResourceUri}}",
"deploymentId": "text-embedding-3-large",
"searchApiKey": "{{openAIKey}}",
"modelName": "text-embedding-3-large"
}
}
]
},
"semantic": {
"defaultConfiguration": "semanticconfig",
"configurations": [
{
"name": "semanticconfig",
"prioritizedFields": {
"titleField": {
"fieldName": "document_title"
},
"prioritizedContentFields": [
],
"prioritizedKeywordsFields": []
}
}
]
}
}
Pontos principais:
As incorporações de texto e imagem são armazenadas no campo
content_embeddinge devem ser configuradas com dimensões apropriadas (por exemplo, 3072) e um perfil de pesquisa vetorial.location_metadatacaptura polígonos delimitadores e metadados de número de página para cada imagem normalizada, permitindo uma pesquisa espacial precisa ou sobreposições de interface do usuário.location_metadatasó existe para imagens neste cenário. Se você quiser capturar metadados de localização para texto também, considere usar a habilidade Layout de Documento. Um tutorial detalhado está vinculado na parte inferior da página.Para obter mais informações sobre pesquisa vetorial, consulte Vetores na Pesquisa de IA do Azure.
Para obter mais informações sobre classificação semântica, consulte Classificação semântica na Pesquisa de IA do Azure
Criar um conjunto de competências
Create Skillset (REST) cria um conjunto de habilidades em seu serviço de pesquisa. Um conjunto de habilidades define as operações que fragmentam e incorporam conteúdo antes da indexação. Este conjunto de habilidades usa a habilidade interna de extração de documentos para extrair texto e imagens. Ele usa a função de divisão de texto para fragmentar grandes textos. Ele usa a habilidade de incorporação do Azure OpenAI para vetorizar conteúdo de texto.
O conjunto de habilidades também executa ações específicas para imagens. Ele usa a habilidade GenAI Prompt para gerar descrições de imagens. Ele também cria um armazenamento de conhecimento que armazena imagens intactas para que você possa retorná-las em uma consulta.
### Create a skillset
POST {{searchUrl}}/skillsets?api-version=2025-11-01-preview HTTP/1.1
Content-Type: application/json
api-key: {{searchApiKey}}
{
"name": "doc-extraction-image-verbalization-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.Text.AzureOpenAIEmbeddingSkill",
"name": "text-embedding-skill",
"description": "Embedding skill for text",
"context": "/document/pages/*",
"inputs": [
{
"name": "text",
"source": "/document/pages/*"
}
],
"outputs": [
{
"name": "embedding",
"targetName": "text_vector"
}
],
"resourceUri": "{{openAIResourceUri}}",
"deploymentId": "text-embedding-3-large",
"searchApiKey": "{{openAIKey}}",
"dimensions": 3072,
"modelName": "text-embedding-3-large"
},
{
"@odata.type": "#Microsoft.Skills.Custom.ChatCompletionSkill",
"name": "genAI-prompt-skill",
"description": "GenAI Prompt skill for image verbalization",
"uri": "{{chatCompletionResourceUri}}",
"timeout": "PT1M",
"searchApiKey": "{{chatCompletionKey}}",
"context": "/document/normalized_images/*",
"inputs": [
{
"name": "systemMessage",
"source": "='You are tasked with generating concise, accurate descriptions of images, figures, diagrams, or charts in documents. The goal is to capture the key information and meaning conveyed by the image without including extraneous details like style, colors, visual aesthetics, or size.\n\nInstructions:\nContent Focus: Describe the core content and relationships depicted in the image.\n\nFor diagrams, specify the main elements and how they are connected or interact.\nFor charts, highlight key data points, trends, comparisons, or conclusions.\nFor figures or technical illustrations, identify the components and their significance.\nClarity & Precision: Use concise language to ensure clarity and technical accuracy. Avoid subjective or interpretive statements.\n\nAvoid Visual Descriptors: Exclude details about:\n\nColors, shading, and visual styles.\nImage size, layout, or decorative elements.\nFonts, borders, and stylistic embellishments.\nContext: If relevant, relate the image to the broader content of the technical document or the topic it supports.\n\nExample Descriptions:\nDiagram: \"A flowchart showing the four stages of a machine learning pipeline: data collection, preprocessing, model training, and evaluation, with arrows indicating the sequential flow of tasks.\"\n\nChart: \"A bar chart comparing the performance of four algorithms on three datasets, showing that Algorithm A consistently outperforms the others on Dataset 1.\"\n\nFigure: \"A labeled diagram illustrating the components of a transformer model, including the encoder, decoder, self-attention mechanism, and feedforward layers.\"'"
},
{
"name": "userMessage",
"source": "='Please describe this image.'"
},
{
"name": "image",
"source": "/document/normalized_images/*/data"
}
],
"outputs": [
{
"name": "response",
"targetName": "verbalizedImage"
}
]
},
{
"@odata.type": "#Microsoft.Skills.Text.AzureOpenAIEmbeddingSkill",
"name": "verbalized-image-embedding-skill",
"description": "Embedding skill for verbalized images",
"context": "/document/normalized_images/*",
"inputs": [
{
"name": "text",
"source": "/document/normalized_images/*/verbalizedImage",
"inputs": []
}
],
"outputs": [
{
"name": "embedding",
"targetName": "verbalizedImage_vector"
}
],
"resourceUri": "{{openAIResourceUri}}",
"deploymentId": "text-embedding-3-large",
"searchApiKey": "{{openAIKey}}",
"dimensions": 3072,
"modelName": "text-embedding-3-large"
},
{
"@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": "location_metadata",
"sourceContext": "/document/normalized_images/*",
"inputs": [
{
"name": "page_number",
"source": "/document/normalized_images/*/pageNumber"
},
{
"name": "bounding_polygons",
"source": "/document/normalized_images/*/boundingPolygon"
}
]
}
],
"outputs": [
{
"name": "output",
"targetName": "new_normalized_images"
}
]
}
],
"indexProjections": {
"selectors": [
{
"targetIndexName": "doc-extraction-image-verbalization-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": "doc-extraction-image-verbalization-index",
"parentKeyFieldName": "image_document_id",
"sourceContext": "/document/normalized_images/*",
"mappings": [
{
"name": "content_text",
"source": "/document/normalized_images/*/verbalizedImage"
},
{
"name": "content_embedding",
"source": "/document/normalized_images/*/verbalizedImage_vector"
},
{
"name": "content_path",
"source": "/document/normalized_images/*/new_normalized_images/imagePath"
},
{
"name": "document_title",
"source": "/document/document_title"
},
{
"name": "locationMetadata",
"source": "/document/normalized_images/*/new_normalized_images/location_metadata"
}
]
}
],
"parameters": {
"projectionMode": "skipIndexingParentDocuments"
}
},
"knowledgeStore": {
"storageConnectionString": "{{storageConnection}}",
"identity": null,
"projections": [
{
"files": [
{
"storageContainer": "{{imageProjectionContainer}}",
"source": "/document/normalized_images/*"
}
]
}
]
}
}
Este conjunto de habilidades extrai texto e imagens, vetoriza ambos e molda os metadados da imagem para projeção no índice.
Pontos principais:
O
content_textcampo é preenchido de duas maneiras:Do texto do documento extraído usando a habilidade Extração de Documento e fragmentado usando a habilidade Divisão de Texto
A partir do conteúdo da imagem usando a habilidade GenAI Prompt, que gera legendas descritivas para cada imagem normalizada
O
content_embeddingcampo contém incorporações de 3072 dimensões para o texto da página e descrições de imagens verbalizadas. Eles são gerados usando o modelo text-embedding-3-large do Azure OpenAI.content_pathContém o caminho relativo para o arquivo de imagem dentro do contêiner de projeção de imagem designado. Este campo é gerado apenas para imagens extraídas de PDFs quandoimageActionestá definido comogenerateNormalizedImagese pode ser mapeado a partir do campo/document/normalized_images/*/imagePathde origem no documento enriquecido.
Criar e executar um indexador
Criar indexador cria um indexador no seu serviço de pesquisa. Um indexador se conecta à fonte de dados, carrega dados, executa um conjunto de habilidades e indexa os dados enriquecidos.
### Create and run an indexer
POST {{searchUrl}}/indexers?api-version=2025-11-01-preview HTTP/1.1
Content-Type: application/json
api-key: {{searchApiKey}}
{
"dataSourceName": "doc-extraction-image-verbalization-ds",
"targetIndexName": "doc-extraction-image-verbalization-index",
"skillsetName": "doc-extraction-image-verbalization-skillset",
"parameters": {
"maxFailedItems": -1,
"maxFailedItemsPerBatch": 0,
"batchSize": 1,
"configuration": {
"allowSkillsetToReadFileData": true
}
},
"fieldMappings": [
{
"sourceFieldName": "metadata_storage_name",
"targetFieldName": "document_title"
}
],
"outputFieldMappings": []
}
Executar consultas
Pode começar a pesquisar assim que o primeiro documento for carregado.
### Query the index
POST {{searchUrl}}/indexes/doc-extraction-image-verbalization-index/docs/search?api-version=2025-11-01-preview HTTP/1.1
Content-Type: application/json
api-key: {{searchApiKey}}
{
"search": "*",
"count": true
}
Envie o pedido. Esta é uma consulta de pesquisa de texto completo não especificada que retorna todos os campos marcados como recuperáveis no índice, juntamente com uma contagem de documentos. A resposta deve ser semelhante a:
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/doc-extraction-image-verbalization-index/docs/search?api-version=2025-11-01-preview "
}
100 documentos são devolvidos na resposta.
Para filtros, você também pode usar operadores lógicos (e, ou, não) e operadores de comparação (eq, ne, gt, lt, ge, le). As comparações de cadeia de caracteres diferenciam maiúsculas de minúsculas. Para obter mais informações e exemplos, consulte Exemplos de consultas de pesquisa simples.
Note
O $filter parâmetro só funciona em campos que foram marcados como filtráveis durante a criação do índice.
Aqui estão alguns exemplos de outras consultas:
### Query for only images
POST {{searchUrl}}/indexes/doc-extraction-image-verbalization-index/docs/search?api-version=2025-11-01-preview HTTP/1.1
Content-Type: application/json
api-key: {{searchApiKey}}
{
"search": "*",
"count": true,
"filter": "image_document_id ne null"
}
### Query for text or images with content related to energy, returning the id, parent document, and text (extracted text for text chunks and verbalized image text for images), and the content path where the image is saved in the knowledge store (only populated for images)
POST {{searchUrl}}/indexes/doc-extraction-image-verbalization-index/docs/search?api-version=2025-11-01-preview HTTP/1.1
Content-Type: application/json
api-key: {{searchApiKey}}
{
"search": "energy",
"count": true,
"select": "content_id, document_title, content_text, content_path"
}
Repor e executar novamente
Os indexadores podem ser redefinidos para limpar o ponto máximo, o que permite uma repetição completa. As seguintes solicitações POST são para redefinição, seguidas de reexecução.
### Reset the indexer
POST {{searchUrl}}/indexers/doc-extraction-image-verbalization-indexer/reset?api-version=2025-11-01-preview HTTP/1.1
api-key: {{searchApiKey}}
### Run the indexer
POST {{searchUrl}}/indexers/doc-extraction-image-verbalization-indexer/run?api-version=2025-11-01-preview HTTP/1.1
api-key: {{searchApiKey}}
### Check indexer status
GET {{searchUrl}}/indexers/doc-extraction-image-verbalization-indexer/status?api-version=2025-11-01-preview HTTP/1.1
api-key: {{searchApiKey}}
Limpeza de recursos
Quando estiver a trabalhar na sua própria subscrição, ao terminar um projeto, é uma boa ideia remover os recursos de que já não necessita. Os recursos deixados em funcionamento podem custar-lhe dinheiro. Você pode excluir recursos individualmente ou excluir o grupo de recursos para excluir todo o conjunto de recursos.
Você pode usar o portal do Azure para excluir índices, indexadores e fontes de dados.
Ver também
Agora que você está familiarizado com um exemplo de implementação de um cenário de indexação multimodal, confira: