Noções básicas sobre modelos semânticos

Concluído

Vamos examinar os conceitos básicos da pesquisa semântica:

  • Veja como ela difere da pesquisa léxica padrão.
  • O que é a inserção de vetor?
  • O que os bancos de dados vetoriais fazem?

A pesquisa lexical padrão, ou pesquisa de palavra-chave, consulta documentos por caracteres correspondentes. Por exemplo, a consulta "brilhante" corresponde ao texto "luz brilhante" porque o caractere light aparece no documento.

A pesquisa lexical pode ser aumentada com correspondência difusa; por exemplo, a consulta "luzes" ainda pode corresponder ao texto "luz brilhante" ou ao erro ortográfico lihgts devido a ter um caractere diferente (um s, ausente ou trocando o g e h). Embora a correspondência difusa e outras técnicas como a lematização sejam úteis, essa técnica precisa corresponder a sinônimos ou linguagem semanticamente semelhante: frase diferente, gíria, vocabulário técnico etc. Para fornecer os resultados de pesquisa mais relevantes com a pesquisa lexical, os autores precisam inserir palavras-chave em metadados ou no próprio texto (o que pode ser uma experiência estranha do usuário).

Insira pesquisa semântica. A pesquisa semântica não usa similaridade de caractere. Em vez disso, ela usa representações numéricas dos conceitos em palavras e frases. Essas representações numéricas são chamadas de vetores de inserção ou simplesmente inserções.

Se duas inserções forem numericamente semelhantes, elas também serão semanticamente semelhantes. Essa semelhança é mais geral do que testar a sobreposição de palavras-chave porque é menos sensível à composição da frase ou à seleção de palavra-chave precisas.

Para executar uma pesquisa semântica, primeiro gere o vetor de inserção da consulta. Em seguida, compare esse vetor com um banco de dados de vetores. As inserções mais próximas à inserção de consulta são os documentos mais semanticamente semelhantes à consulta.

A maioria dos casos de uso do banco de dados relacional não envolve armazenar vetores de n dimensões e calcular a distância numérica entre eles. A pesquisa semântica eficiente requer a funcionalidade do banco de dados vetorial.

Um diagrama mostrando um documento e uma consulta passando pela API de Inserções de OpenAI para se tornarem vetores de inserção. Esses vetores são comparados usando a distância de cosseno.

Incorporações

Uma inserção é uma representação numérica de semântica. As inserções são representadas como vetores de n dimensões: matrizes de n números. Cada dimensão representa alguma qualidade semântica, conforme determinado pelo modelo de inserção.

Um diagrama mostrando o texto de entrada

Se dois vetores de inserção apontarem em direções semelhantes, eles representarão conceitos semelhantes, como "brilhante" e "ensolarado". Se eles apontam um para o outro, eles representam conceitos opostos, como "triste" e "feliz". A estrutura do modelo de inserção e os dados de treinamento determinam o que é considerado semelhante e diferente.

As inserções podem ser aplicadas ao texto e a qualquer tipo de dados, como imagens ou áudio. A parte crítica é transformar dados em vetores de inserção de n dimensões com base em algum modelo ou função. A semelhança numérica das inserções representa a similaridade semântica dos dados correspondentes a elas.

A similaridade numérica de dois vetores de n dimensões v1 e v2 é fornecida pelo produto de ponto deles, escrito como v1·v2. Para calcular o produto de ponto, multiplique os valores de cada dimensão em pares e, em seguida, some o resultado:

dot_product(v1, v2) = SUM(
 v1[0] * v2[0] +
 v1[1] * v2[1],
 ...,
 v1[n-1] * v2[n-1],
 v1[n] * v2[n]
)

Como as inserções são vetores de unidade (vetores de comprimento um), o produto de ponto é igual à similaridade de cosseno dos vetores, um valor entre -1 (direções precisamente opostas) e 1 (exatamente na mesma direção). Vetores com uma semelhança de cosseno de zero são ortogonais: semanticamente não relacionados.

Você pode visualizar espaços de n dimensões projetando-os para o espaço tridimensional usando a PCA (análise de componente de entidade de segurança). O PCA é uma técnica padrão para reduzir dimensões de vetor. O resultado é uma projeção simplificada, mas visualizável, do espaço de n dimensões. Renderizar suas inserções de documento dessa maneira mostrará que documentos mais semelhantes são agrupados em clusters, enquanto documentos mais diferentes estão mais distantes.

Dadas essas definições, executar uma pesquisa semântica de uma consulta em uma coleção de inserções de documentos é simples matematicamente:

  1. Gere a inserção de consulta usando um modelo de linguagem.
  2. Use o produto de ponto da inserção de consulta na inserção pré-calculada de cada documento.
  3. Classifique os produtos de ponto, números de -1 a 1.
  4. Os documentos mais relevantes (semanticamente semelhantes) têm as pontuações mais altas, e os documentos menos relevantes (semanticamente diferentes) têm as pontuações mais baixas.

Embora seja simples matematicamente, essa não é uma consulta simples ou com bom desempenho em um banco de dados relacional. Para armazenar e processar esse tipo de consulta de similaridade de vetor, use um banco de dados vetorial.

Bancos de dados de vetores

Um banco de dados vetorial otimiza o armazenamento e o cálculo de vetores multidimensionais, como inserções. Em particular, os bancos de dados vetoriais fornecem cálculos rápidos e precisos de produto de ponto para executar uma consulta de similaridade de vetor.

Pesquisas de similaridade de vetor têm vários casos de uso:

  • localizar imagens semelhantes à inserção da imagem de consulta
  • localizar documentos semanticamente semelhantes ao texto da consulta
  • localizar produtos com recursos e classificações semelhantes para um sistema de recomendação

A pesquisa semântica consulta o banco de dados vetorial quanto à similaridade da inserção de consulta em cada inserção armazenada. Os aplicativos podem buscar os dados correspondentes às inserções.

Há muitos bancos de dados vetoriais nativos e extensões de banco de dados para escolher. Os seguintes serviços do Azure podem ajudar você a satisfazer as suas necessidades de banco de dados vetorial: