Elasticsearchには、ユースケースに最適な検索ソリューションを構築するための新機能が豊富に備わっています。最新の検索するAIエクスペリエンスを構築するための実践的なウェビナーで、実践の方法を学びましょう。無料のクラウドトライアルを始めるか、ローカルマシンでElasticを試すことができます。
前回のブログ投稿では、複雑なランキング パイプラインの作成を可能にする、ゼロから再設計されたリトリーバー フレームワークを紹介しました。また、Reciprocal Rank Fusion (RRF) リトリーバーが、異なるクエリの結果を結合してハイブリッド検索を可能にする方法についても調査しました。RRF は簡単に実装できますが、実際のスコアを無視して相対的なランクのみに焦点を当てるという、顕著な制限があります。これにより、微調整と最適化が困難になります。
リニアレトリーバーに会いましょう!
この投稿では、ハイブリッド検索をサポートするために最近追加されたlinearリトリーバーを紹介します。rrfとは異なり、 linearリトリーバーはドキュメントに一致したすべてのクエリの加重合計を計算します。このアプローチにより、結果セット内の各ドキュメントの相対的な重要度が維持され、各クエリが最終スコアに与える影響を正確に制御できるようになります。その結果、ハイブリッド検索を微調整するためのより直感的で柔軟な方法が提供されます。
最終スコアが次のように計算される線形リトリーバーを定義します。
それは次のように簡単です:
いかにシンプルで直感的であるかに気づきましたか?(そしてrrfと本当に似ています!)この構成により、相対的な順位のみに依存するrrfとは異なり、各クエリ タイプが最終的な順位にどの程度寄与するかを正確に制御できます。
注意点が 1 つあります: 使用される類似度メトリックに応じて、 knnスコアは厳密に制限される場合があります。たとえば、コサイン類似度または単位正規化ベクトルのドット積では、スコアは常に[0, 1]範囲内になります。対照的に、 bm25スコアは予測しにくく、明確に定義された境界がありません。
スコアのスケーリング:kNN vs BM25
ハイブリッド検索の課題の 1 つは、異なるリトリーバーが異なるスケールでスコアを生成することです。たとえば、次のシナリオを考えてみましょう。
クエリAのスコア:
| ドキュメント1 | ドキュメント2 | ドキュメント3 | ドキュメント4 | |
|---|---|---|---|---|
| わかる | 0.347 | 0.35 | 0.348 | 0.346 |
| bm25 | 100 | 1.5 | 1 | 0.5 |
クエリBのスコア:
| ドキュメント1 | ドキュメント2 | ドキュメント3 | ドキュメント4 | |
|---|---|---|---|---|
| わかる | 0.347 | 0.35 | 0.348 | 0.346 |
| bm25 | 0.63 | 0.01 | 0.3 | 0.4 |
上記の差異を見ると、 kNNスコアは 0 から 1 の範囲であるのに対し、 bm25スコアは大きく変動する可能性があります。この違いにより、結果を組み合わせるための静的な最適な重みを設定することが難しくなります。
正規化による救済:MinMax正規化
この問題を解決するために、次の数式を使用して、クエリごとに独立してスコアを[0, 1]範囲にスケーリングするオプションのminmaxノーマライザーを導入しました。
これにより、クエリの結果セット内の各ドキュメントの相対的な重要度が保持され、異なるリトリーバーからのスコアを簡単に組み合わせることができます。正規化すると、スコアは次のようになります。
クエリAのスコア:
| ドキュメント1 | ドキュメント2 | ドキュメント3 | ドキュメント4 | |
|---|---|---|---|---|
| わかる | 0.347 | 0.35 | 0.348 | 0.346 |
| bm25 | 1.00 | 0.01 | 0.005 | 0.000 |
クエリBのスコア:
| ドキュメント1 | ドキュメント2 | ドキュメント3 | ドキュメント4 | |
|---|---|---|---|---|
| わかる | 0.347 | 0.35 | 0.348 | 0.346 |
| bm25 | 1.00 | 0.000 | 0.465 | 0.645 |
すべてのスコアが[0, 1]範囲内に収まるようになり、絶対スコアではなく結果の (クエリに対する相対的な) 重要度を取得し、クエリ間で一貫性を維持できるようになったため、加重合計の最適化がはるかに簡単になりました。
リニアリトリーバーの例
ここで例を見て、上記がどのようになっているか、またlinearリトリーバーがrrfの欠点のいくつかをどのように解決しているかを見てみましょう。RRF は相対的なランクのみに依存し、実際のスコアの違いは考慮しません。たとえば、次のスコアがあるとします。
| ドキュメント1 | ドキュメント2 | ドキュメント3 | ドキュメント4 | |
|---|---|---|---|---|
| わかる | 0.347 | 0.35 | 0.348 | 0.346 |
| bm25 | 100 | 1.5 | 1 | 0.5 |
| rrfスコア | 0.03226 | 0.03252 | 0.03200 | 0.03125 |
rrf はドキュメントを次のようにランク付けします。
ただし、doc1 は他のものと比べてbm25スコアが大幅に高くなっていますが、 rrf相対的な順位のみを見ているため、これを捕捉できません。linearリトリーバーは正規化と組み合わせることで、スコアとその差異の両方を正しく考慮し、より意味のあるランキングを生成します。
| ドキュメント1 | ドキュメント2 | ドキュメント3 | ドキュメント4 | |
|---|---|---|---|---|
| わかる | 0.347 | 0.35 | 0.348 | 0.346 |
| bm25 | 1 | 0.01 | 0.005 | 0 |
上記のように、doc1 の優れたランキングとbm25のscoreが適切に考慮され、最終スコアに反映されています。さらに、すべてのスコアが[0, 1]範囲内にあるため、より直感的な方法でスコアを比較および組み合わせることができます (さらに、オフラインの最適化プロセスを構築することもできます)。
すべてをまとめると
正規化を伴うlinearリトリーバーを最大限に活用するには、検索リクエストは次のようになります。
このアプローチは、両方の長所を組み合わせたものです。つまり、 linearリトリーバーの柔軟性と直感的なスコアリングを維持しながら、MinMax 正規化による一貫したスコア スケーリングを保証します。
すべてのリトリーバーと同様に、 linearリトリーバーは、説明可能性、一致の強調表示、フィールドの折りたたみなどをサポートし、階層的なリトリーバー ツリーの任意のレベルに統合できます。
リニアレトリーバーを選ぶべきタイミングとそれが重要な理由
linearレトリーバー:
- ランクだけでなく実際のスコアを活用して相対的な重要性を維持します。
- さまざまなクエリからの重み付けされた寄与による微調整を可能にします。
- 正規化を使用して一貫性を強化し、ハイブリッド検索をより堅牢かつ予測可能にします。
まとめ
linearリトリーバーは、Elasticsearch Serverless、8.18 および 9.0 リリースですでに利用可能です。その他の例と構成パラメータについては、ドキュメントでも参照できます。ぜひお試しいただき、ハイブリッド検索エクスペリエンスがどのように改善されるかをご確認ください。皆様からのフィードバックをお待ちしております。楽しい検索を!
よくあるご質問
線形リトリーバーは、以前の相互ランク融合 (RRF) アプローチと比較して、ハイブリッド検索をどのように改善しますか?
線形リトリーバーは、ハイブリッド検索において RRF に比べていくつかの利点があります。RRF は相対的なランクのみに焦点を当て、実際のスコアを無視しますが、線形リトリーバーはクエリ全体の加重合計を計算し、各ドキュメントの相対的な重要性を維持します。このアプローチにより、さまざまなクエリ タイプが最終的なランキングにどのように影響するかをより正確に制御できます。さらに、線形リトリーバーは MinMax などの正規化手法をサポートしているため、異なるリトリーバーからのスコアを組み合わせて最終的な検索結果を最適化することが容易になります。この柔軟性と制御により、より直感的で細かく調整されたハイブリッド検索エクスペリエンスが実現します。




