Indexadores no Azure AI Search

Um indexador na Pesquisa de IA do Azure é um rastreador que extrai dados textuais de fontes de dados na nuvem e preenche um índice de pesquisa usando mapeamentos de campo para campo entre os dados de origem e um índice de pesquisa. Essa abordagem às vezes é chamada de 'modelo de pull' porque o serviço de pesquisa obtém os dados sem que você precise escrever código que adiciona dados a um índice.

Os indexadores também impulsionam a execução de conjuntos de habilidades e o enriquecimento de IA, onde você pode configurar habilidades para integrar o processamento extra de conteúdo a caminho de um índice. Alguns exemplos são OCR sobre arquivos de imagem, habilidade de divisão de texto para fragmentação de dados, tradução de texto para vários idiomas.

Os indexadores destinam-se a fontes de dados suportadas. Uma configuração de indexador especifica uma fonte de dados (origem) e um índice de pesquisa (destino). Várias fontes, como o Armazenamento de Blobs do Azure, têm mais propriedades de configuração específicas desse tipo de conteúdo.

Você pode executar os indexadores sob demanda ou em uma agenda de atualização de dados recorrente que é executada a cada cinco minutos. Atualizações mais frequentes exigem um modelo de push que atualiza simultaneamente os dados no Azure AI Search e na fonte de dados externa.

Um serviço de pesquisa executa um trabalho de indexador por unidade de pesquisa. Se você precisar de processamento simultâneo, verifique se você tem réplicas suficientes. Os indexadores não são executados em segundo plano, portanto, você pode detectar mais limitação de consulta do que o normal se o serviço estiver sob pressão.

Cenários do indexador e casos de uso

Você pode usar um indexador como o único meio para ingestão de dados ou em combinação com outras técnicas. A tabela a seguir resume os principais cenários.

Cenário Estratégia
Fonte de dados única Esse padrão é o mais simples: uma fonte de dados é o único provedor de conteúdo para um índice de pesquisa. A maioria das fontes de dados com suporte fornece alguma forma de detecção de alterações para que o indexador subsequente execute a diferença quando o conteúdo é adicionado ou atualizado na fonte.
Várias fontes de dados Uma especificação de indexador pode ter apenas uma fonte de dados, mas o índice de pesquisa em si pode aceitar conteúdo de várias fontes, em que cada indexador é executado traz conteúdo novo de um provedor de dados diferente. Cada fonte pode contribuir com o próprio compartilhamento de documentos completos ou preencher os campos selecionados em cada documento. Para uma análise mais detalhada desse cenário, confira Tutorial: índice de várias fontes de dados.
Vários indexadores Normalmente, se você precisar variar os parâmetros de runtime, o agendamento ou os mapeamentos de campo, fará o emparelhamento de várias fontes de dados com vários indexadores.

A escala horizontal entre regiões do Azure AI Search é outro cenário. Você pode ter cópias do mesmo índice de pesquisa em regiões diferentes. Para sincronizar o conteúdo do índice de pesquisa, você pode ter vários indexadores efetuando pull da mesma fonte de dados, em que cada indexador tem como destino um índice de pesquisa diferente em cada região.
A
Indexação paralela de conjuntos de dados muito grandes também requer uma estratégia de vários indexadores, em que cada indexador é destinado a um subconjunto dos dados.
Transformação de conteúdo Os indexadores impulsionam a execução do conjunto de habilidades e o enriquecimento de IA. As transformações de conteúdo são definidas em um conjunto de habilidades que você anexa ao indexador. Você pode usar habilidades para incorporar fragmentação de dados e vetorização.

Você deve planejar a criação de um indexador para cada combinação de índice de destino e fonte de dados. Você pode ter vários indexadores gravando no mesmo índice e pode reutilizar a mesma fonte de dados para vários indexadores. No entanto, um indexador só pode consumir uma fonte de dados por vez e pode gravar apenas em um único índice. Como mostra o gráfico a seguir, uma fonte de dados fornece entrada para um indexador, que preenche um único índice:

Diagram of indexer workflow.

Embora você possa usar apenas um indexador de cada vez, os recursos podem ser usados em combinações diferentes. A principal vantagem da ilustração a seguir é observar que uma fonte de dados pode ser emparelhada com mais de um indexador e vários indexadores podem gravar no mesmo índice.

Diagram of multiple combinations of data sources, indexers, and indexes.

Fontes de dados com suporte

Os indexadores rastreiam armazenamentos de dados no Azure e fora do Azure.

Não há suporte para o Azure Cosmos DB para Cassandra.

Os indexadores aceitam conjuntos de linhas nivelados, como uma tabela ou exibição, ou itens em um contêiner ou pasta. Na maioria dos casos, ele cria um documento de pesquisa por linha, registro ou item.

As conexões do indexador com fontes de dados remotas podem ser feitas usando conexões padrão da Internet (públicas) ou conexões privadas criptografadas quando você usa um link privado compartilhado. Você também pode configurar conexões para autenticar usando uma identidade de serviço gerenciada. Para obter mais informações sobre conexões seguras, confira Acesso do indexador ao conteúdo protegido por recursos de segurança de rede do Azure e Conectar-se a uma fonte de dados usando uma identidade gerenciada.

Estágios da indexação

Em uma execução inicial, quando o índice estiver vazio, um indexador lerá todos os dados fornecidos na tabela ou no contêiner. Em execuções subsequentes, o indexador normalmente pode detectar e recuperar apenas os dados que foram alterados. Para dados de blob, a detecção de alteração é automática. Para outras fontes de dados como SQL do Azure ou Azure Cosmos DB, a detecção de alteração deve ser habilitada.

Para cada documento que recebe, um indexador implementa ou coordena várias etapas, desde a recuperação de documentos até uma "entrega" de mecanismo de pesquisa final para indexação. Opcionalmente, um indexador também gera a execução e os resultados do conjunto de habilidades, quando há um conjunto de habilidades definido.

Diagram of indexer stages.

Estágio 1: quebra de documento

A quebra de documento é o processo de abertura de arquivos e extração de conteúdo. O conteúdo baseado em texto pode ser extraído de arquivos em um serviço, linhas em uma tabela ou itens em um contêiner ou em uma coleção. Se você adicionar um conjunto de habilidades e habilidades de imagem, a quebra de documento também poderá extrair imagens e enfileirá-las para processamento de imagem.

Dependendo da fonte de dados, o indexador tentará executar operações diferentes para extrair conteúdo potencialmente indexável:

  • Quando o documento é um arquivo com imagens incorporadas, como um PDF, o indexador extrai o texto, as imagens e os metadados. Os indexadores podem abrir arquivos do Armazenamento de Blobs do Azure, do Azure Data Lake Storage Gen2 e do SharePoint.

  • Quando o documento for um registro no SQL do Azure, o indexador extrairá o conteúdo não binário de cada campo em cada registro.

  • Quando o documento for um registro no Azure Cosmos DB, o indexador extrairá o conteúdo não binário dos campos e subcampos do documento do Azure Cosmos DB.

Estágio 2: mapeamentos de campo

Um indexador extrai o texto de um campo de origem e o envia para um campo de destino em um índice ou repositório de conhecimento. Quando nomes de campo e tipos de dados coincidem, o caminho fica claro. No entanto, talvez você queira nomes ou tipos diferentes na saída; nesse caso, você precisa informar ao indexador como mapear o campo.

Para especificar mapeamentos de campo, insira os campos de origem e destino na definição do indexador.

O mapeamento de campo ocorre após a quebra de documento, mas antes das transformações, quando o indexador está lendo os documentos de origem. Quando você define um mapeamento de campo, o valor do campo de origem é enviado como está para o campo de destino sem modificações.

Estágio 3: execução do conjunto de habilidades

A execução do conjunto de habilidades é uma etapa opcional que invoca o processamento interno ou personalizado de IA. Os conjuntos de habilidades podem adicionar o OCR (reconhecimento óptico de caracteres) ou outras formas de análise de imagem se o conteúdo é binário. Os conjuntos de habilidades também podem adicionar o processamento de linguagem natural. Por exemplo, você pode adicionar tradução de texto ou extração de frases-chave.

Seja qual for a transformação, é na execução do conjunto de habilidades que ocorre o enriquecimento. Se um indexador for um pipeline, você poderá considerar um conjunto de habilidades como "pipeline dentro do pipeline".

Estágio 4: mapeamentos de campos de saída

Se você incluir um conjunto de habilidades, precisará especificar mapeamentos de campo de saída na definição do indexador. A saída de um conjunto de habilidades é manifestada internamente como uma estrutura de árvore chamada de documento enriquecido. Os mapeamentos de campo de saída permitem que você selecione quais partes desta árvore mapear em campos no índice.

Apesar da similaridade nos nomes, os mapeamentos de campo de saída e os mapeamentos de campo criam associações de fontes diferentes. Os mapeamentos de campo associam o conteúdo do campo de origem a um campo de destino em um índice de pesquisa. Os mapeamentos de campo de saída associam o conteúdo de um documento enriquecido (saídas de habilidades) interno aos campos de destino no índice. Ao contrário dos mapeamentos de campo, considerados opcionais, é necessário um mapeamento de campo de saída para qualquer conteúdo transformado que deve estar no índice.

A imagem a seguir mostra uma representação de sessão de depuração do indexador de exemplo dos estágios do indexador: quebra de documento, mapeamentos de campo, execução do conjunto de habilidades e mapeamentos de campos de saída.

Screenshot of a sample debug session.

Fluxo de trabalho básico

Os indexadores podem oferecer recursos que são exclusivos da fonte de dados. Nesse sentido, alguns aspectos de configuração da fonte de dados ou do indexador variam de acordo com o tipo de indexador. No entanto, todos os indexadores compartilham a mesma composição básica e os mesmos requisitos. As etapas que são comuns a todos os indexadores são abordadas a seguir.

Etapa 1: Criar uma fonte de dados

Os indexadores exigem um objeto de fonte de dados que forneça uma cadeia de conexão e, possivelmente, credenciais. As fontes de dados são objetos independentes. Vários indexadores podem usar o mesmo objeto de fonte de dados para carregar mais de um índice por vez.

Você pode criar uma fonte de dados usando qualquer uma destas abordagens:

Etapa 2: Criar um índice

Um indexador automatizará algumas tarefas relacionadas à ingestão de dados, mas a criação de um índice não é uma delas. Como pré-requisito, você precisa ter um índice predefinido que contenha campos de destino correspondentes para os campos de origem na fonte de dados externa. Os campos precisam corresponder por nome e tipo de dados. Caso contrário, você pode definir mapeamentos de campo para estabelecer a associação.

Para obter mais informações, confira Criar um índice.

Etapa 3: criar e executar (ou agendar) o indexador

Uma definição de indexador consiste em propriedades que identificam exclusivamente o indexador, especificam qual fonte de dados e índice usar e fornecem outras opções de configuração que influenciam comportamentos de tempo de execução, incluindo se o indexador é executado sob demanda ou em um agendamento.

Todos os erros ou os avisos sobre o acesso a dados ou validação de conjunto de habilidades ocorrerão durante a execução do indexador. Até que a execução do indexador seja iniciada, os objetos dependentes, como fontes de dados, índices e qualificações, são passivos no serviço de pesquisa.

Para obter mais informações, confira Criar um indexador

Após a primeira execução do indexador, você pode executá-lo novamente sob demanda ou configurar um agendamento.

Você pode monitorar o status do indexador no portal ou por meio da API Obter status do indexador. Você também deve executar consultas no índice para verificar se o resultado é o esperado.

Os indexadores não têm recursos de processamento dedicados. Com base nisso, o status dos indexadores pode aparecer como ocioso antes da execução (dependendo de outros trabalhos na fila) e os tempos de execução podem não ser previsíveis. Outros fatores também definem o desempenho do indexador, como tamanho do documento, complexidade do documento, análise de imagem, entre outros.

Próximas etapas

Agora que conheceu os indexadores, a próxima etapa é examinar as propriedades e os parâmetros do indexador, o agendamento e o monitoramento do indexador. Como alternativa, você pode retornar à lista de fontes de dados com suporte para obter mais informações sobre uma fonte específica.