マルチモーダル検索は、テキスト検索とベクトル検索を組み合わせることで、テキスト検索だけでは対応できないクエリ (長いクエリ、スペルミスのある用語、意味的に豊かな表現など) の再現率を向上させます。マルチモーダル検索は、OR 論理演算子を使用する場合と比べて、レイテンシとコンピューティング使用量を抑えつつ、より高い精度を実現します。これらの利点は、質疑応答検索シナリオで検証されています。
マルチモーダル検索の利用シーン
次のような場合にマルチモーダル検索を使用します。
クエリに自然言語や長いフレーズが含まれており、形態素解析では完全な意図を捉えきれない場合。
同義語拡張とスペル修正を適用しても、テキスト検索で関連性の高い結果が見つからない場合。
仕組み
マルチモーダル検索は、テキスト検索とベクトル検索を組み合わせ、設定可能なマージソートポリシーを使用してランク付けされた結果をマージします。
同じマルチモーダル取得アーキテクチャは、以下もサポートしています。
ベクトルベースの画像取得
式ベースの取得
パーソナライズされた取得
例
クエリ beefjerky は、beef および jerky の 2 つのトークンにトークン化されます。「Tone River natural beefjerky」という内容のドキュメントも、個別のトークンにトークン化されます:Tone、River、natural、beef、および jerky。純粋なテキスト検索では、このドキュメントを取得できません。なぜなら、テキスト検索は分析後に得られた用語に基づいてドキュメントを取得するためであり、この場合、複合語形式を一致させることができないからです。ベクトル検索では、セマンティクスの類似性に基づいてドキュメントを取得し、テキスト検索で見落とされた再現率を回復します。
前提条件
開始する前に、以下を確認してください。
EC 業界テンプレートの専用アプリケーションであること (共有アプリケーションではマルチモーダル検索は利用できません)。
アプリケーションにベクトルインデックスが設定されていること (以下の例では、Vector - General E-commerce Vector アナライザを使用します)。
マルチモーダル検索の設定
ステップ 1:アプリケーションの作成とベクトルインデックスの確認
EC 業界テンプレートのアプリケーションを作成します。アプリケーションが作成されたら、ベクトルインデックスが設定されていることを確認します。

ステップ 2:テキストのベクトル化を含むクエリ分析ルールの作成
クエリ分析ルールを作成します。 [テキストのベクトル化] を選択して単語ベクトル機能を有効にし、ステップ 1 で設定したベクトルインデックスを選択します。

ここでは、システムによって生成されたベクトルインデックスのみ選択できます。カスタムのベクトルインデックスを使用するには、チケットを送信してください。
ステップ 3:ソートポリシーの確認
デフォルトでは、アプリケーションには 2 つのソートポリシーが含まれています。粗排ソートポリシーの sys_first_default と精排ソートポリシーの sys_second_default です。これらは、次のステップでテキスト検索とベクトル検索を設定する際に参照されます。

ステップ 4:マルチモーダル検索ポリシーの作成
以下を設定して、マルチモーダル検索ポリシーを作成します。
ポリシー名を設定します。
[テキスト検索] 機能を設定します。ステップ 3 の粗排ソートポリシーと精排ソートポリシーを選択し、取得結果の割合を設定します。
[ベクトル検索] 機能を設定します。ステップ 3 の粗排ソートポリシーと精排ソートポリシーを選択し、取得結果の割合を設定します。テキスト検索とベクトル検索の割合の合計は 100% にする必要があります。
[マージソート] を設定します。オプションで精排ソートポリシーを選択し、マージされた結果を再ランキングします。 [ソートするドキュメント数] を 1 から 5,000 までの値に設定します。

ステップ 5:検索のテスト
OpenSearch コンソールでのテスト
以下のパラメーターを使用して検索を実行します。3 つのパラメーターはすべて必須です。デフォルトのクエリ分析ルールを使用する場合、qp パラメーターは省略できます。

query=default:'Search test'&search_strategy=sys_strategy&raw_query=Search test&qp=sys_default| パラメーター | 説明 | 値の例 |
|---|---|---|
query | 検索クエリ句 | default:'Search test' |
search_strategy | マルチモーダル検索ポリシー名 | sys_strategy |
raw_query | ベクトル検索に渡される元のクエリ文字列 | Search test |
qp | クエリ分析ルール名 | sys_default |
OpenSearch SDK for Java でのテスト
// ページングパラメーターと応答フォーマットを指定するための Config オブジェクトを作成します。
Config config = new Config(Lists.<String>newArrayList(appName));
config.setStart(0);
config.setHits(10);
// 応答フォーマットを JSON に設定します。
config.setSearchFormat(SearchFormat.FULLJSON);
// 検索リクエストを構築します。
SearchParams searchParams = new SearchParams(config);
// カスタムパラメーターを設定します。
HashMap<String, String> paraMap = new HashMap<String, String>();
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);制限事項
| 制約 | 詳細 |
|---|---|
| アプリケーションタイプ | 専用アプリケーションのみがマルチモーダル検索をサポートします |
| アプリケーションあたりの検索ポリシー数 | 最大 10 個のマルチモーダル検索ポリシー |
| サポートされていない句 | aggregate 句と distinct 句はサポートされていません |
| 検索割合 | テキスト検索とベクトル検索の割合の合計は 100% |
| ソートするドキュメント数 | 必須。有効値の範囲は 1~5,000 |
| ベクトルインデックスの選択 | 単語ベクトルにはシステムが生成したベクトルインデックスのみ使用できます。カスタムのベクトルインデックスを使用するには、チケットを送信してください |