Gerar incorporações

Azure AI services
Azure AI Search
Azure OpenAI Service
Azure Machine Learning

Agora que você dividiu seus documentos em partes e enriqueceu as partes, a próxima etapa é gerar incorporações para essas partes e quaisquer campos de metadados sobre os quais você planeja realizar pesquisas vetoriais. Uma incorporação é uma representação matemática de um objeto, como texto. Quando uma rede neural está sendo treinada, muitas representações de um objeto são criadas e cada representação tem conexões com outros objetos na rede. Uma incorporação é uma das representações do objeto selecionado porque captura o significado semântico do objeto.

Como uma incorporação é uma representação matemática desse objeto e essa representação tem conexões com representações de outros objetos, você pode comparar objetos matematicamente. Um exemplo famoso para mostrar como as incorporações capturam o significado semântico e as relações entre si é:

embedding("rei") - embedding("homem") + embedding("mulher") ≈ embedding("rainha")

As incorporações são comparadas entre si usando as noções de semelhança e distância. O diagrama a seguir ilustra como as incorporações podem ser comparadas.

Diagrama mostrando como os vetores são comparados.

Figura 1. Comparando incorporações

Em uma solução de geração aumentada de recuperação (RAG), você geralmente incorpora a consulta do usuário usando o mesmo modelo de incorporação que seus blocos e procura vetores relevantes do banco de dados para retornar os blocos semanticamente mais relevantes. O texto original das partes relevantes é então passado para o modelo de linguagem grande como dados de aterramento.

Nota

Esta característica dos vetores enfatiza a importância de limpar os pedaços para que a proximidade matemática possa ser rastreada mais de perto com relevância semântica.

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

Importância do modelo de incorporação

O modelo de incorporação escolhido pode ter um efeito significativo na relevância dos resultados da pesquisa vetorial. Um dos principais fatores que você deve considerar ao escolher um modelo de incorporação é o vocabulário do modelo. Cada modelo de incorporação é treinado com um vocabulário específico. Por exemplo, o tamanho do vocabulário do BERT é de cerca de 30.000 palavras.

O vocabulário de um modelo de incorporação é importante por causa de como os modelos de incorporação tratam palavras que não estão em seu vocabulário. Mesmo que a palavra não esteja em seu vocabulário, o modelo ainda precisa calcular um vetor para ela. Para fazer isso, muitos modelos dividem as palavras em subpalavras, que eles tratam como tokens distintos ou agregam os vetores para as subpalavras para criar uma única incorporação.

Diagrama mostrando a palavra histograma sendo dividida nas seguintes subpalavras: dele, ta e meu.

Figura 2. Dividir uma palavra desconhecida em subpalavras

Vamos dar um exemplo fictício em que a palavra "histamina" não está no vocabulário do modelo de incorporação. "Histamina" tem um significado semântico como uma substância química que seu corpo libera, o que causa muitos sintomas de alergias. Como o modelo de incorporação não contém "histamina", ele pode dividi-lo em subpalavras que estão em seu vocabulário, como "seu", "ta" e "meu". Os significados semânticos dessas subpalavras não estão nem perto do significado de "histamina". Os valores vetoriais individuais ou agregados das subpalavras produzem piores correspondências vetoriais do que se "histamina" estivesse no vocabulário do modelo.

Escolher um modelo de incorporação

Determinar o modelo de incorporação certo para o seu caso de uso é uma atividade humana. A sobreposição do vocabulário do modelo de incorporação com as palavras dos seus dados deve ser um fator-chave que você considera ao escolher seu modelo de incorporação.

Diagrame o fluxo de escolha de um modelo de incorporação.

Figura 3. Escolhendo um fluxo de modelo de incorporação

A primeira coisa que você deve determinar é se seu conteúdo é específico do domínio. Por exemplo, seus documentos são específicos para um caso de uso, sua organização ou um setor? Uma boa maneira de determinar a especificidade do domínio é ver se as entidades e palavras-chave em seu conteúdo estão geralmente disponíveis ou podem ser encontradas na internet. Se forem, é provável que um modelo de incorporação geral o faça.

Conteúdo geral ou não específico do domínio

Quando você está escolhendo um modelo de incorporação geral, um bom lugar para começar é a tabela de classificação Hugging Face. Este site fornece uma classificação atualizada dos modelos de incorporação. Avalie como os modelos funcionam com seus dados, começando com os modelos de melhor classificação.

Conteúdo específicos de um domínio

Para conteúdo específico do domínio, a primeira etapa é determinar se há um modelo específico de domínio disponível que você possa usar. Imagine, por exemplo, que os seus dados estão no domínio biomédico. Você deve considerar o uso do modelo BioGPT, que é um modelo de linguagem que foi pré-treinado em um grande corpus de literatura biomédica. Este modelo destina-se à mineração e geração de textos biomédicos. Se os modelos de domínio estiverem disponíveis, comece avaliando como esses modelos funcionam com seus dados.

Se não houver modelos específicos de domínio disponíveis ou se os modelos específicos de domínio não tiverem um bom desempenho, a próxima opção é ajustar um modelo de incorporação geral com seu vocabulário específico de domínio.

Importante

Para qualquer modelo que você escolher, você precisa verificar se a licença é adequada às suas necessidades e o modelo fornece o suporte de idioma necessário.

Avaliar modelos de incorporação

Dois meios eficazes de avaliar um modelo de incorporação são visualizar as incorporações e avaliar a distância entre os vetores pergunta e bloco.

Visualizar incorporações

Você pode usar bibliotecas como t-SNE para plotar os vetores para seus blocos e sua pergunta em um gráfico X-Y. Você pode então determinar o quão distantes os pedaços estão uns dos outros e a pergunta. A figura mostra vetores de blocos plotados. As duas setas próximas uma da outra representam dois vetores de blocos, enquanto a outra seta representa um vetor de pergunta. Você pode usar essa visualização para entender o quão longe a pergunta está dos pedaços.

Visualização de uma incorporação. A imagem mostra um monte de pontos azuis plotados em uma escala X-Y.

Figura 4. Plotagem de incorporações

Calculando distâncias de incorporação

Um meio programático de avaliar o quão bem seu modelo de incorporação está trabalhando com suas perguntas e partes é calcular a distância entre os vetores de pergunta e os vetores de bloco. Você pode usar a distância euclidiana ou a distância de Manhattan.

Economia de incorporação

Ao escolher um modelo de incorporação, há um compromisso entre desempenho e custo. Modelos de incorporação maiores geralmente têm melhor desempenho em conjuntos de dados de benchmarking. No entanto, o aumento do desempenho tem um custo. Vetores maiores exigem mais espaço para serem armazenados em um banco de dados vetorial e exigem mais recursos computacionais e tempo ao comparar incorporações. Modelos de incorporação menores geralmente têm desempenho mais baixo nos mesmos benchmarks. Eles exigem menos espaço em seu banco de dados vetorial e exigem menos computação e tempo ao comparar incorporações.

Ao projetar seu sistema, você deve levar em conta o custo de incorporação em termos de armazenamento, computação e requisitos de desempenho. Validar o desempenho dos modelos através da experimentação é crucial. Os parâmetros de referência publicamente disponíveis são sobretudo conjuntos de dados académicos. A maioria dos resultados não pode ser transposta diretamente para dados corporativos e casos de uso. Dependendo dos requisitos, você pode favorecer o desempenho em detrimento do custo, ou aceitar uma troca de desempenho bom o suficiente em troca de um custo mais baixo.

Próximos passos