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 campo a campo entre os dados de origem e o í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 enriquecimento de IA, em que você pode configurar habilidades para integrar processamento adicional de conteúdo no caminho até o índice. Alguns exemplos incluem OCR em arquivos de imagem, habilidade de divisão de texto para separação de dados em partes menores, tradução de texto para múltiplos idiomas.
Os indexadores tem como destino fontes de dados com suporte. A configuração de um 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 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 de conjuntos de habilidades e enriquecimento com 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 a separação de dados em partes 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:
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.
Fontes de dados com suporte
Os indexadores rastreiam armazenamentos de dados no Azure e fora do Azure.
- Armazenamento de Blobs do Azure
- Azure Cosmos DB
- Azure Data Lake Storage Gen2
- Banco de Dados SQL do Azure
- Armazenamento de Tabelas do Azure
- Instância Gerenciada do SQL do Azure
- SQL Server em Máquinas Virtuais do Azure
- Arquivos do Azure (em versão prévia)
- MySQL do Azure (em versão prévia)
- SharePoint no Microsoft 365 (em versão prévia)
- Azure Cosmos DB for MongoDB (em versão prévia)
- Azure Cosmos DB for Apache Gremlin (em versão prévia)
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 a fontes de dados remotas podem ser feitas usando conexões padrão de Internet (públicas) ou conexões privadas criptografadas ao usar 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.
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.
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:
- Usando o portal do Azure, na guia Fontes de dados das páginas do serviço de pesquisa, selecione Adicionar fonte de dados para especificar a definição da fonte de dados.
- Usando o portal do Azure, o assistente Importar dados gera uma fonte de dados.
- Usando as APIs REST, chame Criar Fonte de Dados.
- Usando o SDK do Azure para .NET, chame a classe SearchIndexerDataSourceConnection
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.