はじめに
OpenSearch の マルチモーダル検索 機能は、テキスト検索とベクトル検索を組み合わせたものです。OR ロジックのみを使用する場合よりも高い精度を、より低いレイテンシーと少ない計算オーバーヘッドで実現します。このアプローチの有効性は、教育分野の Q&A 検索シナリオで実証されています。マルチモーダル検索アーキテクチャは、ベクトルベースの画像取得、数式取得、パーソナライズされた取得などの他のシナリオにも使用できます。
テキスト検索とマルチモーダル検索の比較
なぜ教育分野の写真ベースの Q&A 検索にマルチモーダル検索を使用するのか? 教育分野の写真ベースの Q&A 検索は、標準的な Web 検索や e コマースのテキスト検索とは、以下の点で大きく異なります。
-
クエリが長い:標準的な検索クエリの term 数は 30 に制限されることが多いですが、Q&A 検索のクエリには最大 100 の term が含まれる場合があります。
-
クエリに OCR エラーが含まれる可能性がある:クエリは、光学文字認識 (OCR) を使用して画像から抽出されたテキストから生成されることがよくあります。主要な term の認識エラーは、結果の取得とランキングに深刻な影響を与える可能性があります。
テキストのみの検索ソリューション
1. OR ロジッククエリ:
-
結果なしクエリを減らすために、教育分野の Q&A システムでは一般的に Elasticsearch のデフォルトの OR ロジックが使用されます。このアプローチは、高い検索レイテンシーと重い計算負荷につながります。
-
OpenSearch も OR ロジックをサポートしており、並列処理を使用して高いレイテンシーを削減できますが、全体的な計算負荷は依然として高いままです。
2. AND ロジッククエリ:
-
OR ロジックと比較して、汎用のクエリ分析モジュールでは、結果なしクエリの割合が高くなり、全体的な精度が低くなります。
-
教育セクター向けに最適化およびカスタマイズされたクエリ分析モジュールは、パフォーマンスを大幅に向上させ、OR ロジックに匹敵する精度を実現します。
テキストとベクトルの取得
目標:目標は、テキストのベクトル化と AND ロジッククエリを組み合わせて使用することで、再現率を拡大することです。このアプローチは、低い検索レイテンシーと計算オーバーヘッドを維持しながら、OR ロジックよりも高い精度を実現します。ベクトル取得では、教育分野の Q&A 検索向けに以下の特別な最適化が施された BERT モデルを使用します。
-
BERT モデルは、アリババ DAMO アカデミーによって開発され、教育業界向けにカスタマイズされた StructBERT を使用します。
-
ベクトル検索エンジンは、アリババ DAMO アカデミーによって開発された Proxima ベクトル検索エンジンです。オープンソースの代替品よりも大幅に高い精度と速度を提供します。
-
トレーニングデータは、顧客の検索ログから継続的に蓄積できるため、継続的なパフォーマンスの向上が見込めます。
結果:
-
再現率は OR ロジックに匹敵します。
-
精度は OR ロジックよりも 3% から 5% 高くなります。
-
取得されるドキュメントの総数は 40 分の 1 に削減され、検索レイテンシーは 10 分の 1 以下に短縮されます。
マルチモーダル検索の設定
1. 設定:教育業界向け拡張版を設定します。設定が完了したら、ベクトルインデックスが設定されていることを確認します。この例では、「Vector - K12 Education Vector」を使用します。[インデックス構造] ページでは、[インデックスフィールド] リストに 3 つのインデックスが表示されます:default (デフォルトのテキストインデックス。title と content フィールドを含み、「Industry - Education Q&A」アナライザを使用します。例:query=default:"cloud search")、vector (ベクトルインデックス。title フィールドを含み、Vector - K12 Education Vector アナライザを使用します。例:query=vector:"cloud search")、および id (id フィールドを含み、「Keyword」アナライザを使用します。例:query=id:"cloud search")。vector インデックスとそれに対応する Vector - K12 Education Vector アナライザが、マルチモーダル検索を実装するための重要な設定です。 2. クエリ分析ルールの作成:テキストのベクトル化機能を追加し、ステップ 1 で指定したベクトルインデックスを設定します。コンソールの左側のナビゲーションウィンドウで、[検索アルゴリズムセンター] > [クエリ分析] を選択します。目的のクエリ分析ルール (sys_default など) を見つけ、[編集] をクリックします。[ルールの編集] ダイアログボックスで、[業界タイプ] を [教育] に、[選択されたカテゴリ] を [Q&A] に、[クエリ書き換えポリシー] を [AND] に設定します。[特徴] セクションで、[テキストのベクトル化] チェックボックスをオンにします。[ベクトルインデックス] ドロップダウンリストから [vector] を選択し、[OK] をクリックします。 3. ソートポリシーの設定:デフォルトでは、教育業界向け拡張版は、テキストインデックス用の sys_text_rank とベクトルインデックス用の sys_vector_rank という 2 つの Cava スクリプトベースの高度ソートポリシーを作成します。コンソールの左側のナビゲーションウィンドウで、[検索アルゴリズムセンター] > [ソート設定] を選択して、[ポリシー管理] タブに移動します。ポリシーリストには、システムが構築した sys_text_rank と sys_vector_rank の高度ソートポリシーが含まれています。これらのステータスは [公開済み] です。
4. マルチモーダル検索ポリシーの作成:このプロシージャでは、ポリシー名の指定、マルチモーダル検索設定 (ベクトルインデックスとテキストインデックス) の構成、およびマージソート設定 (ソートロジックとソートするドキュメント数) の構成を行います。[対象アプリケーション] を選択し、[クエリポリシー名] (例:test_strategy_1) を入力します。[マルチモーダル検索設定] セクションで、[ベクトル検索] と [テキスト検索] の両方のチェックボックスをオンにします。ベクトル検索では、[高度ソート] を sys_vector_rank に、[結果の割合] を 50% に設定します。テキスト検索では、[高度ソート] を sys_text_rank に、結果の割合を 50% に設定します。[マージソート設定] セクションで、[マージソート] を sys_text_rank に、[ソートするドキュメント数] を 5000 に設定します。その後、[OK] をクリックします。
5. コンソールでのテスト:
クエリが「search test」、マルチモーダル検索ポリシーが「sys_strategy」、クエリ分析ルールが「sys_default」であると仮定します。注:3 つのパラメーターはすべて必須です。対応するクエリ分析ルールがデフォルトの場合は、qp パラメーターを省略できます。クエリリクエストのフォーマットは次のとおりです。
query=default:'search test'&search_strategy=sys_strategy&raw_query=search test&qp=sys_default
SDK パラメーター設定:(以下は Java での例です。)
...
// 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% にする必要があります。
-
マルチモーダル検索設定では、[テキスト検索] と [ベクトル検索] の両方に対して、[ソート設定] で利用可能なものから大まかなソートポリシーと高度ソートポリシーを選択します。
-
マージソート設定では、[マージソート] は必須パラメーターです。高度ソートポリシーを選択する必要があります。デフォルトで選択されている「None」を選択することもできます。[ソートするドキュメント数] は必須パラメーターです。0 より大きく、5,000 以下の値を入力する必要があります。
-
クエリ分析のテキストのベクトル化機能では、システムによって自動的に生成されたベクトルインデックスのみを使用できます。
-
カスタムベクトルインデックスでマルチモーダル検索機能を使用するには、お問い合わせください。