概要
マルチモーダル検索機能は、OpenSearch においてテキスト検索とベクトル検索を組み合わせることで、OR 条件による検索よりも高い精度と、低いレイテンシおよび計算コストを実現します。このアプローチは、質問応答などのシナリオで有効性が実証されています。また、マルチモーダル検索のアーキテクチャは、画像ベクトル取得、数式取得、パーソナライズド取得にも適用可能です。
マルチモーダル検索を使用する理由
-
形態素解析、類義語マッチング、スペル修正の制限により、従来のテキスト検索では見逃されがちな関連ドキュメントを取得できます。
-
結果が極端に少なくなる、またはまったく返されないようなロングテールクエリに対する再現率を向上させます。
例:
ユーザーが「fast charge」と検索したとします。標準的なトークナイザーはこれを fast と charge の 2 つの term に分割します。
一方、「supports quick charging」というフレーズを含むドキュメントのトークンは、supports、quick、charging となる可能性があります。トークン一致に基づくテキスト検索では、このドキュメントは取得されません。しかし、ベクトル検索は正確な単語だけでなく意味的関係に基づいて動作するため、「fast charge」と「quick charging」の近接性を認識し、ドキュメントを正常に取得できます。
マルチモーダル検索の構成
1. 設定します EC 業界テンプレート アプリケーション。アプリケーションを作成したら、必要なベクターインデックスが設定されていることを確認します。次の手順の例では、Vector - General E-commerce Vector アナライザを使用します。
インデックスフィールド一覧で、ベクトルインデックスが存在することを確認します。このインデックスはベクトルインデックスとしてタグ付けされており、タイトルフィールドを含み、かつVector - General E-commerce Vectorアナライザを使用している必要があります。
2. クエリ分析ルールを作成します。 テキストベクトル化機能を追加し、ステップ 1 のベクトルインデックスと紐付けます。
左側のナビゲーションウィンドウで、クエリ分析をクリックします。クエリ分析設定画面で、変更対象のルールをクリックすると、ルール編集ダイアログボックスが開きます。機能選択セクションで、テキストベクトル化チェックボックスをオンにします。その後、右側でベクトルインデックスをvectorに設定し、OKをクリックします。
3. ソートポリシーを設定します。 デフォルトでは、EC 業界テンプレートにより、基本ソート用の sys_first_default と高度ソート用の sys_second_default の 2 つのソートポリシーが作成されます。
ソートポリシー > ポリシー管理ページで、これらのソートポリシーとそのランキング式を確認できます。
4. マルチモーダル検索ポリシーを作成します。 ポリシー名を設定し、検索パスを構成して、統合ランキングを設定します。
検索ポリシー構成ダイアログボックスで、検索ポリシー名をsys_strategyに設定します。マルチモーダル検索構成エリアで、ベクトル検索およびテキスト検索のチェックボックスをオンにし、両方の再現率を50%に設定します。マージソート構成エリアで、マージソートをsys_second_defaultに設定し、ソート対象ドキュメント数を500に設定してから、OKをクリックします。
5. コンソールでテストします:
クエリが「search test」、マルチモーダル検索ポリシーが sys_strategy、クエリ分析ルールが sys_default であると仮定します。コンソールの検索テストページに移動します。パラメーターセクションで、search_strategy、raw_query、およびqpフィールドを適切に設定します。注:この 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句をサポートしていません。 -
1 つのアプリケーションにつき、最大 10 件のマルチモーダル検索ポリシーを作成できます。
-
マルチモーダル検索構成では、テキスト検索およびベクトル検索の両方が必須であり、両者の再現率の合計は 100% である必要があります。
-
テキスト検索およびベクトル検索のマルチモーダル検索構成では、ソート構成から基本ソートポリシーおよび高度ソートポリシーを選択する必要があります。
-
統合ランキング構成では、マージソート用のポリシーを選択する必要があります。
高度ソートポリシーまたは「None」を選択できます。「None」がデフォルトです。ソート対象ドキュメント数は、1 以上 5,000 以下の整数である必要があります。 -
クエリ分析におけるテキストベクトル化機能の構成時、システムが自動生成しなかったベクトルインデックスは選択できません。
-
マルチモーダル検索機能でカスタムベクトルインデックスを使用する場合は、お問い合わせください。