Depois de dividir seus documentos em uma coleção de partes, a próxima etapa é enriquecer cada parte limpando-a e aumentando-a com metadados. Limpar as partes permite que você obtenha melhores correspondências para consultas semânticas em uma pesquisa de vetor. Adicionar metadados permite que você dê suporte a pesquisas das partes que vão além das pesquisas semânticas. Tanto a limpeza quanto o aumento envolvem a extensão do esquema da parte.
Este artigo discute várias maneiras de aumentar suas partes, incluindo algumas operações de limpeza comuns que você pode executar em partes para melhorar as comparações de vetor. Ele também descreve alguns campos de metadados comuns que você pode adicionar às partes para aumentar o índice de pesquisa.
Este artigo faz parte de uma série. Aqui está ode introdução
.
O exemplo de código a seguir mostra partes enriquecidas com dados.
Limpar dados
Agrupar seus dados ajuda sua carga de trabalho a encontrar as partes mais relevantes, normalmente por meio da vetorização dessas partes e do armazenamento delas em um banco de dados de vetor. Uma pesquisa de vetor otimizada retorna apenas as linhas no banco de dados que têm as correspondências semânticas mais próximas da consulta. O objetivo de limpar os dados é dar suporte a correspondências de proximidade eliminando possíveis diferenças que não são materiais para a semântica do texto. A seguir estão alguns procedimentos comuns de limpeza.
Nota
Você deve retornar a parte original e impuro como o resultado da consulta, portanto, você deve adicionar um campo adicional para armazenar os dados limpos e vetoriais.
Implementar estratégias de minúsculas. A letra minúscula permite que palavras maiúsculas, como palavras no início de uma frase, correspondam às palavras correspondentes dentro de uma frase. As incorporações normalmente diferenciam maiúsculas de minúsculas, então "Cheetah" e "cheetah" resultariam em um vetor diferente para a mesma palavra lógica. Por exemplo, para a consulta inserida "o que é mais rápido, um guepardo ou um puma?" a inserção "guepardos são mais rápidos do que pumas" é uma correspondência mais próxima do que "Guepardos são mais rápidos que pumas". Algumas estratégias minúsculas reduzem todas as palavras, incluindo substantivos adequados, enquanto outras estratégias reduzem apenas as primeiras palavras em frases.
Remova palavras irrelevantes. Palavras irrelevantes são palavras como "a", "um" e "o". Você pode remover palavras irrelevantes para reduzir a dimensionalidade do vetor resultante. Se você remover palavras irrelevantes no exemplo anterior, "um guepardo é mais rápido que um puma" e "a chita é mais rápida que o puma" são vetoriaismente iguais a "puma mais rápido guepardo". No entanto, é importante entender que algumas palavras irrelevantes têm significado semântico. Por exemplo, "não" pode ser considerado uma palavra parada, mas tem um significado semântico significativo. Você precisa testar para determinar o efeito da remoção de palavras irrelevantes.
Corrija erros de ortografia. Uma palavra incorreta não corresponde à palavra escrita corretamente no modelo de inserção. Por exemplo, "cheatah" não é o mesmo que "chita" na inserção. Você deve corrigir erros de ortografia para resolver esse problema.
Remover caracteres Unicode. Remover caracteres Unicode pode reduzir o ruído em suas partes e reduzir a dimensionalidade. Como palavras irrelevantes, alguns caracteres Unicode podem conter informações relevantes. É importante realizar testes para entender o impacto da remoção de caracteres Unicode.
Normalizar texto. Normalizar o texto de acordo com padrões como expandir abreviações, converter números em palavras e expandir contrações, por exemplo, expandir "estou" para "estou", pode ajudar a aumentar o desempenho das pesquisas de vetor.
Aumentando partes
Pesquisas semânticas em relação às partes vetorizadas funcionam bem para alguns tipos de consultas, mas não tão bem para outras. Dependendo dos tipos de consultas que você precisa dar suporte, talvez seja necessário aumentar suas partes com informações adicionais. Os campos de metadados adicionais são todos armazenados na mesma linha que suas inserções e podem ser usados na solução de pesquisa como filtros ou como parte de uma pesquisa.
A imagem a seguir mostra o JSON de conteúdo totalmente enriquecido e descreve como os metadados podem ser usados por uma plataforma de pesquisa.
As colunas de metadados que você precisa adicionar dependem do domínio do problema, incluindo o tipo de dados que você tem e os tipos de consultas que você deseja dar suporte. Você precisa analisar a experiência do usuário, os dados disponíveis e a qualidade do resultado que você está tentando alcançar. A partir daí, você pode determinar quais metadados podem ajudá-lo a atender aos requisitos da carga de trabalho.
A seguir estão alguns campos de metadados comuns, juntamente com o texto da parte original, algumas diretrizes sobre seus possíveis usos e ferramentas ou técnicas que geralmente são usadas para gerar o conteúdo dos metadados.
ID. Uma ID identifica exclusivamente uma parte. Uma ID exclusiva é útil durante o processamento para determinar se uma parte já existe no repositório. Uma ID pode ser um hash de algum campo de chave. Tools: uma biblioteca de hash.
Título. Um título é um valor retornado útil para uma parte. Ele fornece um resumo rápido do conteúdo na parte. O resumo também pode ser útil para consultar com uma pesquisa indexada, pois pode conter palavras-chave para correspondência. Tools: um modelo de linguagem.
Resumo. O resumo é semelhante ao título, pois é um valor de retorno comum e pode ser usado em pesquisas indexadas. Os resumos geralmente são mais longos do que os títulos. Tools: um modelo de linguagem.
Reformulação da parte. A reformulação de uma parte pode ser útil como um campo de pesquisa de vetor porque a reformulação captura variações na linguagem, como sinônimos e parafraseia. Tools: um modelo de linguagem.
Keywords. Pesquisas de palavra-chave são úteis para dados que não são condizências, para pesquisar uma correspondência exata e quando um termo ou valor específico é importante. Por exemplo, um fabricante de automóveis pode ter revisões ou dados de desempenho para cada um de seus modelos por vários anos. "Revisão do produto X para o ano 2009" é semanticamente como "Revisão do produto X para 2010" e "Revisão do produto Y para 2009". Nesse caso, é mais eficaz corresponder às palavras-chave do produto e do ano. Tools: um modelo de linguagem, RAKE, KeyBERT, multi-rake.
Entidades. As 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 exatas ou quando entidades específicas são importantes. Tools: spaCy, Stanford Named Entity Recognizer (Stanford NER), scikit-learn, Natural Language Toolkit (NLTK).
Texto de parte limpo. O texto da parte limpa. Tools: um modelo de linguagem.
Perguntas que a parte pode responder. Às vezes, a consulta inserida não é uma correspondência próxima à parte inserida. Por exemplo, a consulta pode ser pequena em relação ao tamanho da parte. Talvez seja melhor formular as consultas que a parte pode responder e fazer uma pesquisa de vetor entre a consulta real do usuário e as consultas pré-formuladas. Tools: um modelo de linguagem.
Fonte. A origem da parte pode ser valiosa como um retorno para consultas. Retornar a origem permite que o querier cite a origem original.
Idioma. O idioma da parte pode ser útil como um filtro em consultas.
O custo de aumento
O uso de alguns modelos de linguagem para aumentar partes pode ser caro. Você precisa calcular o custo de cada enriquecimento que você está considerando e multiplicá-lo pelo número estimado de partes ao longo do tempo. Você deve usar essas informações, juntamente com o teste dos campos enriquecidos, para determinar a melhor decisão de negócios.
Próxima etapa
Recursos relacionados
- enriquecimento de IA no Azure AI Search
- conceitos do conjunto de habilidades do no Azure AI Search