Compreender a pesquisa semântica

Concluído

Vamos analisar os fundamentos da pesquisa semântica:

  • Como difere da pesquisa lexical padrão.
  • O que é a incorporação vetorial?
  • O que fazem os bancos de dados vetoriais?

A pesquisa lexical padrão, ou pesquisa por palavra-chave, consulta documentos por caracteres correspondentes. Por exemplo, a consulta "light" corresponde ao texto "bright light" 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 estar um caractere desligado (um ausente s, ou trocando o g e h). Embora a correspondência difusa e outras técnicas como a derivação sejam úteis, esta técnica deve corresponder a sinónimos ou linguagem semanticamente semelhante: diferentes fraseados, gírias, vocabulário técnico, etc. Para fornecer os resultados de pesquisa mais relevantes com a pesquisa lexical, os autores precisam incorporar palavras-chave nos metadados ou no próprio texto (o que pode ser uma experiência de usuário incômoda).

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

Se duas incorporações são numericamente semelhantes, então elas também são semanticamente semelhantes. Essa semelhança é mais geral do que testar a sobreposição de palavras-chave porque é menos sensível à seleção precisa de palavras-chave ou fraseados.

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

A maioria dos casos de uso de banco de dados relacional não envolve o armazenamento de vetores n-dimensionais e o cálculo da distância numérica entre eles. A pesquisa semântica eficiente requer a funcionalidade de banco de dados vetorial.

Um diagrama mostrando um documento e uma consulta passando pela API OpenAI Embeddings para se tornarem vetores de incorporação. Estes vetores são então comparados usando a distância cosseno.

Incorporações

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

Um diagrama mostrando o texto de entrada

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

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

A semelhança numérica de dois vetores v1 n-dimensionais e v2 é dada pelo seu produto ponto, escrito v1·v2. Para calcular o produto 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 incorporações são vetores unitários (vetores de comprimento um), o produto do ponto é igual à semelhança cosseno dos vetores, um valor entre -1 (direções precisamente opostas) e 1 (exatamente a mesma direção). Os vetores com semelhança cosseno de zero são ortogonais: semanticamente não relacionados.

Você pode visualizar espaços n-dimensionais projetando-os para o espaço tridimensional usando a análise de componentes principais (PCA). A ACP é uma técnica padrão para reduzir as dimensões vetoriais. O resultado é uma projeção simplificada, mas visualizável, do espaço n-dimensional. Renderizar suas incorporações de documentos dessa maneira mostrará que mais documentos semelhantes estão agrupados em clusters, enquanto mais documentos diferentes estão mais distantes.

Dadas essas definições, realizar uma pesquisa semântica de uma consulta em relação a uma coleção de incorporações de documentos é simples matematicamente:

  1. Gere a incorporação da consulta usando um modelo de linguagem.
  2. Pegue o produto ponto da consulta embutida em relação à incorporação pré-calculada de cada documento.
  3. Ordene os produtos de pontos, números de -1 a 1.
  4. Os documentos mais relevantes (semanticamente semelhantes) têm as pontuações mais elevadas e os documentos menos relevantes (semanticamente diferentes) têm as pontuações mais baixas.

Embora simples matematicamente, essa não é uma consulta simples ou de alto desempenho em um banco de dados relacional. Para armazenar e processar esse tipo de consulta de semelhança vetorial, use um banco de dados vetorial.

Bancos de dados vetoriais

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

As pesquisas de semelhança vetorial têm vários casos de uso:

  • Localizar imagens semelhantes à incorporação da imagem de consulta
  • Localizar documentos semanticamente semelhantes ao texto da consulta
  • Encontre produtos com características e classificações semelhantes para um sistema de recomendação

A pesquisa semântica consulta o banco de dados vetorial quanto à semelhança da incorporação da consulta com cada incorporação armazenada. Os aplicativos podem então buscar os dados correspondentes às incorporações.

Há muitos bancos de dados vetoriais nativos e extensões de banco de dados para escolher. Os seguintes serviços do Azure podem ajudá-lo a atender às suas necessidades de banco de dados vetorial: