概要
OpenSearch のマルチモーダル検索機能は、テキスト検索とベクトル検索を組み合わせたものです。マルチモーダル検索は、OR 論理演算子を使用する検索よりも検索レイテンシが低く、コンピューティングリソースの消費量が少なく、精度が高くなります。これらのマルチモーダル検索の利点は、質問応答検索シナリオで検証されています。マルチモーダル検索機能で使用されるマルチモーダル検索アーキテクチャは、ベクトルベースの画像検索、表現ベースの検索、パーソナライズされた検索などのシナリオでも使用できます。
質問応答検索シナリオにおけるテキスト検索とマルチモーダル検索機能の比較
質問応答検索シナリオでマルチモーダル検索が必要な理由 Web サイトや E コマースプラットフォームでのテキスト検索と比較して、写真を撮影して質問の回答を検索する教育シナリオでの検索には、次の違いがあります。
検索クエリが長い: 通常の検索の検索クエリは最大 30 語ですが、質問応答検索の検索クエリは最大 100 語になる場合があります。
検索クエリは、光学式文字認識 (OCR) を使用して写真から認識されます。重要な用語が誤って認識された場合、検索結果と並べ替え結果は不正確になります。
テキスト検索
1. OR 論理演算子を使用する
ゼロ結果率を下げるために、通常のシステムでは、質問応答検索で Elasticsearch のデフォルトの OR ロジックを使用します。
OpenSearch も OR ロジックをサポートしています。さらに、OpenSearch は、OR 論理演算子を使用する検索を並行処理することで、検索レイテンシを短縮します。ただし、最適化後もコンピューティングリソースの消費量は依然として高くなっています。
2. AND 論理演算子を使用する
AND 論理演算子を使用し、共通のクエリ分析機能によって処理される検索は、ゼロ結果率が高くなります。さらに、このような検索は、OR 論理演算子を使用する検索よりも検索精度が低くなります。
OpenSearch は、教育業界向けにクエリ分析機能を最適化しています。最適化されたクエリ分析機能によって処理される検索の精度は、OR 論理演算子を使用する検索の精度とほぼ同じです。
ベクトル検索
目標: 最初の目標は、単語埋め込み後に生成されたベクトルに基づいて、取得されるドキュメントの数を増やすことです。2 番目の目標は、AND ロジックを使用して、OR ロジックよりも低い検索レイテンシ、低いコンピューティングリソース消費量、および高い検索精度を実現することです。上記の目標を達成するために、OpenSearch はベクトル検索に BERT モデルを使用します。さらに、OpenSearch は、教育業界の質問応答検索シナリオ向けにモデルを最適化しています。次の最適化が実行されます。
Alibaba DAMO Academy によって開発された StructBERT モデルが BERT モデルとして使用されます。このモデルは、教育業界向けにカスタマイズされています。
Alibaba DAMO Academy によって開発された Proxima エンジンがベクトル検索エンジンとして使用されます。Proxima の精度と速度は、オープンソースシステムよりもはるかに優れています。
検索ログに基づいてトレーニングデータを蓄積でき、検索パフォーマンスが継続的に向上します。
最適化結果:
再現率は OR ロジックの再現率に達します。
精度は OR ロジックよりも 3% から 5% 高くなります。
取得されるドキュメントの総数は 40 倍削減され、検索レイテンシは 10 倍以上短縮されます。
教育向け業界特化強化版のアプリケーションのマルチモーダル検索機能を構成する
1. アプリケーションの作成 アプリケーションの作成後、ベクトルインデックスが構成されているかどうかを確認します。この例では、ベクトルインデックスはベクトル - K12 教育ベクトルアナライザーを使用します。教育向け業界別拡張版。2. クエリ分析ルールを作成します。 テキストのベクトル化を選択して単語埋め込み機能を有効にし、手順 1 で構成したベクトルインデックスを選択します。3. 並べ替えポリシーを構成します。 デフォルトでは、cava スクリプトを使用する次の 2 つの詳細な並べ替えポリシーが、教育向け業界特化強化版のアプリケーションに対して作成されます。テキスト検索用の sys_text_rank とベクトル検索用の sys_vector_rank です。
4. 次の操作を実行して、マルチモーダル検索ポリシーを作成します。 ポリシー名を設定し、ベクトル検索とテキスト検索機能を構成してから、マージソート機能を構成します。マージソート機能を構成するには、マージソートの並べ替えポリシーを選択し、並べ替えるドキュメントの数を指定します。
5. OpenSearch コンソールで検索テストを実行します。
この例では、検索クエリは「検索テスト」、マルチモーダル検索ポリシーは 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です。
単語埋め込み機能を構成するときに、システムによって生成されていないベクトルインデックスを選択することはできません。
マルチモーダル検索にカスタムベクトルインデックスを使用する場合は、Alibaba Cloud にお問い合わせください。