4D AI: Třídění výsledků dotazů podle podobnosti vektorů

Automaticky přeloženo z Deepl

V příspěvku Sémantické vyhledávání: dotazování podle vektorové podobnosti jsme představili, jak dotazovat entity pomocí vektorové podobnosti, což je účinný způsob, jak najít nejrelevantnější záznamy na základě významu spíše než přesných hodnot.

4D 21 R2 přináší nový způsob třídění výsledků dotazů pomocí polí 4D.Vector. Entity můžete nejen filtrovat podle podobnosti, ale také třídit výsledky dotazu pomocí funkce .query(), aby se nejrelevantnější a sémanticky nejbližší entity zobrazovaly jako první. Ať už vytváříte inteligentní vyhledávání, doporučovací engine nebo asistenta řízeného umělou inteligencí, tato nová funkce zajistí, že výsledky budou seřazeny podle relevance, a poskytne tak přesnější a uživatelsky přívětivější výsledky.

Seřazení výsledků podle podobnosti

Jako vývojář 4D můžete nyní třídit výsledky dotazu na základě vektorové podobnosti přímo ve vašem dotazovém výrazu. Toto vylepšení se vztahuje jak na kód 4D, tak na požadavky REST, což usnadňuje načítání entit v pořadí podle sémantické blízkosti.

Když provedete dotaz na vektorové pole a stejné pole se objeví v klauzuli order by, 4D automaticky seřadí výsledky podle výpočtu jejich podobnosti (nebo vzdálenosti).


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)

KOMBINACE SEMANTICKÉHO SEŘAZENÍ S KLASICKÝM SEŘAZENÍM

Klíčovou výhodou přístupu 4D je, že vektorové sémantické řazení lze kombinovat s tradičními filtry ORDA v rámci stejného dotazu.

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)

V tomto příkladu dotaz vyhledá zaměstnance, jejichž pracovní náplň je sémanticky blízká zadanému textu a jejichž plat přesahuje 100 000, a seřadí je podle vektorové podobnosti a platu.

Použití REST API

Tato funkce je k dispozici také prostřednictvím REST API. Výsledky můžete seřadit podle vektorové podobnosti pomocí jednoduchého parametru dotazu:

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"

Závěr

Díky tomuto vylepšení jsou dotazy založené na umělé inteligenci ještě praktičtější a intuitivnější. Nyní můžete:

  • Vyhledávat data pomocí vektorové podobnosti.

  • Seřadit výsledky podle podobnosti, čímž se nejrelevantnější entity zobrazí nahoře.

  • Používat tuto funkci konzistentně v kontextech 4D i REST.

To znamená, že můžete snadno vytvářet funkce, jako je sémantické vyhledávání, seznamy doporučení nebo kontextové vyhledávání, kde se nejprve zobrazí nejpodobnější výsledky.

Fabrice Mainguené
- Product Owner -Fabrice Mainguené se připojil k týmu 4D Program v listopadu 2016. Jako Product Owner má na starosti psaní uživatelských příběhů, které následně převádí do funkčních specifikací. Jeho úkolem je také zajistit, aby dodaná implementace funkcí splňovala potřeby zákazníků.Po získání bakalářského titulu v oboru informatiky na CNAM nastoupil Fabrice do malé softwarové vydavatelské společnosti jako vývojář Windev. Poté pracoval pro různé společnosti v oblasti průmyslu a obchodu jako vývojář aplikací Windev a webových aplikací a také jako technický poradce pro nové funkce.