概要
Kendra は、自然言語処理と機械学習を使用した検索サービスです。
公式 doc: https://docs.aws.amazon.com/kendra/latest/dg/what-is-kendra.html
従来のキーワード検索と異なり、セマンティック検索を行って、ユーザーにより価値のある検索結果を提供します。
Kendra で実行できる検索クエリは、以下の 3 種類です。
- Factoid 型質問: 人名や地名などの答えが決まっているものを問う単純な質問です。
例: 「~は何歳ですか?」「~という歌詞の曲は何ですか?」など - Descriptive 型質問: non-factoid 型の質問です。定義や理由、方法などが回答となる質問が該当します。得られる回答も文章での回答が想定されます。
例: 「~するにはどうすればいいですか?」「~となるのはなぜですか?」など - キーワードと自然言語の質問: 検索の意図や範囲が不明なうえ、単語のみの質問などです。Kendra では検索ワードを元にその背景を推測し、関連しそうな情報を返却します。
例: 「辛い メニュー」「高い 服」など
用語
Kendra の利用方法を簡潔にまとめると、ドキュメントを追加したインデックスに対してクエリを実行して検索結果を取得するといった流れになります。
- インデックス
- ドキュメントのコンテンツを検索できるように構造化して格納するコンポーネントです。
- ユーザーからのクエリを受けて検索を行い、結果を返却します。
- ドキュメント
- Kendra で検索対象となるコンテンツのことをドキュメントと呼びます。
- ドキュメントをインデックスに追加する方法は、API を呼び出して個別に手動で追加する方法とデータソースを利用してデータリポジトリのコンテンツを同期する方法があります。
- ドキュメントとしてサポートされている拡張子は、以下のドキュメントに記載されています。
https://docs.aws.amazon.com/kendra/latest/dg/index-document-types.html
- フィールド (https://k-log.tech/aws/ml/kendra/attributes-or-fields/)
- ドキュメントはフィールドと呼ばれるメタデータを持ち、検索に利用できます。
- フィールドには、もともとのドキュメントで設定されているメタデータに該当するドキュメントフィールドと Kendra インデックス内で利用されるインデックスフィールドの 2 種類があります。
- 検索に利用されるのはインデックスフィールドで、ドキュメントをインデックスに追加する際に、ドキュメントフィールドとインデックスフィールドのマッピングを設定する必要があります。
- データソース
- インデックスに追加するコンテンツを格納してあるデータリポジトリです。対応するサービスのコネクタを Kendra インデックスに設定することで、データソースに保存されているドキュメントをクロールして、インデックスに同期することができます。
- S3 やRDS のような AWS サービスだけでなく、OneDrive や Google Drive などの SaaS もデータソースに設定できます。
設定可能なデータソース: https://docs.aws.amazon.com/kendra/latest/dg/hiw-data-source.html
- クエリ
- Kendra に対して発行する検索クエリには、自然言語を使用できます。
- Kendra ではドキュメントの内容だけでなく、ドキュメントに関して提供されたすべての情報を使用して、ドキュメントがクエリに関連しているか判断し、レスポンスを返却します。
- クエリ結果に対してフィルターを設定し、必要な回答のみを取得するように制御することもできます。
操作
Kendra の動作を理解するための一連の操作を試しました。
Kendra の基本操作
やること Kendra インデックスを作成して S3 データソースのドキュメントを同期し、検索を行うまでの操作を確認します。 インデックスの作成 Kendra のコンソールを開き、"Create an Index" をクリックしてインデック...
管理
Edition
Kendra には、Developer Edition と Enterprise Edition の 2 つのバージョンがあります。どちらの Edition でも利用できる機能に差はありませんが、追加可能なドキュメントの数や処理可能なクエリの数に差があります。
Kendra の利用方法や動作の確認には Developer Edition を使用し、本番環境には Enterprise Edition を使用するような使い分けになるかと思います。
What is Amazon Kendra? - Amazon Kendra
Amazon Kendra is an Amazon Web Services service that supports natural language and intelligent search across documents. ...
データソース
Kendra では、様々な SaaS をデータソースとして扱うことができます。
各データソースにおける同期手順で試したものをまとめておきます。