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アプリケーションは、一般的に以下のように動作します。
- ユーザーからの質問: ユーザーがアプリケーションに自然言語で質問します。
- Kendraによる検索: アプリケーションは、その質問をまずKendraに送ります。
- 関連情報の取得: Kendraはインデックス化されたデータソースを横断的に検索し、質問に最も関連するドキュメントの断片(テキスト)を複数、出典元情報と共に返します。
- プロンプトの構築: アプリケーションは、Kendraから受け取ったテキストを「コンテキスト情報」として、ユーザーの元の質問と組み合わせ、BedrockのLLMへのプロンプトを作成します。
- Bedrockによる回答生成: Bedrockは、そのプロンプトを受け取り、提供されたコンテキスト情報のみに基づいて、自然な対話形式の回答を生成します。
- 最終的な回答の提示: 生成された回答と、Kendraが提供した出典元リンクをユーザーに提示します。
BedrockのネイティブRAG機能との違い
ここで重要になるのが、Bedrock自体にも「Knowledge Bases for Amazon Bedrock」というネイティブのRAG機能がある点です。この機能もKendraと同様に検索(Retrieval)の役割を担います。
どちらを検索エンジンとして使うかは、要件によって選択します。
比較項目 | Amazon Kendra | Knowledge 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を選択するのが一般的なアプローチです。
コメント