Agrupamento e inserção de dados integrados no Azure AI Search

Importante

Esse recurso está em versão prévia pública nos Termos de Uso Complementares. A API REST 2023-10-01-Preview dá suporte a esse recurso.

A vetorização integrada adiciona agrupamento de dados e inserção de texto em vetor a habilidades na indexação baseada em indexador. Ele também adiciona conversões de texto em vetor a consultas.

Essa funcionalidade está somente em versão prévia. Na versão em disponibilidade geral da busca em vetores e nas versões prévias anteriores, o agrupamento de dados e a vetorização dependem de componentes externos para agrupamento e vetores, e o código do aplicativo deve manipular e coordenar cada etapa. Nesta versão prévia, o agrupamento e a vetorização são integrados à indexação por meio de habilidades e indexadores. Você pode configurar um conjunto de habilidades que agrupa dados usando a habilidade Divisão de Texto e, em seguida, chamar um modelo de inserção usando a habilidade AzureOpenAIEmbedding ou uma habilidade personalizada. Todos os vetorizadores usados durante a indexação também podem ser chamados em consultas para converter texto em vetores.

Para indexação, a vetorização integrada exige:

Para consultas:

  • Um vetorizador definido no esquema de índice, atribuído a um campo de vetor e usado automaticamente no momento da consulta para converter uma consulta de texto em um vetor.

As conversões de vetor são unidirecionais: texto em vetor. Não há conversão de vetor em texto para consultas ou resultados (por exemplo, você não pode converter um resultado de vetor em uma cadeia de caracteres legível para os usuários).

Diagrama de componente

O diagrama a seguir mostra os componentes da vetorização integrada.

Diagrama de componentes em um fluxo de trabalho de vetorização integrado.

Esta é uma lista de verificação dos componentes responsáveis pela vetorização integrada:

  • Uma fonte de dados com suporte para indexação baseada em indexador.
  • Um índice que especifica campos vetoriais e uma definição de vetorizador atribuída aos campos vetoriais.
  • Um conjunto de habilidades que fornece uma habilidade Divisão de Texto para agrupamento de dados e uma habilidade para vetorização (a habilidade AzureOpenAiEmbedding ou uma habilidade personalizada apontando para um modelo de inserção externo).
  • Opcionalmente, projeções de índice (também definidas em um conjunto de habilidades) para enviar dados em partes para um índice secundário
  • Um modelo de inserção, implantado no Azure OpenAI ou disponível por meio de um ponto de extremidade HTTP.
  • Um indexador para conduzir o processo de ponta a ponta. Um indexador também especifica um agendamento, mapeamentos de campo e propriedades para detecção de alterações.

Essa lista de verificação se concentra na vetorização integrada, mas sua solução não se limita a essa lista. Você pode adicionar mais habilidades para enriquecimento de IA, criar um repositório de conhecimento, adicionar classificação semântica, adicionar ajuste de relevância e outros recursos de consulta.

Disponibilidade e preços

A disponibilidade de vetorização integrada baseia-se no modelo de inserção. Se você estiver usando o Azure OpenAI, verifique a disponibilidade regional.

Se você estiver usando uma habilidade personalizada e um mecanismo de hospedagem do Azure (como um aplicativo de funções do Azure, o Aplicativo Web do Azure e o Kubernetes do Azure), verifique a página Produto por região para ver a disponibilidade de recursos.

O agrupamento de dados (habilidade Divisão de Texto) é gratuito e está disponível em todos os serviços de IA do Azure em todas as regiões.

Observação

Alguns serviços de pesquisa mais antigos criados antes de 1º de janeiro de 2019 são implantados na infraestrutura que não dá suporte a cargas de trabalho vetoriais. Se você tentar adicionar um campo vetorial a um esquema e receber um erro, ele será resultado de serviços desatualizados. Nessa situação, você deve criar um novo serviço de pesquisa para experimentar o recurso vetorial.

Quais cenários podem ser compatíveis com a vetorização integrada?

  • Subdivida documentos grandes em partes, úteis para cenários vetoriais e não vetoriais. Para vetores, as partes ajudam você a atender às restrições de entrada de modelos de inserção. Para cenários não vetoriais, você pode ter um aplicativo de pesquisa no estilo chat em que o GPT está montando respostas de partes indexadas. Você pode usar partes vetorizadas ou não vetorizadas para pesquisa no estilo chat.

  • Crie um repositório de vetores em que todos os campos são campos vetoriais e a ID do documento (necessária para um índice de pesquisa) é o único campo de cadeia de caracteres. Consulte o repositório vetorial para recuperar as IDs do documento e, em seguida, envie os campos vetoriais do documento para outro modelo.

  • Combine campos vetoriais e de texto para pesquisa híbrida, com ou sem classificação semântica. A vetorização integrada simplifica todos os cenários compatíveis com a busca em vetores.

Quando usar a vetorização integrada

É recomendável usar o suporte de vetorização interna do Estúdio de IA do Azure. Se essa abordagem não atender às suas necessidades, você pode criar indexadores e conjuntos de habilidades que invocam a vetorização integrada usando as interfaces programáticas do Azure AI Search.

Como usar a vetorização integrada

Para vetorização somente de consulta:

  1. Adicione um vetorizador a um índice. Deve ser o mesmo modelo de inserção usado para gerar vetores no índice.
  2. Atribua o vetor a um perfil de vetor e atribua um perfil de vetor ao campo de vetor.
  3. Formule uma consulta de vetor que especifique a cadeia de caracteres de texto a ser vetorizada.

Um cenário mais comum: agrupamento de dados e vetorização durante a indexação:

  1. Crie uma conexão da fonte de dados com uma fonte de dados com suporte para indexação baseada em indexador.
  2. Crie um conjunto de habilidades que chame a habilidade Divisão de Texto para agrupamento e AzureOpenAIEmbeddingModel ou uma habilidade personalizada para vetorizar as partes.
  3. Crer um índice que especifica um vetorizador para o tempo de consulta e o atribui a campos vetoriais.
  4. Crie um indexador para conduzir tudo, desde a recuperação de dados até a execução do conjunto de habilidades, por meio da indexação.

Opcionalmente, crie índices secundários para cenários avançados em que o conteúdo em partes está em um índice e não em partes em outro índice. Índices em partes (ou índices secundários) são úteis para aplicativos de RAG.

Dica

Experimente o novo assistente Importar e vetorizar dados no portal do Azure para explorar a vetorização integrada, antes de gravar qualquer código.

Ou configure um notebook Jupyter para executar o mesmo fluxo de trabalho, célula por célula, para ver como cada etapa funciona.

Limitações

Verifique se você sabe as cotas e os limites do Azure OpenAI para inserir modelos. O Azure AI Search tem políticas de repetição, mas se a cota estiver esgotada, as repetições falharão.

Os limites de token por minuto do Azure OpenAI são por modelo, por assinatura. Tenha isso em mente se você estiver usando um modelo de inserção para cargas de trabalho de consulta e indexação. Se possível, siga as melhores práticas. Tenha um modelo de inserção para cada carga de trabalho e tente implantá-los em assinaturas diferentes.

No Azure AI Search, lembre-se de que há limites de serviço por camada e cargas de trabalho.

Por fim, não há suporte para os seguintes recursos:

Benefícios da vetorização integrada

Estes são alguns dos principais benefícios da vetorização integrada:

  • Não há pipeline de agrupamento e vetorização de dados separados. O código é mais simples de gravar e manter.

  • Indexação automática de ponta a ponta. Quando os dados são alterados na origem (como no Armazenamento do Azure, no SQL do Azure ou no Cosmos DB), o indexador pode mover essas atualizações em todo o pipeline, desde a recuperação até a quebra de documentos, por meio de enriquecimento de IA opcional, agrupamento de dados, vetorização e indexação.

  • Projeção conteúdo em partes para índices secundários. Os índices secundários são criados como você faria com qualquer índice de pesquisa (um esquema com campos e outros constructos), mas eles são preenchidos em conjunto com um índice primário por um indexador. O conteúdo de cada documento de origem flui para os campos nos índices primários e secundários durante a mesma execução de indexação.

    Os índices secundários destinam-se ao agrupamento de dados e a aplicativos de RAG (Geração Aumentada de Recuperação). Considerando um PDF grande como documento de origem, o índice primário pode ter informações básicas (título, data, autor, descrição) e um índice secundário tem as partes do conteúdo. A vetorização no nível da parte de dados facilita a localização de informações relevantes (cada parte é pesquisável) e retorna uma resposta relevante, especialmente em um aplicativo de pesquisa no estilo chat.

Índices em partes

O agrupamento é um processo de divisão de conteúdo em parcelas gerenciáveis menores (partes) que podem ser processadas independentemente. O agrupamento será necessário se os documentos de origem forem muito grandes para o tamanho máximo de entrada da inserção ou de modelos de linguagem grandes, mas você pode achar que ele oferece uma estrutura de índice melhor para padrões de RAG e pesquisa no estilo chat.

O diagrama a seguir mostra os componentes da indexação em partes.

Diagrama do fluxo de trabalho de agrupamento e vetorização.

Próximas etapas