Entender a pesquisa semântica
Vamos examinar os conceitos básicos da pesquisa semântica:
- Como ela difere da pesquisa léxica padrão.
- O que é a inserção de vetor?
- O que os bancos de dados vetoriais fazem?
O que é pesquisa semântica?
A pesquisa lexical padrão, ou pesquisa de palavra-chave, consulta documentos por caracteres correspondentes. Por exemplo, a consulta "luz" 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 incorporar palavras-chave nos metadados ou no próprio texto (o que pode ser uma experiência estranha para o usuário).
Introduza a pesquisa semântica. A pesquisa semântica não usa similaridade de caractere. Em vez disso, ele 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 coincidência de palavras-chave porque é menos sensível à seleção precisa ou à formulação das palavras-chave.
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 dos bancos de dados relacionais realmente não envolve armazenar vetores n-dimensionais e calcular entre eles a distância numérica. A pesquisa semântica eficiente requer a funcionalidade do banco de dados vetor .
Inserções
Uma inserção é uma representação numérica de semântica. As inserções são representadas como vetores ndimensionais: matrizes de n números. Cada dimensão representa alguma qualidade semântica, conforme determinado pelo modelo de inserção.
Se dois vetores de incorporação apontarem em direções semelhantes, eles representam conceitos semelhantes, como "brilhante" e "ensolarado". Se apontarem para direções opostas, eles 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 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 ndimensionais com base em algum modelo ou função. A similaridade numérica dos embeddings representa a similaridade semântica dos seus dados correspondentes.
A similaridade numérica de dois vetores ndimensionais v1
e v2
é fornecida por seu produto de ponto, escrito v1·v2
. Para calcular o produto escalar, multiplique os valores de cada dimensão em pares e 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 similaridade de cosseno de zero são ortogonais: semanticamente não relacionados.
Você pode visualizar espaços ndimensionais projetando-os para o espaço tridimensional usando a PCA (análise de componente principal). O PCA é uma técnica padrão para reduzir dimensões de vetor. O resultado é uma projeção simplificada, mas visualizada do espaço ndimensional. 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:
- Gere a inserção de consulta usando um modelo de linguagem.
- Calcule o produto escalar da incorporação da consulta em relação à incorporação pré-calculada de cada documento.
- Classifique os produtos escalares, números de -1 a 1.
- 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 desempenho em um banco de dados relacional. Para armazenar e processar esse tipo de consulta de similaridade de vetor, use um banco de dados de vetor.
Bancos de dados de vetores
Um banco de dados vetor otimiza o armazenamento e o cálculo de vetores multidimensionais, como inserções. Em particular, bancos de dados vetoriais fornecem cálculos de produto escalar rápidos e precisos para executar uma consulta de similaridade vetorial.
Pesquisas de similaridade de vetor têm vários casos de uso:
- encontre imagens semelhantes à incorporaçã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 de vetores para verificar a similaridade da incorporação da consulta com cada incorporação armazenada. Os aplicativos podem buscar os dados correspondentes às inserções.
Há muitos bancos de dados de vetor 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 vetor: