4D AI: Ordinamento dei risultati delle query in base alla similarità vettoriale

Tradotto automaticamente da Deepl

Nel post Ricerca semantica: interrogazione per similarità vettoriale, abbiamo introdotto come interrogare le entità utilizzando la similarità vettoriale, un modo efficace per trovare i record più rilevanti in base al significato piuttosto che ai valori esatti.

4D 21 R2 offre un nuovo modo di ordinare i risultati delle query utilizzando i campi 4D.Vector. Non solo è possibile filtrare le entità in base alla similarità, ma anche ordinare i risultati della query utilizzando la funzione .query() in modo che le entità più rilevanti e semanticamente più vicine appaiano per prime. Che si tratti di creare un’esperienza di ricerca intelligente, un motore di raccomandazione o un assistente basato sull’intelligenza artificiale, questa nuova funzionalità garantisce che i risultati siano ordinati in base alla rilevanza, fornendo risultati più accurati e intuitivi.

Ordinamento dei risultati in base alla somiglianza

Come sviluppatore 4D, ora puoi ordinare i risultati di una query in base alla similarità vettoriale direttamente all’interno dell’espressione della query. Questo miglioramento si applica sia al codice 4D che alle richieste REST, semplificando il recupero delle entità in ordine di vicinanza semantica.

Quando esegui una query su un campo vettoriale e lo stesso campo appare nella clausola order by, 4D ordina automaticamente i risultati in base al calcolo della loro similarità (o distanza).


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)

COMBINAZIONE DELL’ORDINAMENTO SEMANTICO CON L’ORDINAMENTO CLASSICO

Un vantaggio chiave dell’approccio di 4D è che l’ordinamento semantico basato sui vettori può essere combinato con i tradizionali filtri ORDA nella stessa query.

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)

In questo esempio, la query recupera i dipendenti la cui descrizione del lavoro è semanticamente vicina al testo immesso e il cui stipendio supera i 100.000, ordinandoli in base alla similarità vettoriale e allo stipendio.

Utilizzo dell’API REST

Questa funzione è disponibile anche tramite l’API REST. È possibile ordinare i risultati in base alla similarità vettoriale con un semplice parametro di query:

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"

Conclusione

Questo miglioramento rende le query basate sull’intelligenza artificiale ancora più pratiche e intuitive. Ora è possibile:

  • Eseguire query sui dati utilizzando la similarità vettoriale.

  • Ordinare i risultati in base alla similarità, portando in primo piano le entità più rilevanti.

  • Utilizzare la funzione in modo coerente sia in contesti 4D che REST.

Ciò significa che è possibile creare facilmente funzionalità come la ricerca semantica, gli elenchi di raccomandazioni o le ricerche sensibili al contesto in cui i risultati più simili vengono visualizzati per primi.

Fabrice Mainguené
- Product Owner -Fabrice Mainguené si è unito al team di 4D Program nel novembre 2016. In qualità di Product Owner, è incaricato di scrivere le storie degli utenti e di tradurle in specifiche funzionali. Il suo ruolo è anche quello di assicurarsi che l'implementazione della funzionalità fornita soddisfi le esigenze del cliente.Dopo aver conseguito una laurea in Informatica presso il CNAM, Fabrice è entrato a far parte di una piccola società di pubblicazione di software come sviluppatore Windev. In seguito ha lavorato per diverse aziende del settore industriale e commerciale come sviluppatore Windev e web e come consulente tecnico su nuove funzionalità.