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.
