Pesquisa semântica: consulta por semelhança de vectores

Tradução automática de Deepl

Com a crescente importância da busca baseada em vetores em aplicações de IA como busca semântica, mecanismos de recomendação e processamento de linguagem natural, 4D introduz suporte nativo para consultas vetoriais na função query(). Essa melhoria traz comparações de similaridade de vetores diretamente para a linguagem de DataClass.query() e EntitySelection.query().

Consulta por semelhança de vetor

Agora é possível pesquisar entidades cujos campos vetoriais são semelhantes a um vetor de referência usando operadores de comparação familiares: >, >=, < e <=.

A sintaxe básica é:

// Call the OpenAI embeddings API to generate the vector for the input text
var $result:=$clientAI.embeddings.create("A general manager living in France"; $model)
Var $inputEmbedding:=$result.vector

var $results := ds.MyClass.query("myVectorField > :1"; {vector: $inputEmbedding})

Isso retorna entidades em que a similaridade com $myVector é maior do que o limite padrão (0,5), usando a métrica de similaridade padrão: similaridade de cosseno.

É possível ajustar sua pesquisa definindo explicitamente ambos:

  • Qual a métrica de similaridade mais relevante para o seu caso de utilização com o atributo de métrica

  • Qual a semelhança entre um resultado e o seu vetor de referência para ser considerado relevante com o atributo threshold

var $comparisonVector := {vector: $inputEmbedding; metric: mk cosine; threshold: 0.4}
var $results := ds.MyTable.query("myVectorField <= :1"; $comparisonVector)

COMBINANDO BUSCA SEMÂNTICA COM CONSULTA CLÁSSICA

Uma vantagem chave da abordagem de 4D é que consultas semânticas podem ser combinadas com filtros ORDA tradicionais na mesma consulta.

Isso permite criar buscas poderosas e precisas que combinam descoberta baseada em significado com critérios estruturados.

var $comparisonVector := {vector: $myVector; metric: mk cosine; threshold: 0.4} 
var $results := ds.MyTable.query("myVectorField <= :1 AND salary>100000"; $comparisonVector)

Nesse exemplo, a consulta recupera empregados cujas descrições de trabalho são semanticamente próximas ao texto de entrada e cujo salário excede 100.000.

QUANDO UTILIZAR (E QUANDO NÃO UTILIZAR)

A Pesquisa Semântica (consulta) é ideal quando pretende que a sua aplicação compreenda o significado em vez de correspondências exactas.

É perfeita para:

  • Pesquisas difusas ou contextuais (por exemplo, “encontrar documentos semelhantes a este”)

  • Consultas em linguagem natural (por exemplo, “funcionários que trabalham em marketing e design”)

  • Motores de recomendação e funcionalidades de descoberta de conhecimentos

No entanto, não foi concebido para tarefas analíticas estruturadas.

Se a sua consulta for algo como “os 10 empregados mais bem pagos”, uma consulta clássica é mais rápida e mais adequada.

Combinando ambas as abordagens, é possível criar experiências de pesquisa inteligentes e precisas. A pesquisa semântica acrescenta um poder notável e combina perfeitamente com as consultas tradicionais baseadas em atributos ORDA.

Conclusão

Com a Busca Semântica (consulta) agora integrada em 4D, pode facilmente criar funcionalidades de busca e descoberta guiadas por IA em suas aplicações.

Selecione a métrica de similaridade que melhor se adequa ao seu caso de uso, ajuste o limite de relevância, e combine filtros semânticos e estruturados para resultados ótimos.

Esta nova capacidade traz o poder da compreensão baseada em IA diretamente para o seu modelo de dados 4D, abrindo a porta a consultas mais inteligentes e sensíveis ao contexto.

Atualmente, os campos vectoriais não são indexados, mas o suporte de indexação será introduzido numa versão futura de 4D. Esse aprimoramento futuro melhorará significativamente a performance e fará com que a Busca Semântica seja ainda mais rápida e eficiente para grandes conjuntos de dados.

Fabrice Mainguené
- Proprietário do produto ->p>Fabrice Mainguené juntou-se à equipa do Programa 4D em Novembro, 2016. Como Proprietário do Produto, está encarregado de escrever as histórias dos utilizadores, traduzindo-as depois para especificações funcionais. O seu papel é também o de assegurar que a implementação da funcionalidade entregue vai ao encontro das necessidades do cliente.Após a obtenção da licenciatura em Informática no CNAM, Fabrice juntou-se a uma pequena empresa editora de software como programador Windev. Depois trabalhou para diferentes empresas nas áreas da indústria e comércio como programador Windev e web developer, bem como como consultor técnico sobre novas funcionalidades.