4D AI: Classificação dos resultados da consulta por similaridade vetorial

Tradução automática de Deepl

Na publicação Pesquisa semântica: consulta por similaridade vetorial, apresentamos como consultar entidades usando similaridade vetorial, uma maneira poderosa de encontrar os registros mais relevantes com base no significado, em vez de valores exatos.

O 4D 21 R2 vem com uma nova maneira de classificar os resultados da consulta usando campos 4D.Vector. Você pode não apenas filtrar entidades por similaridade, mas também classificar os resultados da sua consulta usando a função .query() para que as entidades mais relevantes e semanticamente mais próximas apareçam primeiro. Esteja você criando uma experiência de pesquisa inteligente, um mecanismo de recomendação ou um assistente baseado em IA, esse novo recurso garante que seus resultados sejam ordenados por relevância, proporcionando resultados mais precisos e fáceis de usar.

Classificação dos resultados por similaridade

Como desenvolvedor 4D, agora você pode classificar os resultados de uma consulta com base na similaridade vetorial diretamente na sua expressão de consulta. Essa melhoria se aplica tanto ao código 4D quanto às solicitações REST, simplificando a recuperação de entidades por ordem de proximidade semântica.

Quando você executa uma consulta em um campo vetorial e esse mesmo campo aparece na cláusula order by, o 4D ordena automaticamente os resultados pelo cálculo de similaridade (ou distância).


var $result:=$clientAI.embeddings.create("A general manager living in France"; $model)
Var $inputEmbedding:=$result.vector
var $comparisonVector := {vector: $inputEmbedding; threshold: 0.4}

var $results := ds.MyTable.query("myVectorField >= :1 order by myVectorField"; $comparisonVector)

COMBINANDO CLASSIFICAÇÃO SEMÂNTICA COM CLASSIFICAÇÃO CLÁSSICA

Uma vantagem importante da abordagem do 4D é que a ordenação semântica baseada em vetores pode ser combinada com filtros ORDA tradicionais na mesma consulta.

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

Neste exemplo, a consulta recupera funcionários cujas descrições de cargo são semanticamente próximas ao texto inserido e cujo salário excede 100.000, e os ordena de acordo com a similaridade vetorial e o salário.

Usando a API REST

Esse recurso também está disponível por meio da API REST. Você pode classificar seus resultados por similaridade vetorial com um parâmetro de consulta simples:

GET /rest/MyTable/?$filter="myVectorField>=:1 order by myVectorField"&$params=[{"vector":[1,2,3,...],"threshold":0.4}]
// OR
GET /rest/MyTable/?$filter="myVectorField>=:1"&$params=[{"vector":[1,2,3,...],"threshold":0.4}]&$orderby="Vector"

Conclusão

Esta melhoria torna as consultas alimentadas por IA ainda mais práticas e intuitivas. Agora pode:

  • Consultar seus dados usando a similaridade vetorial.

  • Classificar os resultados por similaridade, trazendo as entidades mais relevantes para o topo.

  • Usar o recurso de forma consistente nos contextos 4D e REST.

Isso significa que você pode criar facilmente recursos como pesquisa semântica, listas de recomendações ou pesquisas sensíveis ao contexto, nas quais os resultados mais semelhantes aparecem primeiro.

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.