Editar

Compartilhar via


Enriquecimento de fragmentos

Serviços de IA do Azure
Azure AI Search
Serviço OpenAI do Azure
Azure Machine Learning

Depois de dividir seus documentos em uma coleção de fragmentos, a próxima etapa é enriquecer cada fragmento limpando e aumentando os fragmentos com metadados. A limpeza dos fragmentos permite que você obtenha melhores correspondências para consultas semânticas em uma busca em vetores. A inclusão de informações permite que você ofereça suporte a pesquisas além das pesquisas semânticas dos fragmentos. A limpeza e o aumento envolvem a extensão do esquema para o fragmento.

Este artigo discute várias maneiras de aumentar seus fragmentos, incluindo algumas operações de limpeza comuns que você pode executar em fragmentos para melhorar as comparações vetoriais e descreve alguns campos de metadados comuns que você pode adicionar aos blocos para aumentar seu índice de pesquisa.

Este artigo faz parte de uma série. Leia a introdução.

Diagrama mostrando registros json com um único campo sendo enriquecido.

Figura 1. Enriquecimento de fragmentos com metadados

Limpeza

Fragmentar seus dados dá suporte à sua carga de trabalho em seus esforços para encontrar os fragmentos mais relevantes, geralmente por meio da vetorização desses fragmentos e do armazenamento em um banco de dados vetorial. Uma busca otimizada em vetores retorna apenas as linhas nesse banco de dados que têm as correspondências semânticas mais próximas da consulta. O objetivo de limpar os dados para dar suporte às correspondências mais próximas, eliminando possíveis diferenças que não são materiais para a semântica do texto. A seguir estão alguns tipos comuns de procedimentos de limpeza.

Observação

Você desejará retornar o fragmento original não limpo como o resultado da consulta, portanto, incluirá um campo adicional para armazenar os dados limpos e vetorizados.

  • Caixa baixa - A caixa baixa permite que palavras em maiúsculas, como palavras no início de uma frase, correspondam a essas mesmas palavras dentro de uma frase. As incorporações são tipicamente sensíveis a maiúsculas e minúsculas, o que significa que "Chita" e "chita" resultariam em um vetor diferente para a mesma palavra lógica. Por exemplo, para a consulta incorporada: "o que é mais rápido, uma chita ou um puma?" A seguinte incorporação: "chitas são mais rápidas que pumas" é uma correspondência mais próxima do que incorporar "Chitas são mais rápidas que pumas". Algumas estratégias de minúsculas incluem colocar em minúsculas todas as palavras, incluindo substantivos próprios, enquanto outras estratégias incluem apenas colocar as primeiras palavras em caixa baixa em uma frase.
  • Remover palavras de parada - Palavras de parada são palavras como "a", "an" e "the" que ocorrem comumente em frases. Você pode remover palavras de parada para reduzir a dimensionalidade do vetor resultante. A remoção de palavras de parada permitiria que "uma chita é mais rápida que um puma" e "a chita é mais rápida que o puma" fossem ambas vetorialmente iguais a "chita mais rápida puma". No entanto, é importante entender que algumas palavras de parada têm significado semântico. Por exemplo, "não" pode ser considerado uma palavra de parada, mas teria um significado semântico significativo. É importante testar para ver o efeito de remover palavras de parada.
  • Corrigir erros de ortografia - Uma palavra escrita incorretamente não corresponde à palavra escrita corretamente no modelo de incorporação. Por exemplo, "chita" (sic) não é o mesmo que "xita" na incorporação. Você deve corrigir erros de ortografia para resolver esse desafio.
  • Remover caracteres unicode - A remoção de caracteres Unicode pode reduzir o ruído em seus fragmentos e reduzir a dimensionalidade. Como palavras de parada, alguns caracteres Unicode podem conter informações relevantes. É importante testar para entender o impacto da remoção de caracteres Unicode.
  • Normalização - normalizar o texto para padrões como expandir abreviações, converter números em palavras e expandir contrações como "d'água" para "da água" pode ajudar a aumentar o desempenho das buscas em vetores.

Aumentando os fragmentos

As pesquisas semânticas em relação aos fragmentos vetorizados funcionam bem para alguns tipos de consultas, mas não tão bem para outros. Dependendo dos tipos de consultas a que você precisa oferecer suporte, talvez seja necessário aumentar seus fragmentos com informações adicionais. Os campos de metadados adicionais são todos armazenados na mesma linha que suas incorporações e podem ser usados na solução de pesquisa como filtros ou como parte da pesquisa.

Diagrama mostrando json de conteúdo totalmente enriquecido e como ele pode ser usado em uma plataforma de pesquisa.

Figura 2. Uso de metadados aumentados na solução de pesquisa

As colunas de metadados que você precisa adicionar dependem de decisões específicas do domínio do problema. Isso inclui o tipo de dados que você tem e os tipos de consultas às quais deseja oferecer suporte. Você precisa analisar a experiência do usuário, os dados disponíveis e a qualidade dos resultados que está tentando alcançar. A partir daí, você pode determinar quais metadados podem ajudá-lo a atender aos requisitos da sua carga de trabalho.

A seguir estão alguns campos de metadados comuns, juntamente com o texto do fragmento original, algumas orientações sobre seus possíveis usos e ferramentas ou técnicas que são comumente usadas para gerar o conteúdo de metadados.

  • ID - ID é um campo de metadados chave que é usado para identificar exclusivamente um fragmento. Um ID exclusivo é útil no processamento para determinar se um fragmento já existe no armazenamento ou não. Um ID pode ser um hash de algum campo chave. Ferramentas: Biblioteca de hash
  • Título - Um título é um valor de retorno útil para um fragmento. Ele fornece um resumo rápido do conteúdo no fragmento. O resumo também pode ser útil para consultas com uma pesquisa indexada, pois pode conter palavras-chave para correspondência. Ferramentas: modelo de linguagem grande
  • Resumo - O resumo é semelhante ao título, pois é um valor de retorno comum e pode ser usado em pesquisas indexadas. Os resumos são geralmente mais longos do que o título. Ferramentas: modelo de linguagem grande
  • Reformulação de fragmento - A reformulação de um fragmento pode ser útil como um campo de busca em vetores, pois a reformulação captura variações no idioma, como sinônimos e paráfrases. Ferramentas: modelo de linguagem grande
  • Palavras-chave - As pesquisas de palavras-chave são boas para dados que não são contextuais, para procurar uma correspondência exata e quando um termo ou valor específico é importante. Por exemplo, um fabricante de automóveis pode ter dados de revisões ou de desempenho para cada um de seus modelos por vários anos. Revisão do produto X para o ano de 2009" é semanticamente como "Revisão do produto X para 2010" e "Revisão do produto Y para 2009". Nesse caso, seria melhor combinar palavras-chave para o produto e o ano. Ferramentas: modelo de linguagem grande, RAKE, KeyBERT, MultiRake
  • Entidades - Entidades são informações específicas, como pessoas, organizações e locais. Assim como as palavras-chave, as entidades são boas para pesquisas de correspondência exata ou quando entidades específicas são importantes. Ferramentas: SpaCy, Stanford Named Entity Recognizer (SNER, scikit-learn, Natural Language Toolkit (NLTK).
  • Texto de fragmento limpo - O texto de fragmento limpo. Ferramentas: modelo de linguagem grande
  • Perguntas que o fragmento pode responder - Às vezes, a consulta incorporada e o fragmento incorporado não são uma ótima correspondência. Por exemplo, a consulta pode ser pequena em relação ao tamanho do fragmento. Talvez seja melhor formular as consultas que o fragmento pode responder e fazer uma busca em vetores entre a consulta real do usuário e as consultas pré-formuladas. Ferramentas: modelo de linguagem grande
  • Fonte - A origem do fragmento pode ser valiosa como um retorno para consultas. Permite que quem consulta cite a fonte original.
  • Idioma - O idioma do fragmento pode ser bom como um filtro em consultas.

Aumento da economia

O uso de grandes modelos de linguagem para aumentar fragmentos pode ser caro. Você precisa calcular o custo de cada enriquecimento que está considerando e multiplicá-lo pelo número estimado de fragmentos ao longo do tempo. Você deve usar essas informações, juntamente com o teste desses campos enriquecidos, como parte da pesquisa para tomar uma boa decisão de negócios.

Próximas etapas