概要
OpenSearch のマルチモーダル検索機能は、テキスト検索とベクトル検索を組み合わせたものです。マルチモーダル検索は、OR 論理演算子を使用する検索よりも検索レイテンシが低く、コンピューティングリソースの消費が少なく、精度が高くなります。これらのマルチモーダル検索の利点は、質問応答検索シナリオで検証されています。マルチモーダル検索機能で使用されるマルチモーダル検索アーキテクチャは、ベクトルベースの画像検索、表現ベースの検索、パーソナライズされた検索などのシナリオでも使用できます。
マルチモーダル検索が必要な理由
マルチモーダル検索機能は、同義語設定やスペル修正などのクエリ分析機能を設定した後に取得されないドキュメントを取得します。
マルチモーダル検索機能は、長い検索クエリに対してより多くのドキュメントを取得します。
例:
分析後、検索エントリ「beefjerky」は、beef と jerky の 2 つの用語に分割されます。
「Tone River natural beefjerky」を含むドキュメントを取得する場合、テキスト検索で検索エントリ「beefjerky」に基づいて取得することはできません。これは、ドキュメントの内容が分析後に Tone、River、natural、beef、jerky という用語に分割されるためです。テキスト検索は、分析後に取得された用語に基づいてドキュメントを取得します。この場合、ベクトル検索を使用して、セマンティクスに基づいてドキュメントを取得できます。
E コマース向け業界別拡張版のアプリケーションにマルチモーダル検索機能を設定する
1. アプリケーションの作成アプリケーションの作成後、ベクトルインデックスが設定されているかどうかを確認します。この例では、ベクトルインデックスはベクトル - 一般的な E コマースベクトルアナライザーを使用しています。E コマース向け業界別拡張版。
2. クエリ分析ルールを作成します。テキストベクトル化を選択して単語埋め込み機能を有効にし、手順 1 で設定したベクトルインデックスを選択します。
3. ソートポリシーを設定します。デフォルトでは、アプリケーションには、概算ソートポリシー sys_first_default と精密ソートポリシー sys_second_default の 2 つのソートポリシーが作成されます。
4. 次の操作を実行して、マルチモーダル検索ポリシーを作成します。ポリシー名を設定し、ベクトル検索とテキスト検索の機能を設定してから、マージソート機能を設定します。マージソート機能を設定するには、マージソートのソートポリシーを選択し、ソートするドキュメントの数を指定します。
5. OpenSearch コンソールで検索テストを実行します。
この例では、検索クエリは「Search test」、マルチモーダル検索ポリシーは sys_strategy、クエリ分析ルールは sys_default です。注: 上記の図に示されている 3 つのパラメーターはすべて指定する必要があります。デフォルトのクエリ分析ルールを使用する場合は、qp パラメーターを無視できます。この例の検索リクエスト:
query=default:'Search test'&search_strategy=sys_strategy&raw_query=Search test&qp=sys_default
OpenSearch SDK を使用して検索テストを実行します。この例では、Java 用 OpenSearch SDK を使用します。
...
// config 句でページング関連のパラメーターまたは返される結果のデータ形式を指定するために使用される Config オブジェクトを作成します。
Config config = new Config(Lists.<String>newArrayList(appName));
config.setStart(0);
config.setHits(10);
// 返される結果のデータ形式を JSON に設定します。
config.setSearchFormat(SearchFormat.FULLJSON);
// SearchParams オブジェクトを作成します。
SearchParams searchParams = new SearchParams(config);
// 検索リクエストの入力パラメーターを指定します。
HashMap<String,String> paraMap=new HashMap<String,String>();
// raw_query パラメーターを指定します。
paraMap.put("raw_query","Search test");
// マルチモーダル検索ポリシーを指定します。
paraMap.put("search_strategy","sys_strategy");
searchParams.setCustomParam(paraMap);
// クエリ分析ルールを指定します。
List<String> qpName = new ArrayList<String>();
qpName.add("sys_default"); // クエリ分析ルールの名前。
searchParams.setQueryProcessorNames(qpName);
...
使用上の注意
排他的アプリケーションのみがマルチモーダル検索機能を使用できます。
マルチモーダル検索機能は、aggregate 句または distinct 句をサポートしていません。
アプリケーションごとに最大10個のマルチモーダル検索ポリシーを作成できます。
マルチモーダル検索では、テキスト検索機能とベクトル検索機能の両方を有効にする必要があります。テキスト検索機能とベクトル検索機能の検索結果の比率を指定する場合、比率の合計は 100% である必要があります。
テキスト検索機能とベクトル検索機能を設定する場合は、手順 3 で設定した概算ソートポリシーと精密ソートポリシーを選択します。
マージソート機能を設定する場合は、マージソートの精密ソートポリシーを選択できます。デフォルトでは、このソートポリシーは指定されていません。ソートドキュメントの数パラメーターは必須です。1 から5000 の範囲の値を指定する必要があります。
システムによって生成されていないベクトルインデックスは、単語埋め込み機能を設定するときに選択できません。
カスタムベクトルインデックスをマルチモーダル検索に使用するには、チケットを送信してください。