Amazon Web Services ブログ
Knowledge Bases for Amazon Bedrock がハイブリッド検索をサポート
AWS re:Invent 2023 にて、Knowledge Bases for Amazon Bedrock の一般提供を発表しました。Knowledge Bases for Amazon Bedrock を使えば、Amazon Bedrock の基盤モデル (Foundation Model; FM) に自社のデータをセキュアに接続し、Retrieval Augmented Generation (RAG) をマネージドで実現できます。
前回の記事では、Knowledge Bases for Amazon Bedrock が一連の RAG ワークフローを管理してくれることを説明し、最近リリースされた機能の詳細を共有しました。
RAG ベースのアプリケーションでは、大規模言語モデル (LLM) から生成された回答の正確性は、モデルに提供されたコンテキストに依存します。コンテキストは、ユーザーのクエリに基づいてベクトルデータベースから取得されます。ユーザーのクエリと、それに答えるコンテンツ内の文言が必ずしも一致するとは限らないため、質問の意味を踏まえたセマンティック検索が広く用いられています。しかし、関連するすべてのキーワードを捉えるには限界があり、また、その性能は単語の埋め込み表現の品質に依存します。この課題を克服するために、セマンティック検索とキーワード検索を組み合わせたハイブリッド検索を行うことで、より良い結果が得られると期待されます。
この記事では、セマンティック検索に加えてオプションとして選択可能な新機能のハイブリッド検索について説明します。
ハイブリッド検索の概要
ハイブリッド検索は、複数の検索アルゴリズムの長所を活かし、それぞれの得意領域を組み合わせて検索結果の適合性を向上させます。RAG ベースのアプリケーションでは、セマンティック検索と従来のキーワードベースの検索を組み合わせ、検索結果の適合性を高めています。これにより、ドキュメントの内容とその根底にある意味の両方で検索できるようになります。
例えば、次のようなクエリを考えてみましょう。
この書籍名とウェブサイト名のクエリでは、特定の書籍の価格を知りたいのでキーワード検索でも良い結果が得られるでしょう。ただし、“cost” という単語については、類義語の “price” が使われているケースもあり得るため、テキストの意味を理解できるセマンティック検索を使う方が適切です。ハイブリッド検索は、両アプローチの長所を組み合わせることで、セマンティック検索の精度とキーワードの網羅性を両立します。RAG ベースのアプリケーションのように、自然言語のクエリに幅広く対応する必要があるケースではハイブリッド検索が役立ちます。キーワード検索は商品名、色、価格などの具体的なエンティティをカバーし、セマンティクス検索はクエリの意味と意図をよりよく理解できます。例えば、E コマースサイトの返品ポリシーや商品の詳細について顧客からの問い合わせに対応するチャットボットを構築する場合、ハイブリッド検索を使うのが最適でしょう。
ハイブリッド検索のユースケース
ハイブリッド検索の一般的なユースケースは以下のとおりです。
- オープンドメインの質問応答 – オープンドメインの質問応答では、さまざまな話題に関する質問に答える必要があります。ウェブサイトのデータなど多様なコンテンツが含まれる大規模なドキュメント群を検索する必要があり、サステナビリティ、リーダーシップ、財務情報など、さまざまな話題が含まれる可能性があります。 セマンティック検索だけでは未知のエンティティに対し字句的なマッチングができないため、このようなタスクにおいて汎化が難しくなります。このため、キーワード検索とセマンティック検索を組み合わせることで、範囲を絞り込み、オープンドメインの質問応答に対してより良い結果を提供できます。
- コンテキストベースのチャットボット – 会話は急に方向性を変えたり、予期せぬ話題に及ぶことがあります。ハイブリッド検索は、このような open-ended な対話をより適切に処理できます。
- パーソナライズ検索 – 異種混在のコンテンツに対する Web 規模の検索には、ハイブリッド検索のアプローチが有効です。セマンティック検索は人気のあるクエリを処理し、キーワードは希少なクエリをカバーします。
ハイブリッド検索は 2 つのアプローチを組み合わせることで広範囲をカバーしますが、ドメインが狭く意味が明確に定まる場合やファクトイド型質問応答システムのように誤解の余地が少ない場合、セマンティック検索が精度で利があります。
ハイブリッド検索の利点
キーワード検索とセマンティック検索は、それぞれ別の関連度スコア付きの結果セットを返しますが、これらを組み合わせて最も適合性の高い結果を返します。Knowledge Bases for Amazon Bedrock は現在、Amazon OpenSearch Serverless、Amazon Aurora PostgreSQL 互換エディション、Pinecone、Redis Enterprise Cloud の 4 つのベクトルストアをサポートしています。この記事の執筆時点では、ハイブリッド検索機能は OpenSearch Serverless でご利用いただけますが、他のベクトルストアのサポートも間もなく追加される予定です。
ハイブリッド検索を利用するメリットは以下のとおりです。
- 精度の向上 – FM から生成されたレスポンスの精度は、検索結果の適合性に依存します。データによっては、セマンティック検索だけではアプリケーションの精度を改善するのは難しい場合があります。ハイブリッド検索を使うメリットの 1 つは、検索結果の質を向上させ、その結果、FM がより正確な回答を生成できるようになることです。
- 検索機能の拡張 – キーワード検索は網をより広く投げ、ドキュメント全体に意味的な構造があるわけではないが関連するかもしれないドキュメントを見つけることができます。テキストのキーワードと意味の両方で検索できるため、検索機能が拡張されます。
次のセクションでは、Knowledge Bases for Amazon Bedrock でハイブリッド検索を使用する方法を示します。
SDK 経由でのハイブリッド検索とセマンティック検索オプションの利用
Knowledge Bases for Amazon Bedrock では、Retrieve API を呼び出すと最も適合性の高い結果を得られるよう適切な検索戦略を選択します。API 内でハイブリッド検索やセマンティック検索のどちらかを使用して結果を上書きすることもできます。
Retrieve API
Retrieve API は、クエリ、ナレッジベース ID、結果の数を指定することで、関連する検索結果を取得できるように設計されています。この API はユーザーのクエリをベクトル化し、ハイブリッド検索かセマンティック (ベクトル) 検索のいずれかを使ってナレッジベースを検索し、関連する結果を返します。これにより、検索結果をベースに独自のワークフローを構築するための制御が可能になります。例えば、取得した結果に後処理ロジックを追加したり、独自のプロンプトを追加して Amazon Bedrock が提供する任意の LLM と連携して回答を生成できます。
ハイブリッド検索とセマンティック (ベクトル) 検索のオプションを切り替える例を示すために、ここでは 2023 年のアマゾン 10-K 文書を使用してナレッジベースを作成しました。ナレッジベースの作成の詳細については、Knowledge Bases for Amazon Bedrock を使用した文脈依存型チャットボットアプリケーションの構築を参照してください。
ハイブリッド検索の価値を実証するために、以下のクエリを使用します。
前述の質問に回答するには、date
、physical stores
、North America
といったいくつかのキーワードが含まれています。正解は 22,871 thousand square feet
です。ハイブリッド検索とセマンティック検索の結果の違いを見てみましょう。
次のコードは、Boto3 を使用して Retrieve API で ハイブリッドまたはセマンティック (ベクトル) 検索を行う方法を示しています:
retrievalConfiguration
の overrideSearchType
オプションでは、HYBRID
または SEMANTIC
を選択できます。デフォルトでは、最も適合性の高い結果が得られるよう、適切な戦略が選択され、ハイブリッド検索またはセマンティック検索を指定して使用したい場合は、HYBRID/SEMANTIC
に設定できます。
Retrieve
API の出力には、取得されたテキスト (チャンク)、ソースデータの場所と URI、関連度スコアが含まれます。
スコアは、クエリの応答に最もマッチするチャンクを判断するのに役立ちます。
以下は、ハイブリッド検索を使った前述のクエリの結果です。(出力の一部は簡潔にするため編集されています)
以下は、セマンティック検索の結果です。(出力の一部は簡潔にするため編集されています)
結果から分かるように、ハイブリッド検索はユーザーのクエリに記述された北米の実店舗の賃借面積の検索結果を取得することができました。その主な理由は、ハイブリッド検索がクエリ内の date
、physical stores
、North America
などのキーワードを組み合わせて結果を出力できたのに対し、セマンティック検索ではできなかったためです。したがって、検索結果をユーザーのクエリとプロンプトによって組み合わせても、セマンティック検索では FM は正しい応答を提供できません。
それでは、FM によって生成された最終的なレスポンスを理解するために、RetrieveAndGenerate
API の ハイブリッド検索を見ていきましょう。
RetrieveAndGenerate API
RetrieveAndGenerate
API はナレッジベースへのクエリを投げ、検索結果に基づいて応答を生成します。ナレッジベース ID と、検索結果から応答を生成するための FM を指定します。Amazon Bedrock はクエリをベクトル表現に変換し、検索タイプに基づいてナレッジベースを検索した後、検索結果をコンテキスト情報としてプロンプトに加えて、FM による応答を返します。
“As of December 31st 2023, what is the leased square footage for physical stores in North America?” というクエリを使用し、RetrieveAndGenerate
API にレスポンスを生成させましょう。
ハイブリッド検索を使用した結果は次の通りです。
セマンティック検索を使用した結果は次の通りです。
この質問に対する実際の答えは 22,871 thousand leased square feet
で、ハイブリッド検索を使用して生成されたもと一致します。ハイブリッド検索の検索結果には北米の実店舗の賃借面積に関する情報が含まれていましたが、セマンティック検索ではベクトル表現への変換がうまくいかず、正しい情報を取得できませんでした。そのため、FM には正確で最も関連性の高い検索結果が与えられなかったため、適切な回答を提示できませんでした。
しかし、physical stores
やNorth America
のようなエンティティを含まない、より一般的な質問の場合はハイブリッド検索とセマンティック検索で同様の結果が得られます。
次のサンプルレスポンスは、ハイブリッド検索とセマンティック検索の両方が同様の結果を生成する例を示しています。
質問 | 単語の意味による検索: RAG API | ハイブリッド検索: RAG API |
Amazon は開発者や企業にどのように貢献していますか? | スタートアップ、政府機関、学術機関を含むあらゆる規模の開発者や企業に対し、コンピューティング、ストレージ、データベース、分析、機械学習などの幅広いオンデマンドのテクノロジーサービスを提供する AWS を通して貢献しています。 | スタートアップ、政府機関、学術機関を含むあらゆる規模の開発者や企業に対し、コンピューティング、ストレージ、データベース、分析、機械学習などの幅広いオンデマンドのテクノロジーサービスを提供する AWS を通して貢献しています。 |
2024 年 1 月 24 日時点で Amazon の役員と取締役は誰でしたか? | 2024 年時点での Amazon の役員には、最高経営責任者のアンドリュー・ R ・ジャシー、Worldwide Amazon Stores CEO のダグラス・ J ・ヘリントン、最高財務責任者のブライアン・ T ・オルサフスキー、コントローラー兼最高会計責任者のシェリー・ L ・レイノルズ、Amazon Web Services の CEO アダム・ N ・セリプスキー、グローバル公共政策最高責任者兼法務責任者デビッド・ A ・ザポールスキーが含まれています。 | 2024 年時点で、ジェフリー・ P ・ベゾスは Amazon.com の最高経営責任者を務めていました。アンドリュー・ R ・ジャシーが最高経営責任者兼社長を務めています。その他の役員には、Worldwide Amazon Stores CEO のダグラス・ J ・ヘリントン、最高財務責任者のブライアン・ T ・オルサフスキー、コントローラー兼最高会計責任者のシェリー・ L ・レイノルズ、Amazon Web Services の CEO のアダム・ N ・セリプスキーが含まれます。デビッド・ A ・ザポールスキーがグローバル公共政策最高責任者兼法務責任者を務めていました。 |
ハイブリッド検索とセマンティック検索オプションを Amazon Bedrock コンソール経由で利用する
Amazon Bedrock コンソールでハイブリッドおよびセマンティック検索オプションを使用するには、以下の手順を完了してください。
- Amazon Bedrock コンソール内のナビゲーションペインにて、ナレッジベースを選択。
- 作成したナレッジベースを選択。
- テストを選択。
- 設定アイコンを選択。
- 検索タイプに Hybrid search (semantic & text) を選択します。
デフォルトでは、クエリに対して FM による生成された応答を受け取ることができます。検索結果のみを表示したい場合、回答を生成をオフにします。
まとめ
この記事では、Knowledge Bases for Amazon Bedrock における新しいクエリ機能であるハイブリッド検索について説明しました。SDK と Amazon Bedrock コンソールでハイブリッド検索オプションを構成する方法を学びました。これにより、セマンティック検索のみに依存することの制限を克服でき、特に大規模で多様なコンテンツを検索する場合で有効に働きます。ハイブリッド検索の使用は、ドキュメントの種類と実装しようとしているユースケースによって決まります。
追加のリソースについては、以下を参照してください。
- ユーザーガイド: Knowledge Bases for Amazon Bedrock
- YouTube 動画: RAG を使って生成 AI アプリケーションの応答を改善する
- GitHub リポジトリのコードサンプル: Amazon Bedrock Knowledge Base – RAG ワークフローを構築するサンプル
参考資料
ハイブリッド検索を使った RAG パイプラインの検索性能向上
翻訳は Solutions Architect 合田が担当しました。原文はこちらをご覧ください。