すべてのプロダクト
Search
ドキュメントセンター

OpenSearch:ソートプラグイン開発のための Cava

最終更新日:Dec 28, 2024

Cava は、OpenSearch エンジンチームが低レベル仮想マシン (LLVM) プロジェクトに基づいて開発したプログラミング言語です。Cava は Java に似た構文を使用し、C++ と同等の効率的なパフォーマンスを実現できます。Cava はオブジェクト指向プログラミング言語です。Just-In-Time (JIT) コンパイルとさまざまなセキュリティチェックをサポートし、より堅牢なプログラムを実現します。Cava と OpenSearch が提供する Cava ライブラリを使用して、OpenSearch で専用のソートプラグインを設計できます。OpenSearch がサポートする式と比較して、Cava ベースのソートプラグインには次の利点があります。

  • より多様なカスタム設計: Cava では、より多様な構文を使用してソートプラグインをカスタマイズできます。たとえば、ビジネス要件に基づいて、for ループを使用したり、関数やクラスを定義したりできます。

  • メンテナンスが容易: Cava コードは式よりも理解しやすいです。したがって、Cava を使用して開発されたソートプラグインはメンテナンスが容易です。

  • 学習が容易: Cava は Java に似た構文を使用します。Java に精通していれば、Cava を使用して簡単にソートプラグインを開発できます。これにより、学習コストが削減されます。

重要

  • Cava ベースのプラグインは、排他的なアプリケーションでのみ使用できます。

  • Cava ベースのプラグインは、精密ソートに対してのみ有効です。

  • Cava の構文の詳細については、『開発者ガイド』の Cava ベースのソートプラグインに関するトピックを参照してください。

手順

  1. ポリシーの作成: OpenSearch コンソールにログインします。左側のナビゲーションペインで、[検索アルゴリズムセンター] > [ソート設定] を選択します。[ポリシー管理] ページで、[作成] をクリックします。[ポリシーの作成] ウィザードの [基本情報] ステップで、[スコープ] ドロップダウンリストから [精密ソート] を選択し、[タイプ] ドロップダウンリストから [Cava スクリプト] を選択します。

image

  1. スクリプトファイルの追加: [ソート設定] ステップで、スクリプトファイルを追加し、コンソールで Cava スクリプトを編集できます。または、ローカルスクリプトファイルを JSON 形式でアップロードすることもできます。

image

  1. スクリプトのコンパイルと公開: スクリプトファイルを編集した後、[コンパイル] をクリックしてすべてのスクリプトファイルをコンパイルします。コンパイルステータスは [コンパイル] ボタンの下に表示されます。コンパイルが完了したら、[公開] をクリックしてスクリプトファイルを公開します。公開済みのスクリプトファイルは変更できません。

image

  1. ソート効果をテストする: 作成したポリシーの検索テストページで、second_rank_name パラメーターをポリシーの名前に設定し、second_rank_type パラメーターを cava_script に設定します。

image

次のサンプルコードは、Java 用 SDK を使用する場合の Cava ベースのソートポリシーの使用方法の例を示しています。

...
// SearchParams オブジェクトを作成します。
SearchParams searchParams = new SearchParams(config);
...

// Rank オブジェクトを作成します。
Rank rank=new Rank();
// 呼び出す Cava スクリプトを指定します。
rank.setSecondRankName("Cava スクリプト名");
// ソートタイプを Cava スクリプトに設定します。
rank.setSecondRankType(RankType.CAVA_SCRIPT);
// SearchParams オブジェクトにソートポリシーを追加します。
searchParams.setRank(rank);

共通パラメーターの取得

  1. ベクトルインデックスを使用してスコアを取得します。

import com.aliyun.opensearch.cava.features.similarity.ProximaScore;

ProximaScore _proximaScoreVector;
_proximaScoreVector=ProximaScore.create (params, "{{indexes.vector_index}}"); // ベクトルインデックスの名前。
float proximaScoreVector = _proximaScoreVector.evaluate(params);

使用上の注意

  • Cava ベースのプラグインは、排他的なアプリケーションでのみ使用できます。

  • 1 つの Cava スクリプトファイルのサイズは 10 KB を超えることはできません。1 つの Cava ベースのソートポリシーには最大 5 つのスクリプトファイルを追加でき、1 つのアプリケーションには最大 50 の Cava ベースのソートポリシーを作成できます。

  • 公開済みの Cava スクリプトは変更できません。公開済みの Cava スクリプトを変更する場合は、[ポリシー管理] ページで Cava スクリプトが追加されているポリシーを複製して別のポリシーを作成できます。

  • SDK で設定された Cava スクリプトは公開する必要があります。未公開の Cava スクリプトは、検索テストでのみ使用できます。