4D AI:ベクトル類似度によるクエリ結果のソート

Deeplからの自動翻訳

セマンティック検索:ベクトル類似性によるクエリの投稿では、ベクトル類似性を使用したエンティティのクエリ方法を紹介しました。これは、正確な値ではなく意味に基づいて最も関連性の高いレコードを見つける強力な方法です。

4D 21 R2では、4D.Vectorフィールドを用いた検索結果の並べ替え機能が新たに追加されました。 類似性によるエンティティのフィルタリングに加えquery()関数を使用してクエリ結果をソートすることで 最も関連性が高く意味的に近いエンティティを最上位に表示できます インテリジェントな検索体験、レコメンデーションエンジン、AI駆動型アシスタントのいずれを構築する場合でも、この新機能により結果が関連性順に並べ替えられ、より正確でユーザーフレンドリーな結果を提供します。

類似度による結果の順序付け

4D開発者は、クエリ式内で直接ベクトル類似性に基づく結果のソートが可能になりました。この機能強化は4DコードとRESTリクエストの両方に適用され、意味的に近い順にエンティティを取得する操作を簡素化します。

ベクトルフィールドに対してクエリを実行し、その同じフィールドが順序付け句(ORDER BY句)に指定されている場合、4Dは自動的に結果を類似度(または距離)計算に基づいて並べ替えます。


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)

意味的ソートと従来型ソートの併用

4Dのアプローチの主な利点は、ベクトルベースの意味的順序付けを、同じクエリ内で従来のORDAフィルターと組み合わせられることです。

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)

この例では、入力テキストに意味的に近い職務内容を持ち、かつ給与が100,000を超える従業員をクエリで取得し、ベクトル類似度と給与に基づいて順序付けします。

REST API の使用

この機能はREST APIからも利用可能です。簡単なクエリパラメータでベクトル類似度による結果のソートが可能です:

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"

まとめ

この機能強化により、AIを活用したクエリがさらに実用的かつ直感的に利用可能になりました。以下のことが可能になります:

  • ベクトル類似度でデータをクエリする

  • 類似度で結果を並べ替え、最も関連性の高いエンティティを上位に表示

  • 4DとRESTの両コンテキストで一貫して機能を利用可能。

これにより、意味検索おすすめリスト文脈に応じた検索など最も類似した結果を最初に表示する機能を容易に構築できます。

Fabrice Mainguené
- Product Owner -Fabrice Mainguenéは、2016年11月に4D Programチームに参加しました。プロダクトオーナーとして、彼はユーザーストーリーを書き、それを機能仕様に変換する役割を担っています。CNAMでコンピュータサイエンスの学士号を取得した後、FabriceはWindev開発者として小さなソフトウェア出版社に入社しました。その後、彼は産業および貿易分野のさまざまな企業で、Windev および Web 開発者として、また新機能の技術アドバイザーとして働きました。