[AWS]BedrockのRAGとKendra

TIPS

Amazon BedrockのRAGとKendraの関係は、これらは競合するサービスではなく、強力なRAGアプリケーションを構築するために連携・補完しあう関係です。

一言で言うと、Kendraが優秀な「検索担当(Retriever)」Bedrockが優秀な「文章生成担当(Generator)」の役割を担います。

各サービスの役割

1. Amazon Kendra:インテリジェントな「検索エンジン」

Kendraは、エンタープライズ向けの高度な検索サービスです。その主な役割は、膨大なドキュメントの中から、ユーザーの質問に最も関連性の高い箇所を**正確に見つけ出す(Retrieval)**ことです。

Kendraの主な強み:

  • 豊富なコネクタ: Amazon S3だけでなく、SharePoint, Confluence, Salesforce, Webサイトなど、多様なデータソースに簡単に接続できます。
  • ハイブリッド検索: 近年のAI検索で主流の「セマンティック検索(意味の類似性での検索)」と、従来の「キーワード検索」を組み合わせた高精度な検索が可能です。
  • 読解力とランキング: ドキュメント全体から、質問に対する直接的な答えとなりうる箇所を賢く抽出し、関連性の高い順に並べ替える能力に長けています。

2. Amazon Bedrock:高性能な「文章生成エンジン」

Bedrockは、様々な高性能な基盤モデル(LLM)を利用できるサービスです。RAGにおける主な役割は、Kendraが見つけてきた情報を元に、自然で分かりやすい対話形式の文章を**生成する(Generation)**ことです。

Bedrockの主な強み:

  • 多様なモデル選択: AnthropicのClaudeシリーズなど、最先端のLLMを要件に応じて選択できます。
  • 文脈理解と要約: 複数の情報(コンテキスト)を統合し、矛盾のない一貫した文章として要約・生成する能力に優れています。
  • 柔軟なプロンプト設計: ユーザーの意図に合わせて、回答のトーンや形式を細かく制御できます。

RAGにおけるKendraとBedrockの連携プロセス

Kendraを検索エンジンとして利用したRAGアプリケーションは、一般的に以下のように動作します。

  1. ユーザーからの質問: ユーザーがアプリケーションに自然言語で質問します。
  2. Kendraによる検索: アプリケーションは、その質問をまずKendraに送ります。
  3. 関連情報の取得: Kendraはインデックス化されたデータソースを横断的に検索し、質問に最も関連するドキュメントの断片(テキスト)を複数、出典元情報と共に返します。
  4. プロンプトの構築: アプリケーションは、Kendraから受け取ったテキストを「コンテキスト情報」として、ユーザーの元の質問と組み合わせ、BedrockのLLMへのプロンプトを作成します。
  5. Bedrockによる回答生成: Bedrockは、そのプロンプトを受け取り、提供されたコンテキスト情報のみに基づいて、自然な対話形式の回答を生成します。
  6. 最終的な回答の提示: 生成された回答と、Kendraが提供した出典元リンクをユーザーに提示します。

BedrockのネイティブRAG機能との違い

ここで重要になるのが、Bedrock自体にも「Knowledge Bases for Amazon Bedrock」というネイティブのRAG機能がある点です。この機能もKendraと同様に検索(Retrieval)の役割を担います。

どちらを検索エンジンとして使うかは、要件によって選択します。

比較項目Amazon KendraKnowledge Bases for Amazon Bedrock
主な役割高度な検索(Retrieval)検索(Retrieval)と生成(Generation)の統合
検索タイプハイブリッド検索(キーワード+セマンティック)セマンティック検索(ベクトル検索)が中心
データソース非常に豊富(S3, SharePoint, Webクローラ等)Amazon S3が中心
適した用途多様なデータソースがあり、キーワード検索も重要なエンタープライズ検索S3に集約されたドキュメントで、セマンティック検索を迅速に構築したい場合
設定の容易さ高機能な分、設定項目は多めBedrockと緊密に統合されており、シンプルに構築可能

まとめ

  • KendraとBedrockは連携するパートナーです。 Kendraが最高の検索結果を見つけ、Bedrockがその結果を元に最高の文章を生成します。
  • RAGの「検索」部分を担うものとして、**高度で多機能な「Kendra」**を選ぶか、**シンプルでBedrockと統合された「Knowledge Bases for Bedrock」**を選ぶか、という選択肢があります。
  • 要件が複雑でデータソースが多様な場合はKendraを、S3中心で迅速に構築したい場合はKnowledge Bases for Amazon Bedrockを選択するのが一般的なアプローチです。

コメント

タイトルとURLをコピーしました