Amazon Web Services ブログ

Amazon OpenSearch Service の検索機能強化: 2023年のまとめ

これまでの年月を経て、ユーザーが検索エンジンに期待するものは進化してきました。ほとんどのユーザーにとって、迅速に文字通りに関連性の高い結果を返すだけでは、もはや十分とはいえません。今では、ユーザーは意味的理解を通じてさらに関連性の高い結果を取得したり、メタデータのテキスト検索ではなく画像の視覚的類似性を通じて検索することを可能にする方法を求めています。 Amazon OpenSearch Service には、検索エクスペリエンスを強化できる多くの機能が含まれています。2023 年にそのツールキットに追加した OpenSearch Service の機能と拡張についてうれしく思っています。

2023 年は、人工知能 (AI) と機械学習 (ML) の分野で急速なイノベーションがあった年であり、検索はその進歩の大きな受益者となりました。2023年を通じて、Amazon OpenSearch Service は、アプリケーションの書き換えやカスタムオーケストレーションの構築を行うことなく、最新の AI/ML テクノロジーを利用して既存の検索エクスペリエンスを改善および拡張できるよう、検索チームをサポートする投資を行ってきました。これにより、迅速な開発、反復、製品化が可能になります。 これらの投資には、新しい検索メソッドの導入と、利用可能なメソッドの実装を簡素化する機能が含まれています。本記事では、これらの機能を振り返っていきます。

背景: レキシカル検索とセマンティック検索

まず始めに、レキシカル検索とセマンティック検索の違いを確認しておきましょう。

レキシカル検索

レキシカル検索では、検索エンジンが検索クエリの単語とドキュメントの単語を比較し、単語と単語が一致するかどうかを照合します。 ユーザーが入力した単語を含むアイテムのみがクエリと一致します。BM25 のような用語頻度モデルに基づく従来のレキシカル検索は、広く使用されており、多くの検索アプリケーションでは効果的です。 しかし、レキシカル検索技術は、ユーザーのクエリに含まれる単語を超えて進むことが困難であり、その結果、高い関連性を持つ潜在的な結果が常に返されているとは限りません。

セマンティック検索

セマンティック検索では、検索エンジンは ML モデルを使用して、ソースドキュメントのテキストやその他のメディア(画像や動画など)を高次元のベクトル空間内の密ベクトル (dense vector) としてエンコードします。これはテキストをベクトル空間に埋め込むことから、「埋め込み」とも呼ばれます。同様にクエリもベクトルとしエンコードし、次に距離メトリックを使用して多次元空間内の近傍ベクトルから一致するものを探索します。近傍ベクトルを探索するアルゴリズムは k 最近傍 (k-NN) と呼ばれます。セマンティック検索は個々のクエリ用語とのマッチングを行いません。ベクトル空間内でクエリのベクトル埋め込みに近いベクトル埋め込みを持つドキュメントを見つけます。そのため、クエリに含まれる単語のいずれも含まない場合でも、クエリと意味的に類似した関連性の高いアイテムを返すことができます。

OpenSearch は数年にわたりベクトル類似性検索 (k-NN および Approximate k-NN)を提供してきました。この取り組みは、本機能を採用した顧客にとって貴重なものとなりました。 しかし、k-NN の恩恵を受ける機会のあるすべての顧客が本機能を採用したわけではありません。その理由は、採用にあたり、相当なエンジニアリング努力とリソースが必要であるためです。

2023年のリリース: 基本事項

2023 年に、OpenSearch Service でいくつかの機能と改善がリリースされました。これには、検索機能の継続的な強化のための基本的な構成要素である新機能が含まれています。

OpenSearch Compare Search Results ツール

Compare Search Results は、OpenSearch Service バージョン 2.11 より一般提供されている、OpenSearch Dashboards 上で 2 つのランキング技術の検索結果を並べて比較できるツールです。本ツールにより、あるクエリが別のクエリよりも良い結果を生み出すか判断できます。ML アシステッドモデルによって動作する最新の検索手法を試したいユーザーにとって、検索結果の比較機能は欠かせません。また、自社のコーパスに対して、各手法のメリットを理解するために、レキシカル検索、セマンティック検索、ハイブリッド検索技術を比較したり、フィールド重み付けやステミングや、レンマ化の戦略のような調整を比較することもできます。 次のスクリーンショットは、Compare Search Results ツールの使用例を示しています。

セマンティック検索およびクロスモーダル検索の詳細や、Compare Search Results ツールのデモを試すには、Amazon OpenSearch Service ベクトルエンジンを使用したセマンティック検索の試行を参照してください。

Search pipelines

検索の実践者は、検索クエリと結果を強化する新しい方法を導入しようとしています。OpenSearch Service バージョン 2.9 から一般提供されている Search pipelines を使用すると、アプリケーションソフトウェアを複雑にすることなく、検索クエリと結果の処理をモジュール化された処理ステップの組み合わせで構築できます。フィルタなどの関数のプロセッサを統合し、新しく格納されたドキュメントに対してスクリプトを実行する機能を追加することで、検索アプリケーションの精度と効率を高め、カスタム開発の必要性を減らすことができます。 検索パイプラインには、filter_query、rename_field、script request の3つの組み込みプロセッサに加えて、独自のプロセッサを構築したい開発者向けの新しい開発者中心の API が組み込まれています。OpenSearch は、今後のリリースでこの機能をさらに拡張するために、追加の組み込みプロセッサを継続的に追加していきます。 次の図は、検索パイプラインのアーキテクチャを示しています。

Byte-sized vectors in Lucene

これまで、OpenSearch の k-NN プラグインは、ベクトル要素が 4 バイトを占有する float 型のベクトルのインデックス作成とクエリをサポートしてきました。これはメモリとストレージの両面でコストがかかる場合があります。特に大規模なユースケースでは顕著です。 OpenSearch Service バージョン 2.9 から利用可能な新しい byte 型のベクトルを使用することで、メモリ必要量を 4 分の 1 に削減し、クオリティ(再現率)の大きな低下なく検索レイテンシを大幅に短縮できます。 詳細は、OpenSearch のバイト量子化ベクトルをご参照ください。

新しい言語アナライザのサポート

OpenSearch Service は以前より、IK (中国語)、Kuromoji (日本語)、Seunjeon (韓国語)など、複数の言語アナライザープラグインをサポートしていました。新たに、Nori(韓国語)、Sudachi (日本語)、Pinyin (中国語)、STConvert Analysis (中国語)のサポートを追加しました。これらの新しいプラグインは、TXT-DICTIONARY パッケージタイプに加えて、ZIP-PLUGIN という新しいパッケージタイプとして利用できます。OpenSearch Service コンソールの [パッケージ] ページや、AssociatePackage API を使用することでこれらのプラグインをクラスターに関連付けられます。

2023年のリリース: 操作性の向上

OpenSearch Service は、2023年に主要な検索機能内の使いやすさを向上させる改善も行いました。

Neural search によるセマンティック検索

これまで、セマンティック検索を実装するには、テキスト埋め込みモデルを検索とインジェストに統合するためのミドルウェアをアプリケーションが担当し、コーパスのエンコードをオーケストレーションし、クエリ時に k-NN 検索を使用する必要がありました。 OpenSearch Service はバージョン 2.9 で Neural search を導入し、開発者が大幅に軽減された定型作業なしにセマンティック検索アプリケーションを構築および運用できるようにしました。セマンティック検索では、テキストクエリからベクトルを生成し k-NN クエリを呼び出すため、 アプリケーションでドキュメントやクエリのベクトル化を行う必要がありません。 Neural search 機能によるセマンティック検索は、ドキュメントやその他のメディアをベクトル埋め込みに変換し、テキストとそのベクトル埋め込みの両方をベクトルインデックスに格納します。 検索時にニューラルクエリを使用すると、Neural search はクエリテキストをベクトル埋め込みに変換し、ベクトル検索を使用してクエリとドキュメントの埋め込みを比較し、最も近い結果を返します。 この機能は OpenSearch Service バージョン 2.4 で当初実験的にリリースされ、バージョン 2.9 で一般提供されるようになりました。

AI/ML コネクタによる AI パワー検索機能の実現

OpenSearch Service 2.9 より、Neural search のような機能を実現するために、AWS の AI と ML サービスやサードパーティの代替サービスとの接続が可能な、すぐに利用できる AI コネクタを提供しました。 たとえば、本番環境でモデルを適切に管理するための包括的な機能を提供する Amazon SageMaker 上にホストされた外部の ML モデルに接続できます。 フルマネージドな体験を通じて最新のファンデーションモデルを使用したい場合は、マルチモーダル検索のようなユースケースを実現するために Amazon Bedrock のコネクタを使用できます。 当初のリリースには Cohere Embed へのコネクタが含まれており、SageMaker と Amazon Bedrock を通じて、さらに多くのサードパーティのオプションにアクセスできます。 これらの統合の一部は、OpenSearch Service コンソールの統合(次のスクリーンショットを参照)を介してドメインで構成でき、SageMaker へのモデルの自動デプロイも可能です。

統合モデルは OpenSearch Service ドメインにカタログ化されるため、チームは統合され利用可能な様々なモデルを発見できます。モデルとコネクタのリソースについて細かいセキュリティ制御を有効にするオプションがあり、モデルとコネクタレベルのアクセスを管理できます。

オープンなエコシステムを育成するために、パートナーがAIコネクタを簡単に構築および公開できるフレームワークを作成しました。テクノロジープロバイダーは、OpenSearch と自社サービス間のセキュアな RESTful 通信を記述したJSONドキュメントであるブループリントを簡単に作成できます。テクノロジーパートナーはコミュニティサイトで自社のコネクタを公開でき、セルフマネージドクラスタや OpenSearch Service で、これらのAIコネクタをすぐに利用できます。各コネクタのブループリントは、ML Commons GitHubリポジトリで参照できます。

スコアの組み合わせによってサポートされるハイブリッド検索

Neural search のためのベクトル埋め込みや自然言語処理のための大規模言語モデル (LLM) などのセマンティック技術は、検索を革新し、手動の同義語リスト管理や微調整の必要性を減らしました。 一方で、テキストベース(レキシカル)検索は、部品番号やブランド名などの重要なケースでセマンティック検索よりも高いパフォーマンスを発揮します。ハイブリッド検索は2つの方法を組み合わせたもので、BM25単体と比較して14%高い検索の適合率(NDCG@10で測定 – ランキング品質の尺度)を実現するため、ユーザーは両方の長所を活かすためにハイブリッド検索を利用したいと考えています。スコアの正確性とパフォーマンスの詳細なベンチマークについては、OpenSearch 2.10 で一般公開されたハイブリッド検索による検索の適合率向上を参照してください。

これまで、各メソッドの関連性スケールの違いから、これらを組み合わせることは困難でした。以前はハイブリッドアプローチを実装するために、複数のクエリを個別に実行し、スコアの正規化と結合を OpenSearch の外で行う必要がありました。OpenSearch Service 2.11 で導入された新しい ハイブリッドスコアの組み合わせと正規化クエリタイプを使用することで、OpenSearch が 1 つのクエリ内でスコアの正規化と結合を処理できるようになりました。これによりハイブリッド検索の実装が容易になり、検索の関連性を向上させるより効率的な方法が実現できました。

新しい検索方法

最後に、OpenSearch Service に追加された新しい検索メソッドを紹介します。

Neural sparse search

OpenSearch Service 2.11 では、Neural sparse search が導入されました。これは、従来の用語ベースのインデックスとよく似た新しい種類のスパース埋め込みメソッドですが、低頻度の単語とフレーズがより適切に表現されています。スパースセマンティック検索は、トランスフォーマーモデル(BERT など)を使用して、語彙のミスマッチ問題をスケーラブルな方法で解決する情報豊富な埋め込みを構築します。これにより、レキシカル検索と同様の計算コストとレイテンシを発揮できます。OpenSearch におけるこの新しい Sparse search 機能は、それぞれ異なる利点を持つ 2 つのモードを提供します。ドキュメントのみのモードと、バイエンコーダーモードです。ドキュメントのみのモードは、BM25 検索に匹敵する低レイテンシーなパフォーマンスを発揮できますが、密な方法と比較して高度な構文の制限があります。バイエンコーダーモードは、より高いレイテンシーで実行しながらも、検索の関連性を最大化できます。このアップデートにより、パフォーマンス、精度、コストの要件に最適なメソッドを選択できるようになりました。

マルチモーダル検索

OpenSearch Service 2.11 では、Neural search を使用したテキストと画像のマルチモーダル検索が導入されました。この機能により、製品カタログのアイテム(製品画像と説明文)のような画像とテキストのペアを、視覚的および意味的な類似性に基づいて検索できるようになります。これにより、より適切な結果を提供できる新しい検索エクスペリエンスが可能になります。例えば、「白いブラウス」で検索することで、製品タイトルが「クリーム色のシャツ」であっても、その説明に一致する画像の製品を検索できます。このエクスペリエンスを実現している機械学習モデルは、意味と視覚的特徴を関連付けることができます。画像で検索して視覚的に類似した製品を検索したり、テキストと画像の両方で検索して、特定の製品カタログアイテムに最も類似した製品を見つけることもできます。

アプリケーションにこれらの機能を組み込むことで、カスタムミドルウェアを構築することなく、マルチモーダルモデルに直接接続し、マルチモーダル検索クエリを実行できるようになりました。Amazon Titan Multimodal Embeddings モデルは、この方法をサポートするために OpenSearch Service と統合できます。マルチモーダルセマンティック検索を始める方法のガイダンスについては、マルチモーダル検索を参照してください。また、今後のリリースでさらに入力タイプが追加されることをご期待ください。また、テキストと画像のクロスモーダル検索のデモを試すこともできます。これは、テキストの説明を使用して画像を検索する方法を示しています。

まとめ

OpenSearch Service は、検索アプリケーションを構築するためのさまざまなツールを提供していますが、最適な実装は、コーパスやビジネスニーズ、目標によって異なります。検索の実践者の方には、ユースケースに適したものを見つけるために、利用可能な検索メソッドのテストを開始することをおすすめします。2024 年以降も、OpenSearch の検索実践者が最新・最高の検索テクノロジーを手元で利用できるよう、速いペースでの検索イノベーションが続くことが期待されます。


著者について

Dagney Braun は、Amazon Web Services の OpenSearch チームのプロダクト シニア マネージャーです。 OpenSearch の使いやすさを向上させ、すべてのお客様のユースケースをより良くサポートするためのツールを拡張することに熱心です。

Stavros Macrakis は、Amazon Web Services の OpenSearch プロジェクトのシニアテクニカルプロダクトマネージャーです。検索結果の品質を向上させるツールを顧客に提供することに熱心です。

Dylan Tong は、Amazon Web Services のシニアプロダクトマネージャーです。 OpenSearch のベクトルデータベース機能を含む AI と機械学習 (ML) に関する OpenSearch の製品イニシアチブを率いています。Dylan は、データベース、アナリティクス、AI/ML ドメインの製品とソリューションの作成において、顧客と直接働く経験を数十年にわたって積んでいます。Dylan はコーネル大学でコンピュータサイエンスの学士号と修士号を持っています。

翻訳はソリューションアーキテクトの榎本が担当いたしました。原文はこちらです。