Elasticsearchでの画像の類似検索の概要

enterprise-search-search-bar-pattern-light-1680x980.png

スクリーンショットで有名人の外見を真似できることを想像してください。ユーザーは画像を使用して、オンラインで販売されている、スタイルに合った服飾をすばやく検索できます。しかし、これは今日の検索エクスペリエンスではありません。

顧客は必要な商品を見つけるのに苦労しています。目的のものが見つからなければ、去ってしまいます。中には、探している商品の名前(キーワード)を忘れてしまい、外観や実際の画像だけを覚えている人もいます。Elasticの統合機能であるベクトル検索では、類似画像検索を実装することができます。これによって、より直感的な検索エクスペリエンスを構築できます。そして、顧客はもっと簡単に、画像だけで、探している商品を検索できるようになります。

Elasticでは、機械学習の専門家でなくても、この機能の実装を始められます。ベクトル検索は、Elasticの拡張性の高い、非常に高い性能のプラットフォームにすでに統合されているのです。アプリケーションフレームワークへの統合により、インタラクティブなアプリケーションの立ち上げが容易になります。

この複数回にわたるブログシリーズでは、独自の画像を使用して、Elasticでプロトタイプ類似検索アプリケーションを開発する方法について説明します。このプロトタイプアプリケーションのフロントエンドはFlaskを使用して実装されます。これは独自のカスタムアプリケーションの青写真として機能します。

この概要ブログでは、Elasticで画像データにベクトル検索を適用するために必要なアーキテクチャを深く理解するために、その背景について説明します。実際には画像よりもテキストでのセマンティック検索に関心がある場合は、自然言語処理(NLP)の複数回にわたるブログシリーズを見直して、テキスト埋め込みとベクトル検索、固有表現認識(NER)、感情分析、Elasticでこのような手法を応用する方法について学習してください。まず、少し離れて、類似検索とセマンティック検索の両方がベクトル検索によって実現されていることを説明します。

セマンティック検索と類似検索はいずれもベクトル検索によって実現されている

ベクトル検索機械学習(ML)を活用して、非構造化データの意味とコンテキストを取り込みます。ベクトル検索は近似近傍(ANN)アルゴリズムを使用して、類似データを検索します。従来のテキスト検索(ElasticではBM25スコアリングに基づく)と比較すると、ベクトル検索はより関連性の高い結果を生成し、(極端な検索エンジンの最適化を行わなくても)実行速度が高速化されています。

このアプローチはテキストデータだけではなく、画像や、汎用埋め込みモデルが利用できる他の種類の非構造化データでも動作します。テキストデータは、一般的に、セマンティック検索と呼ばれます。他方、類似検索は画像と音声のコンテキストで頻繁に使用されます。

どのようにして画像のベクトル埋め込みを生成するのですか?

ベクトル埋め込みは、高次元(密度)のベクトルに格納されたデータと関連するコンテキストを数値で表現したものです。一般的に、埋め込みを生成するモデルは、関連性と正確性の高い結果を生成するために、数百万件の例を使用して学習されています。

テキストデータの場合は、BERTのような変換器が一般的に使用され、さまざまな種類のテキストに対応する埋め込みが生成されます。このような変換器はHugging Faceなどの公開リポジトリで提供されています。どのような種類の画像にも十分に対応できる埋め込みモデルは、現在も継続中の研究の対象となっています。CLIPモデルはOpenAIによって配布され、最初に使うのに良いモデルです。Elasticのチームも画像類似アプリをプロトタイプする目的でこのモデルを使用しています。特殊なユースケースや上級ユーザーの場合は、目的のパフォーマンスを得るために、埋め込みモデルを学習させなければならない場合があります。次に、効率的に検索を実行する機能が必要です。Elasticは広く採用されているHNSWベースの近似最近傍検索をサポートしています。

類似検索が革新的なアプリケーションを可能にする仕組み

どのように類似検索がイノベーションを実現するのでしょうか?最初の例では、ユーザーはスクリーンショットを撮って、好きな有名人の服を検索することができます。

類似検索を使用すると、次のこともできるようになります。

  • 他の買い物客が購入した商品と類似した商品を提案する。
  • 視覚的な設計要素のライブラリから関連する既存の設計または関連するテンプレートを検索する。
  • 最近視聴した内容に基づいて、一般的な音楽ストリーミングサービスから好みの可能性がある音楽を検索する。
  • 自然説明を使用して、非構造化のタグ付けされていない画像の大規模なデータセットを検索する。

画像の類似検索を実現する技術の詳細をご覧ください >>

画像類似アプリのアーキテクチャ概要

このようなインタラクティブなアプリケーションの開発は複雑であると考えられることがあります。以下のような従来のアーキテクチャ内に実装することを検討している場合には、特にそのようなことが当てはまります。しかし、2番目の図では、Elasticではどのようにしてこのアーキテクチャを簡素化しているのかが示されています。

図1:画像の類似検索の一般的な実装(外部サービスが必要)

インデックスが作成されたデータを検索するほとんどの検索アプリケーションフレームワークは、ベクトル(類似)検索で必要なk最近傍法検索も、NLPモデルを適用するために必要な推論もネイティブでサポートしていません。このため、画像類似アプリケーションは、コア検索のkNNサービスのほかに、複数のサービスと連携する必要があります。テキスト処理が関係している場合は、図1のように、NLPサービスとも連携する必要があります。これは構築も保守も複雑になる可能性があります。

対照的に、Elasticプラットフォームを使用して画像の類似検索を実装するときには、ベクトル検索とNLPがネイティブで統合されます。このアプリケーションは、関係するすべてのコンポーネントとネイティブで通信できます。次の図のように、ElasticsearchクラスターはkNN検索とNLP推論を実行できます。

図2:Elasticにおける画像の類似検索の実装

画像の類似検索でElasticを選ぶ理由

Elasticでの画像の類似検索には明確な利点があります。Elasticでは次のことができます。

アプリケーションの複雑さを低減する。Elasticでは、kNN検索を実行し、検索インプットをベクトル化するための個別のサービスが不要です。ベクトル検索とNLP推論エンドポイントは、スケーラブルな検索プラットフォームと統合されます。他の一般的なフレームワークでは、ディープニューラルネットワークやNLPモデルの適用は、大規模なデータセットに対する検索のスケーリングとは別に発生します。つまり、専門技術者に依頼し、プロジェクトの開発時間が長くなり、長期的に管理するためのリソースを確保しなければならないということです。

スケールとスピード。Elasticでは、スケールと速度を両立できます。モデルは同じクラスターで検索を実行するノードとともに存在します。これはオンプレミスクラスターに当てはまることですが、クラウドにデプロイする場合には特に当てはまります。Elastic Cloudでは、現在の検索ワークロードに応じて、スケールアップとスケールダウンが簡単にできます。

アプリケーションで必要なサービスの数を減らすと、スケールを超える利点がもたらされます。一部の例を挙げると、パフォーマンス監視が簡素化され、保守の負荷が減少し、セキュリティ脆弱性が低下するという効果が得られる可能性があります。将来のサーバーレスアーキテクチャはアプリケーションの簡素化をまったく新しいレベルにまで引き上げます。

さっそく活用しましょう

このシリーズのパート1とパート2では、Elasticで画像の類似検索を実装する方法について詳細に説明します。これには、ハイレベルのアーキテクチャにおける各コンポーネントの技術設計に関する考慮事項のほか、Elasticでアーキテクチャを実装するための実際のコードなどが含まれます。

Elasticでベクトル検索を適用するための実践的な経験をするには、ベクトル検索ハンズオンワークショップにお申し込みください。次のワークショップを検索して登録するには、仮想イベントハブをご確認ください。その間にこのシリーズで紹介した概念に関する質問がある場合は、このディスカッションフォーラムでコミュニティに参加してください。

2022年12月14日初回発行、2023年2月28日更新。