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 ベースのアプリケーションでは、セマンティック検索と従来のキーワードベースの検索を組み合わせ、検索結果の適合性を高めています。これにより、ドキュメントの内容とその根底にある意味の両方で検索できるようになります。
例えば、次のようなクエリを考えてみましょう。

What is the cost of the book "<book_name>" on <website_name>?

この書籍名とウェブサイト名のクエリでは、特定の書籍の価格を知りたいのでキーワード検索でも良い結果が得られるでしょう。ただし、“cost” という単語については、類義語の “price” が使われているケースもあり得るため、テキストの意味を理解できるセマンティック検索を使う方が適切です。ハイブリッド検索は、両アプローチの長所を組み合わせることで、セマンティック検索の精度とキーワードの網羅性を両立します。RAG ベースのアプリケーションのように、自然言語のクエリに幅広く対応する必要があるケースではハイブリッド検索が役立ちます。キーワード検索は商品名、色、価格などの具体的なエンティティをカバーし、セマンティクス検索はクエリの意味と意図をよりよく理解できます。例えば、E コマースサイトの返品ポリシーや商品の詳細について顧客からの問い合わせに対応するチャットボットを構築する場合、ハイブリッド検索を使うのが最適でしょう。

ハイブリッド検索のユースケース

ハイブリッド検索の一般的なユースケースは以下のとおりです。

  • オープンドメインの質問応答 – オープンドメインの質問応答では、さまざまな話題に関する質問に答える必要があります。ウェブサイトのデータなど多様なコンテンツが含まれる大規模なドキュメント群を検索する必要があり、サステナビリティ、リーダーシップ、財務情報など、さまざまな話題が含まれる可能性があります。 セマンティック検索だけでは未知のエンティティに対し字句的なマッチングができないため、このようなタスクにおいて汎化が難しくなります。このため、キーワード検索とセマンティック検索を組み合わせることで、範囲を絞り込み、オープンドメインの質問応答に対してより良い結果を提供できます。
  • コンテキストベースのチャットボット – 会話は急に方向性を変えたり、予期せぬ話題に及ぶことがあります。ハイブリッド検索は、このような open-ended な対話をより適切に処理できます。
  • パーソナライズ検索 – 異種混在のコンテンツに対する Web 規模の検索には、ハイブリッド検索のアプローチが有効です。セマンティック検索は人気のあるクエリを処理し、キーワードは希少なクエリをカバーします。

ハイブリッド検索は 2 つのアプローチを組み合わせることで広範囲をカバーしますが、ドメインが狭く意味が明確に定まる場合やファクトイド型質問応答システムのように誤解の余地が少ない場合、セマンティック検索が精度で利があります。

ハイブリッド検索の利点

キーワード検索とセマンティック検索は、それぞれ別の関連度スコア付きの結果セットを返しますが、これらを組み合わせて最も適合性の高い結果を返します。Knowledge Bases for Amazon Bedrock は現在、Amazon OpenSearch ServerlessAmazon Aurora PostgreSQL 互換エディションPineconeRedis 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 を使用した文脈依存型チャットボットアプリケーションの構築を参照してください。

ハイブリッド検索の価値を実証するために、以下のクエリを使用します。

As of December 31st 2023, what is the leased square footage for physical stores in North America ?

前述の質問に回答するには、datephysical storesNorth America といったいくつかのキーワードが含まれています。正解は 22,871 thousand square feet です。ハイブリッド検索とセマンティック検索の結果の違いを見てみましょう。

次のコードは、Boto3 を使用して Retrieve API で ハイブリッドまたはセマンティック (ベクトル) 検索を行う方法を示しています:

import boto3

bedrock_agent_runtime = boto3.client(
    service_name = "bedrock-agent-runtime"
)

def retrieve(query, kbId, numberOfResults=5):
    return bedrock_agent_runtime.retrieve(
        retrievalQuery= {
            'text': query
        },
        knowledgeBaseId=kbId,
        retrievalConfiguration= {
            'vectorSearchConfiguration': {
                'numberOfResults': numberOfResults,
                'overrideSearchType': "HYBRID/SEMANTIC", # optional
            }
        }
    )
response = retrieve("As of December 31st 2023, what is the leased square footage for physical stores in North America?", "<knowledge base id>")["retrievalResults"]

retrievalConfigurationoverrideSearchType オプションでは、HYBRID または SEMANTIC を選択できます。デフォルトでは、最も適合性の高い結果が得られるよう、適切な戦略が選択され、ハイブリッド検索またはセマンティック検索を指定して使用したい場合は、HYBRID/SEMANTIC に設定できます。
Retrieve API の出力には、取得されたテキスト (チャンク)、ソースデータの場所と URI、関連度スコアが含まれます。
スコアは、クエリの応答に最もマッチするチャンクを判断するのに役立ちます。

以下は、ハイブリッド検索を使った前述のクエリの結果です。(出力の一部は簡潔にするため編集されています)

[
  {
    "content": {
      "text": "... Description of Use Leased Square Footage (1).... Physical stores (2) 22,871  ..."
    },
    "location": {
      "type": "S3",
      "s3Location": {
        "uri": "s3://<bucket_name>/amazon-10k-2023.pdf"
      }
    },
    "score": 0.6389407
  },
  {
    "content": {
      "text": "Property and equipment, net by segment is as follows (in millions): December 31, 2021 2022 2023 North America $ 83,640 $ 90,076 $ 93,632 International 21,718 23,347 24,357 AWS 43,245 60,324 72,701 Corporate 1.."
    },
    "location": {
      "type": "S3",
      "s3Location": {
        "uri": "s3://<bucket_name>/amazon-10k-2023.pdf"
      }
    },
    "score": 0.6389407
  },
  {
    "content": {
      "text": "..amortization of property and equipment acquired under finance leases of $9.9 billion, $6.1 billion, and $5.9 billion for 2021, 2022, and 2023. 54 Table of Contents Note 4 — LEASES We have entered into non-cancellable operating and finance leases for fulfillment network, data center, office, and physical store facilities as well as server and networking equipment, aircraft, and vehicles. Gross assets acquired under finance leases, ..."
    },
    "location": {
      "type": "S3",
      "s3Location": {
        "uri": "s3://<bucket_name>/amazon-10k-2023.pdf"
      }
    },
    "score": 0.61908984
  }
]

以下は、セマンティック検索の結果です。(出力の一部は簡潔にするため編集されています)

[
  {
    "content": {
      "text": "Property and equipment, net by segment is as follows (in millions):    December 31,    2021 2022 2023   North America $ 83,640 $ 90,076 $ 93,632  International 21,718 23,347 24,357  AWS 43,245 60,324 72,701.."
    },
    "location": {
      "type": "S3",
      "s3Location": {
        "uri": "s3://<bucket_name>/amazon-10k-2023.pdf"
      }
    },
    "score": 0.6389407
  },
  {
    "content": {
      "text": "Depreciation and amortization expense on property and equipment was $22.9 billion, $24.9 billion, and $30.2 billion which includes amortization of property and equipment acquired under finance leases of $9.9 billion, $6.1 billion, and $5.9 billion for 2021, 2022, and 2023.   54        Table of Contents   Note 4 — LEASES We have entered into non-cancellable operating and finance leases for fulfillment network, data center, office, and physical store facilities as well a..."
    },
    "location": {
      "type": "S3",
      "s3Location": {
        "uri": "s3://<bucket_name>/amazon-10k-2023.pdf"
      }
    },
    "score": 0.61908984
  },
  {
    "content": {
      "text": "Incentives that we receive from property and equipment   vendors are recorded as a reduction to our costs. Property includes buildings and land that we own, along with property we have acquired under build-to-suit lease arrangements when we have control over the building during the construction period and finance lease arrangements..."
    },
    "location": {
      "type": "S3",
      "s3Location": {
        "uri": "s3://<bucket_name>/amazon-10k-2023.pdf"
      }
    },
    "score": 0.61353767
  }
]

結果から分かるように、ハイブリッド検索はユーザーのクエリに記述された北米の実店舗の賃借面積の検索結果を取得することができました。その主な理由は、ハイブリッド検索がクエリ内の datephysical storesNorth 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 にレスポンスを生成させましょう。

def retrieveAndGenerate(input, kbId):
    return bedrock_agent_runtime.retrieve_and_generate(
        input={
            'text': input
        },
        retrieveAndGenerateConfiguration={
            'type': 'KNOWLEDGE_BASE',
            'knowledgeBaseConfiguration': {
                'knowledgeBaseId': kbId,
                'modelArn': 'arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-instant-v1'
                'retrievalConfiguration': {
                'overrideSearchType': 'HYBRID/SEMANTIC',
                }
                }
            }
        )
response = retrieveAndGenerate("As of December 31st 2023, what is the leased square footage for physical stores in North America?", "<knowledge base id>")["output"]["text"]

ハイブリッド検索を使用した結果は次の通りです。

22,871 thousand leased square feet

セマンティック検索を使用した結果は次の通りです。

The search results do not contain any information about the leased square footage for physical stores in North America for 2023.

この質問に対する実際の答えは 22,871 thousand leased square feet で、ハイブリッド検索を使用して生成されたもと一致します。ハイブリッド検索の検索結果には北米の実店舗の賃借面積に関する情報が含まれていましたが、セマンティック検索ではベクトル表現への変換がうまくいかず、正しい情報を取得できませんでした。そのため、FM には正確で最も関連性の高い検索結果が与えられなかったため、適切な回答を提示できませんでした。

しかし、physical storesNorth 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 コンソールでハイブリッドおよびセマンティック検索オプションを使用するには、以下の手順を完了してください。

  1. Amazon Bedrock コンソール内のナビゲーションペインにて、ナレッジベースを選択。
  2. 作成したナレッジベースを選択。
  3. テストを選択。
  4. 設定アイコンを選択。
  5. 検索タイプHybrid search (semantic & text) を選択します。

デフォルトでは、クエリに対して FM による生成された応答を受け取ることができます。検索結果のみを表示したい場合、回答を生成をオフにします。

まとめ

この記事では、Knowledge Bases for Amazon Bedrock における新しいクエリ機能であるハイブリッド検索について説明しました。SDK と Amazon Bedrock コンソールでハイブリッド検索オプションを構成する方法を学びました。これにより、セマンティック検索のみに依存することの制限を克服でき、特に大規模で多様なコンテンツを検索する場合で有効に働きます。ハイブリッド検索の使用は、ドキュメントの種類と実装しようとしているユースケースによって決まります。

追加のリソースについては、以下を参照してください。

参考資料

ハイブリッド検索を使った RAG パイプラインの検索性能向上

翻訳は Solutions Architect 合田が担当しました。原文はこちらをご覧ください。