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

OpenSearch:教育業界テンプレート:マルチモーダル検索

最終更新日:Aug 22, 2026

概要

OpenSearch の マルチモーダル検索機能は、テキスト検索とベクトル検索を組み合わせたものです。OR ロジックのみを使用する場合よりも高い精度を実現し、レイテンシーと計算オーバーヘッドを低減します。このアプローチの有効性は、教育分野の Q&A 検索シナリオで証明されています。マルチモーダル検索アーキテクチャは、ベクトルベースの画像リトリーバル、数式リトリーバル、パーソナライズされたリトリーバルなど、他のシナリオにも使用できます。image

テキスト検索とマルチモーダル検索の比較

なぜ教育分野の写真ベースの Q&A 検索にマルチモーダル検索を使用するのですか? 教育分野の写真ベースの Q&A 検索は、以下の理由から、標準的な Web 検索や e コマースのテキスト検索とは大きく異なります。

  • クエリが長い:標準的な検索クエリは多くの場合 30 語という制限がありますが、Q&A 検索のクエリには最大 100 語が含まれることがあります。

  • クエリに OCR エラーが含まれる可能性がある:クエリは、光学文字認識 (OCR) を使用して画像から抽出されたテキストから生成されることがよくあります。主要な用語の認識エラーは、結果のリトリーバルとランキングに深刻な影響を与える可能性があります。

テキストのみの検索ソリューション

1. OR ロジッククエリ:

  • 結果なしのクエリを減らすために、教育分野の Q&A システムでは一般的に Elasticsearch のデフォルトの OR ロジックを使用します。このアプローチは、高い検索レイテンシーと高い計算負荷につながります。

  • OpenSearch も OR ロジックをサポートしており、並列処理を使用して高いレイテンシーを低減できますが、全体的な計算負荷は依然として高いままです。

2. AND ロジッククエリ:

  • OR ロジックと比較して、汎用のクエリ分析モジュールでは、結果なしのクエリの割合が高くなり、全体的な精度が低くなります。

  • 教育分野向けに最適化およびカスタマイズされたクエリ分析モジュールは、パフォーマンスを大幅に向上させ、OR ロジックに匹敵する精度を実現します。

テキストとベクトルのリトリーバル

目的:目的は、テキストベクトル化と AND ロジッククエリを組み合わせて使用することで再現率を向上させることです。このアプローチは、OR ロジックよりも高い精度を達成しつつ、低い検索レイテンシーと計算オーバーヘッドを維持します。ベクトルリトリーバルでは、教育分野の Q&A 検索向けに以下の特別な最適化が施された BERT モデルを使用します。

  • BERT モデルは、アリババ DAMO アカデミーが開発し、教育業界向けにカスタマイズされた StructBERT を使用します。

  • ベクトル検索エンジンは、アリババ DAMO アカデミーが開発した Proxima ベクトル検索エンジンです。オープンソースの代替品よりも大幅に高い精度と速度を提供します。

  • 顧客の検索ログからトレーニングデータを継続的に蓄積できるため、継続的なパフォーマンス向上が見込めます。

結果:

  1. 再現率は OR ロジックと同等です。

  2. 精度は OR ロジックよりも 3% から 5% 高くなります。

  3. リトリーブされるドキュメントの総数は 40 分の 1 に減少し、検索レイテンシーは 10 分の 1 以下に短縮されます。

マルチモーダル検索の設定

  1. 設定:教育業界テンプレートを設定します。設定が完了したら、ベクトルインデックスが設定されていることを確認します。この例では、[Vector - K12 Education Vector] を使用します。 [インデックス構造] ページの [インデックスフィールド] リストには、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') の 3 つのインデックスが表示されます。vector インデックスとそれに対応する [Vector - K12 Education Vector] アナライザーが、マルチモーダル検索を実装するための重要な設定です。

  2. クエリ分析ルールの作成:テキストベクトル化機能を追加し、ステップ 1 で指定したベクトルインデックスを設定します。コンソールの左側メニューで、[検索アルゴリズムセンター] > [クエリ分析] を選択します。目的のクエリ分析ルール (たとえば sys_default) を見つけ、[編集] をクリックします。[ルールの編集] ダイアログボックスで、[業種] を [教育] に、[選択したカテゴリ] を [Q&A] に、[クエリ書き換えポリシー] を [AND] に設定します。[機能] セクションで、[テキストベクトル化] チェックボックスをオンにします。[ベクトルインデックス] ドロップダウンリストから [vector] を選択し、[OK] をクリックします。

  3. ソートポリシーの設定:デフォルトでは、教育業界テンプレートは 2 つの Cava スクリプトベースのファインソートポリシーを作成します。テキストインデックス用の sys_text_rank と、ベクトルインデックス用の sys_vector_rank です。コンソールの左側メニューで、[検索アルゴリズムセンター] > [ソート設定] を選択して、[ポリシー管理] タブに移動します。ポリシーリストには、システムが構築した 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);
    ​
    ...

制限事項

  • マルチモーダル検索機能は、専用アプリケーションでのみ利用できます。

  • マルチモーダル検索機能は、集計句または distinct 句をサポートしていません。

  • 各アプリケーションに対して作成できるマルチモーダル検索ポリシーは最大 10 個です。

  • マルチモーダル検索設定では、[テキスト検索] と [ベクトル検索] の両方を有効にする必要があり、それらの結果の割合の合計を 100% にする必要があります。

  • マルチモーダル検索設定では、[テキスト検索] と [ベクトル検索] の両方について、ソート設定で利用可能なファインソートポリシーを選択する必要があります。

  • マージソート設定では、[マージソート] は必須パラメーターであり、利用可能なファインソートポリシーまたは [なし] を選択する必要があります。デフォルト値は [なし] です。[ソートするドキュメント数] は必須パラメーターです。値は 0 より大きく、5,000 以下である必要があります。

  • クエリ分析のテキストベクトル化機能では、システムによって自動的に生成されたベクトルインデックスのみを使用できます。

  • カスタムベクトルインデックスでマルチモーダル検索機能を使用するには、お問い合わせください。