インデックスを作成してクエリを実行してみた(Amazon Kendra)

  • AWSアカウントを持っていること

ステップ1:IAMユーザーにAmazonKendraFullAccessをアタッチする

任意のIAMユーザーを選択し、「許可を追加」を選択します。

image.png

「AmazonKendraFullAccess」と検索し、「次」へを選択します。

image.png

「許可を追加」を選択します。

image.png
これで任意のIAMユーザーにAmazonKendraFullAccessがアタッチされました。

ステップ2:Amazon Kendra インデックスを設定する

Amazon Kendra console にアクセスし、「Create an Index」を選択します。

image.png
以下のように、Index nameとIAM role、Role nameを入力します。各項目名はご自身で

決めてください。入力したら「Next」を選択します。

image.png

次の画面では、何も変更せずに「Next」を選択します。

image.png

「Developer editions」を選択し、「Next」を選択します。

image.png

「Create」を選択します。

image.png

Statusが「Active」になったら、作成完了です。

image.png

ステップ3:IAMロールを更新する

IAM console で先ほど作成したRoleを選択し、「ポリシーをアタッチ」を選択します。

image.png

今回はS3を使うため、「AmazonS3ReadOnlyAccess」と検索し、ヒットしたポリシーにチェックを入れた状態で、「許可を追加」を選択します。

image.png
許可ポリシーに追加されました。

許可ポリシーに追加されました。

image.png

ステップ4:データソースへのS3コネクタを構成する

まずは、データソースを作成します。作成したインデックスの画面に移動し、「Data management」の「Data sources」タブを選択すると以下のような画面が表示されるので、「Add data sources」を選択します。

image.png

Sample AWS documentationの「Add dataset」を選択します。

image.png

Data sourse nameを入力し、Default Languageは「Japanese(ja)」を選択し、「Add data sourse」します。

image.png
データソースができるまで少し時間がかかるので、その間にクエリ検索に使うデータをS3にアップロードしましょう。

まずは、使用データを準備します。

検索インテントを使用してAmazon KendraとAmazon Lex を統合する に記載されているサンプルデータである、 help-desk-faq.csv をダウンロードします。

このサンプルデータは英語なので、ChatGPTを使って日本語化します。

image.png
以下をコピーされても構いません。
1Question,Answer,URL2ヘルプデスクはどこにありますか?,2階、201号室(エレベーターを降りた後、右に2回曲がってください)。,<document url>3ヘルプデスクの開館時間はいつですか?,営業時間は午前11時から午後2時までです。,<document url>4ラップトップの修理にはどのくらい時間がかかりますか?,ラップトップの修理には通常2時間かかります。,<document url>5スクリーンの修理にはどのくらい時間がかかりますか?,ラップトップのスクリーン修理には通常4時間かかります。,<document url>6バッテリーの修理にはどのくらい時間がかかりますか?,ラップトップのバッテリー修理は通常約1時間かかります。,<document url>7オーディオ問題の修理にはどのくらい時間がかかりますか?,ラップトップのオーディオ修理は通常15-30分かかります。,<document url>8近くにカフェはありますか?,3階にあり、毎日午前8時から午後4時まで営業しています。,<document url>9ラップトップ修理に何を持って行く必要がありますか?,"ラップトップ修理の際は、社員証、ラップトップ、VPNフォブをお持ちください。",<document url>10スクリーン修理に何を持って行く必要がありますか?,"ラップトップスクリーン修理の際は、社員証、ラップトップ、VPNフォブをお持ちください。",<document url>11バッテリー修理に何を持って行く必要がありますか?,"ラップトップバッテリー修理の際は、社員証、ラップトップ、充電ケーブルとアダプター、VPNフォブをお持ちください。",<document url>12オーディオ修理に何を持って行く必要がありますか?,"ラップトップオーディオ修理の際は、社員証、ラップトップ、ヘッドフォン/イヤーポッド、VPNフォブをお持ちください。",<document url>13新しいラップトップに何を持って行く必要がありますか?,"新しいラップトップを受け取る際は、社員証とVPNフォブをお持ちください。",<document url>14ラップトップが修理中の間、ドキュメントにどのようにアクセスしますか?,Amazon Workdocsを使用してドキュメントにアクセスできます。,<document url>

これでデータの準備は完了です。

次に、S3のページに移動し、「バケットを作成」を選択します。

image.png

AWSリージョンは「米国東部(バージニア北部)us-east-1、バケットタイプは「汎用」を選択し、バケット名を入力してバケットを作成します。

image.png

作成したバケットに移動し、「アップロード」を選択します。

image.png

先ほど作成したhelp-desk-faq.csvをアップロードします。

image.png

ステップ4:FAQを追加する

Amazon Kendraの「Data management」の「FAQ」タブから「Add FAQ」を選択します。

image.png

FAQ nameを入力し、Default languageは「Japanese(ja)」を選択します。

FAQ file formatは「.csv file -Basic」を選択し、S3で先ほどアップロードしたhelp-desk-faq.csvのパスを指定し、「Add」を選択します。

image.png

Statusが「Active」になったら追加完了です。

image.png

ステップ5:インデックスをクエリする

「Data management」の「Search indexed content」タブに移動します。

image.png

右側のSettingsのDefault language of sourse documentsから「Japanese(ja)」を選択します。

その後、「ヘルプデスクはどこにありますか?」というクエリを投げると、以下のように結果が返ってきます。

ファイルの内容を元にして回答できています。

image.png

フィニッシュ

お疲れ様でした。

値段が高いので、継続的に使用しない場合は今回作成したリソースは削除しましょう。

以下のXでも情報発信してます!

参考文献

この記事を書いた人

aws-recipe-user