生成 AI ワークロードに特化した Amazon Kendra GenAI Index を深堀してみよう!

AWS

2024.12.21

Topics

この記事はNHN テコラス Advent Calendar 2024の 21 日目の記事です。

はじめに

こんにちは、フクナガです。
先日、このようなブログを投稿させていただきました。

関連記事
【生成AI】Amazon OpenSearch Serverless と Amazon Aurora を RAG 用途で比較してみた

ブログ内で、「Amazon Kendra は高額なので、スモールスタートの場合はほかのソリューションがおすすめかも」というお話をさせていただきました。
しかし、AWS re:Invent 2024 内の Dr.Swami の Keynote でこちらが発表されました。
Introducing Amazon Kendra GenAI Index – Enhanced semantic search and retrieval capabilities

Amazon Kendra GenAI Index
なんて、生成 AI に最適化されていそうなネーミングでしょうか!

利用料金などもお手頃なエディションになっている、なんてうわさもありましたので、色々調べてみました!
本ブログでは、Amazon Kendra GenAI Index の特長や使い方をご紹介します!

本ブログの前提条件

繰り返しお伝えする内容があるので、条件面を整理しておきます!

  • 1 USD = 153.92 円 (2024/12/17 時点)でドルから日本円への換算を実施
  • 記載される情報については、執筆時点である 2024/12/17 の最新情報
    「英語ドキュメントしかない」というものも多いため、あくまで執筆時点での情報であることをご認識お願いします。
  • 12/4(水) 時点では、「Amazon Kendra GenAI Index」は us-east(バージニア北部) と us-west(オレゴン) リージョンでのみ利用可能
    参考:Announcing GenAI Index in Amazon Kendra

Amazon Kendra GenAI Index とは

Amazon Kendra GenAI Index は、企業がデジタルアシスタントとインテリジェント検索エクスペリエンスをより効率的かつ効果的に構築できるようにするために RAG とインテリジェント検索向けに設計された Amazon Kendra の新しいインデックスです。このインデックスは、高度なセマンティックモデルと最新の情報検索テクノロジーを使用して、高い検索精度を提供します。Amazon Bedrock ナレッジベースやその他の Amazon Bedrock ツールと統合して RAG を活用したデジタルアシスタントを作成したり、Amazon Q Business と組み合わせて完全に管理されたデジタルアシスタントソリューションとして使用したりできます。(日本語訳)
出典:Introducing Amazon Kendra GenAI Index – Enhanced semantic search and retrieval capabilities

後続で詳細に解説しますが、ポイントをざっくりとまとめます。

Amazon Q や Amazon Bedrock ナレッジベースへの組み込みが楽に!

これまで、Amazon Bedrock ナレッジベースを利用した RAG ソリューションの構築時に用いられていたのは「Amazon OpenSearch Serverless」や「Amazon Aurora」などのサービスでした。
参考:
Amazon BedrockのKnowledge Baseを構築し、Claude 3 Haikuを使ってみた
【生成AI】Amazon Aurora をベクトルデータベースとして RAG システムを構築してみた

ただ、AWS が提供する 「Generative AI Use Cases JP (略称:GenU)」をはじめ、多くの RAG アーキテクチャで Amazon Kendra が採用されていました。
今回のソリューションは、そのギャップを埋めるようなソリューションなのかなと思っています。

個人的に、
『特殊な作りこみなく Amazon Kendra を検索ソリューションとして RAG アーキテクチャに組み込めること』
はとても大きなメリットだと感じています。

既存エディションよりも RAG 用途に最適化!?

冒頭でも触れましたが今まであった Amazon Kendra のエディションは比較的高額だったと思います。
そのため、スモールスタートを想定しているお客様の温度感と合わないケースがありました。
また、検索精度などについても「RAG」という用途において最適化されていたかといわれると、そうではないと思います。

Amazon Kendra GenAI Index は、RAG 用途に最適化されたエディションとして紹介されており
性能面」「コスト面」ともにこの用途でメリットが大きいサービスだと思っています。
(と期待しています。)

ざっくりと特長をご紹介しましたが、ここからは「他のデータベースとの違い」「他のエディションとの違い」という 2 つの観点で、Amazon Kendra GenAI Index の解説をしていきたいと思います!

Amazon Kendra とその他のデータベースの違い

なぜ、生成 AI の RAG アーキテクチャに Amazon Kendra が選ばれるのか、という理由をご説明します。
RAG アーキテクチャにとって非常に重要な要素として「コネクターの多さ」があげられると思います。
Amazon OpenSearch などを利用する前提だった Amazon Bedrock ナレッジベースでは、5 種類のコネクターが提供されていました。
参考:Connect your knowledge base to a custom data source

一方で、Amazon Kendra は SharePoint や OneDrive、Google Drive をはじめとする 43 のエンタープライズソースへのコネクターをサポートしています。
サポートしているコネクターが多いというのはつまり「今データを置いている場所から、わざわざ動かさなくてもそのまま RAG アーキテクチャに組み込める」可能性が高まるということです。

お客様から「AWSだと、〇〇に格納されたデータは RAG に使えますか?」というご相談をこの一年たくさんいただいてきました。
多くのソースに対応しているというのは、RAG アーキテクチャに使うソリューションを選定するうえで
とても強い武器になりえると思います。

Amazon Kendra の他エディションとの違い

Amazon Kendra にはもともと「Basic Enterprise Edition」「Basic Developer Edition」という 2 つのエディションがありました。
AWS ブログ内で生成 AI ユースケースのコスト試算をする際は「Basic Developer Edition」という小規模/開発ワークロード向けのエディションで試算されていたため、こちらの内容と比較しながら
Amazon Kendra GenAI Index はこれまでのエディションと何が違うのか」を深堀りしていきたいと思います!

(1) 料金

読者の方は非常に気になるポイントですね!
Basic Developer Edition と GenAI Enterprise Edition(Amazon Kendra GenAI Index) の料金比較をしていきます!
参考:Amazon Kendra pricing
※英語版で閲覧してください

前提条件: Amazon Kendra のリソースの考え方

Amazon Kendra は、3 つのコンポーネントで構成されています。
基本的には、1 ストレージユニット + 1 クエリユニットを含む「Base Index」に対する課金となります。
エディションによっては、このストレージユニットとクエリユニットを個別で追加することができます。

また、3 つ目のコンポーネントとしてデータソースへのコネクターがあります。
Amazon Kendra を利用する際は、これらを考慮した試算が必要です。

① ベースインデックス

  • 単位
    GenAI:20,000 ドキュメントもしくは 200MB の抽出テキスト、1日あたり約 8000 クエリ
    Basic Developer:100,000 ドキュメントもしくは 3GB の抽出テキスト、1日あたり約 8000 クエリ
    比較すると、GenAI の方の1インデックスは 1/5のドキュメント数もしくは 1/15 のファイル容量となっています。
  • 1 インデックスの料金
    GenAI:0.32 USD/1 時間
    Basic Enterprise:1.125 USD/1 時間
  • 試算例
    1 か月間(30 日)、1 インデックスで利用し続けた場合の試算例を記載します。
    GenAI:230.4 USD(日本円で約 3.5 万円)
    Basic Developer:810 USD(日本円で約 12.5 万円)

8 万ドキュメントを超えるケースや、ファイルサイズの合計が 800MB を超える場合は、
Basic Enterprise よりもランニングコストが高くなります。

Amazon Kendra GenAI Index は安い Kendra だ!」と決めつけて採用するのではなく、
用途を考慮した試算をしましょう!

② ストレージユニット

Basic Developer Edition は、ストレージユニットの追加には対応していません。
そのため、GenAI Enterprise Edition の情報のみ記載します。

  • 単位
    GenAI:20,000 ドキュメントもしくは 200MB の抽出テキスト
  • 1 ユニットの料金
    GenAI:0.25 USD/1 時間
  • 試算例
    1 か月間(30 日)、1 ユニットを利用し続けた場合の試算例を記載します。
    GenAI:180 USD(日本円で約 2.8 万円)

➂ クエリユニット

Basic Developer Edition は、クエリユニットの追加には対応していません。
そのため、GenAI Enterprise Edition の情報のみ記載します。

  • 単位
    GenAI:1日あたり約 8000 クエリ
  • 1 ユニットの料金
    GenAI:0.07 USD/1 時間
  • 試算例
    1 か月間(30 日)、1 ユニットを利用し続けた場合の試算例を記載します。
    GenAI:50.4 USD(日本円で約 0.8 万円)

④ コネクター

このコンポーネントについては、料金体系がかなり全然違います。
同期、ドキュメントスキャンの従量での課金だった既存エディションと違い、GenAI Enterprise Edition は 1 インデックスあたりの課金となります。

GenAI Enterprise Edition インデックスの場合、コネクタは 1 インデックスあたり 30 ドル/月 の定額料金で課金されます。これには、1 か月あたり最大 500 時間の同期使用が含まれます。使用量が多い場合は、サービス クォータを通じて制限の増加をリクエストできます。月額料金は、その月にコネクタがアクティブだった時間数に関係なく、インデックス用に構成されたコネクタがあるすべての暦月に適用されます。料金は、月内の使用期間に基づいて按分されません。(日本語訳)

この部分が生成 AI に最適化された要素かもしれませんね。

  • 単位
    GenAI:1 インデックス
    Basic Enterprise:同期するタイミングの利用時間(1時間あたり)、同期中にスキャンされた文書(100万件あたり)
  • 単位あたりの料金
    GenAI:30 USD
    Basic Enterprise:0.35 USD / 1 時間(同期時)、1 USD/100 万件(スキャンされた文書)
  • 試算例
    1 か月間(30 日)、1 ユニットを利用し続けた場合の試算例を記載します。
    GenAI:50.4 USD(日本円で約 0.8 万円)
    Basic Enterprise については、同期の周期やファイル量によって内容が大きく変わるため記載を省略します。こちらのページに試算例が掲載されているため、ご参考にしてください。

(2) 性能面や回答精度面での違い

Amazon Kendra GenAI Index がいかに RAG アプリケーションに対し最適化されたパフォーマンスを実現するのか、という内容がドキュメント内で紹介されています。
参考:Introducing Amazon Kendra GenAI Index – Enhanced semantic search and retrieval capabilities

主要なところをまとめると下記です。

  • 様々なデータセットでテストされた再ランク付けモデルを活用
  • 検索や取得などのユースケースで高い精度が出せるよう最適化されている
  • セマンティック関連性モデルと事前に最適化されたパラメータを使用してハイブリッドインデックスシステムを実現
    ベクトル検索(関連性から検索する)とキーワード検索(文字列の全体/部分一致から検索)を組み合わせたものを「ハイブリッド検索」といいます。
    参考:ハイブリッド検索

(3) 導入コスト

Amazon Kendra GenAI Index は Amazon Bedrock ナレッジベースや Amazon Q Business との統合という観点でも既存エディションより優れているそうです。
本ブログでは、実際に Amazon Bedrock ナレッジベースとの統合を実施する方法をご紹介しますので、その手順を見て導入の手軽さを味わっていただければと思います!

【構築編】Amazon Bedrock ナレッジベースから Amazon Kendra GenAI Index を利用してみた

それでは、Amazon Bedrock ナレッジベースで Amazon Kendra GenAI Index を利用してみたいと思います!
今回は、us-east-1 リージョンで実施します。

1. Amazon Bedrock コンソールへ遷移

2. 左側メニューから「ナレッジベース」を選択

3. 「ナレッジベースを作成」のプルダウンから「Knowledge Base with Kendra GenAI Index」を選択

4. 下記の項目を入力し、「ナレッジベースを作成」を押下

ナレッジベース名:任意の値を入力
IAM許可 > ランタイムロール:新しいサービスロールを作成して使用
サービスロール名:任意の値を入力
Kendra GenAI Index:Create a new Kendra GenAI Index
Index name:任意の値を入力
Authorization:新しいサービスロールを作成して使用
サービスロール名:任意の値を入力
KMS:「暗号化設定をカスタマイズする(高度)」のチェックを外す(ご自身で暗号化キーを管理したい場合は、チェックを入れます)

20 分ほど経つと作成が完了し、下記メッセージが表示されます。

5. Amazon Kendra コンソールへ遷移し、左側メニューから「Indexes」を選択

6. 作成したインデックスを選択する

インデックスの設定をするコンソールが表示されます。

ここから、データソースの追加をしていくのですが、せっかくなので色々見てみましょう!
まずは、「Settings」を見てみます。

GenAI Edition で作成されていることや、Query / Docs の 容量についても見ることができます。
この「Add capacity」から、それぞれの容量の増減を設定できそうです。

「Usage」という項目では、Document count と Queries per second という指標で使用状況をモニタリングできそうです。

ここで継続的にモニタリングすることで、適切な容量設定ができそうですね!

コンソールの重要な個所をさらったところで、次のデータソース追加の手順に進みます!

7. 左側メニューの「Data sources」を選択する

8. Available data sources の右側検索窓に「S3」と入力し、出てきた「Amazon S3 connector」の「Add connector」を押下する

9. 下記を入力し、「Next」を押下する

Data source name:任意の値を入力
Default language:English を選択
私は日本語を選択したのですが、選んではいけない理由が後でわかります。

10. 下記を入力し、「Next」を押下する

IAM role:「Create a new role」を選択
Role name:任意の値を入力
Virtual Private Cloud(VPC):「No VPC」を選択

11. 下記を入力し、「Next」を押下する

Enter the data source location:「Browse S3」でファイルを格納している S3 を選択
Sync run schedule > Frequency:「Run on demand」を選択
※定期的にファイルの同期を行いたい場合は変更する
その他の項目はデフォルトで進めてよいです。

12. 「Set field mappings – optional」をデフォルトのまま「Next」を押下し、「Review and create」の内容を確認して「Add data source」を押下する

これで完成かと思ったらまさかのトラブル

先述した English を選ばないといけない理由はこれだったんですね。
日本語はこの Edition 対応していないのか?という嫌な予感がしましたが、一旦設定変更だけして再実行してみます。

13. Status が「Active」になったら「Sync now」を押下する

同期が完了したので、検証してみたいと思います!

【検証編】Amazon Bedrock ナレッジベースから Amazon Kendra GenAI Index を利用してみた

Amazon Bedrock ナレッジベースの検証をしてみたいと思います!

1. 作成した Amazon Bedrock ナレッジベースコンソールへ遷移する

2. 「ナレッジベースをテスト」の「モデルを選択」を押下する

3. 任意のモデルを選択後、「適用」を押下する

せっかくなので新登場「Amazon Nova Pro」を使ってみようと思います!

4. 任意のプロンプトを入力後、「実行」を押下する

回答が返ってきました!!
今回はデータソースが少なめですので言い切れませんが、日本語でもある程度はいけそうですね!

まとめ

今回は、Amazon Kendra GenAI Index についてコスト面や特長、また使い方などをご紹介しました!
かなり手軽に RAG アーキテクチャに Kendra を組み込めますし、スモールスタートには最適なコスト感なので、色々触ってみようと思います!!

テックブログ新着情報のほか、AWSやGoogle Cloudに関するお役立ち情報を配信中!

フクナガ

2024 Japan AWS Top Engineers / Google Cloud Partner Top Engineer 2025 に選出されました! 生成 AI 多めで発信していますが、CI/CDやIaCへの関心も高いです。休日はベースを弾いてます。

Recommends

こちらもおすすめ

Special Topics

注目記事はこちら