アマゾンケンドラ は、機械学習(ML)を利用した非常に正確で使いやすいエンタープライズ検索サービスです。 ユーザーがケンドラを使用して検索を実行し始めたら、ユーザーが受け取る検索結果を微調整できます。 たとえば、特定のデータソースからの結果に優先順位を付けて、より積極的にキュレートされ、より信頼性の高いものにすることができます。 または、ユーザーが四半期レポートなどのドキュメントを頻繁に検索する場合は、最新の四半期レポートを最初に表示することをお勧めします。
関連性の調整により、Amazon Kendraが検索結果の特定のフィールドまたは属性の重要性を処理する方法を変更できます。 この投稿では、インデックスを手動で調整して最良の結果を得る方法について説明します。
AmazonケンドラのXNUMXつの主要な応答タイプを理解することが重要です。よくある質問へのマッチング、提案された回答を抽出するための読解、およびドキュメントのランキングです。 関連性の調整は、ドキュメントのランキングに影響を与えます。 さらに、関連性の調整は、ユーザーの検索結果に影響を与える多くの要因のXNUMXつにすぎません。 特定の結果を変更することはできませんが、Amazon Kendraが特定のフィールドまたは属性に適用する重みに影響を与えることができます。
ファセット
フィールドに基づいて調整しているため、これらのフィールドをインデックスでファセット化する必要があります。 たとえば、あなたがの信号を後押ししたい場合 author
フィールドを作成する必要があります author
インデックスの検索可能なファセットをフィールドします。 ファセットテーブルフィールドをインデックスに追加する方法の詳細については、 カスタムドキュメント属性の作成.
関連性の調整の実行
関連性のチューニングは、次のようないくつかの方法で実行できます。 AWSマネジメントコンソール Amazon Kendra検索コンソールまたはAmazon Kendra APIを使用します。 チューニングするときに、いくつかの異なるタイプのフィールドを使用することもできます。
- 日付フィールド –最近の結果を後押しする
- 数値フィールド –合計ビュー数などの数値フィールドに基づいてコンテンツを増幅します
- 文字列フィールド –文字列フィールドに基づいて結果を昇格します。たとえば、より信頼できるデータソースからのものとしてタグ付けされたフィールドなどです。
前提条件
この投稿では、次の前提条件を満たす必要があります。環境を設定し、サンプルデータセットをアップロードし、インデックスを作成します。
環境をセットアップする
あなたが持っていることを確認してください AWS CLIがインストールされている。 ターミナルウィンドウを開き、新しい作業ディレクトリを作成します。 そのディレクトリから、次のファイルをダウンロードします。
- 以下から入手できるサンプルデータセット:
s3://aws-ml-blog/artifacts/kendra-relevance-tuning/ml-blogs.tar.gz
- インデックスを作成するPythonスクリプト。次から入手できます。
s3://aws-ml-blog/artifacts/kendra-relevance-tuning/create-index.py
次のスクリーンショットは、データセットとPythonスクリプトをダウンロードする方法を示しています。
データセットのアップロード
このユースケースでは、AWS Machine Learningブログからの投稿の選択であるデータセットを使用します。 独自のデータセットを使用する場合は、さまざまなメタデータがあることを確認してください。 理想的には、さまざまな文字列フィールドと日付フィールドが必要です。 サンプルデータセットでは、さまざまなフィールドに次のものが含まれます。
- 著者名 –投稿者
- 内容型 –ブログの投稿とホワイトペーパー
- トピックとサブトピック –主なトピックは
Machine Learning
およびサブトピックにはComputer Vision
&ML at the Edge
- コンテンツの言語 –英語、日本語、フランス語
- 科学雑誌の引用数 –これらは、この投稿のランダムに作成された数値です
開始するには、XNUMXつ作成します Amazon シンプル ストレージ サービス (Amazon S3)バケット。 インデックスと同じリージョンに作成してください。 インデックスにはXNUMXつのデータソースがあります。
ml-blogs.tar.gz tarball内にはXNUMXつのディレクトリがあります。 tarballを抽出します そして同期 最初のディレクトリのコンテンツ「bucket1」から最初のS3バケット。 次に、2番目のディレクトリ「bucket3」のコンテンツをXNUMX番目のSXNUMXバケットに同期します。
次のスクリーンショットは、データセットをダウンロードしてS3バケットにアップロードする方法を示しています。
インデックスを作成する
任意のコードエディターを使用して、以前にダウンロードしたPythonスクリプト 'create-index.py'を開きます。 バケット名変数を、前に作成したAmazon S3バケットの名前に設定する必要があります。 これらの行のコメントを外してください。
これが完了したら、次のように入力してスクリプトを実行します python create-index.py
。 これは次のことを行います。
- を作成します AWS IDおよびアクセス管理 (IAM)Amazon KendraインデックスがAmazon S3からデータを読み取り、ログを書き込むことを許可するロール Amazon CloudWatchログ
- Amazon Kendraインデックスを作成します
- 3つのAmazon SXNUMXデータソースをインデックスに追加します
- インデックスに新しいファセットを追加します。これにより、データセットのさまざまなフィールドに基づいて検索できます
- データソース同期ジョブを開始します
関連性調整の操作
データに適切にインデックスが付けられ、メタデータがファセット可能になったので、さまざまな設定をテストして、関連性の調整が検索結果にどのように影響するかを理解できます。 次の例では、いくつかの異なる属性に基づいてブーストします。 これらには、データソース、ドキュメントタイプ、鮮度、人気が含まれます。
信頼できるデータソースの強化
最初に検討するチューニングは、データソースに基づいています。 おそらく、適切に管理および管理されているXNUMXつのデータソースと、精度が低く日付が古い情報を持つ別のデータソースがあるとします。 ユーザーが検索を実行するときに最も関連性の高い結果が得られるように、最初のデータソースからの結果に優先順位を付ける必要があります。
インデックスを作成するときに、XNUMXつのデータソースを作成しました。 XNUMXつはすべてのブログ投稿を含みます—これが私たちの主要なデータソースです。 もうXNUMXつのファイルには、レガシーデータソースとして扱っているファイルがXNUMXつだけ含まれています。
インデックス作成スクリプトがフィールドを設定しました _data_source_id
facetable、searchable、displayableであること。 これは、特定のデータソースを後押しするための重要なステップです。
次のスクリーンショットは、Amazon Kendraインデックスのインデックスフィールドを示しています。
- Amazon Kendra検索コンソールで、
Textract
.
結果は次の投稿を参照する必要があります アマゾンテキストラック、スキャンされたドキュメントからテキストとデータを自動的に抽出できるサービス。
次のスクリーンショットは、「Textract」の検索結果を示しています。
また、結果には、 Test_File.txt
。 これは、厳選されていないセカンダリデータソースのファイルです。 この結果が検索結果のどこに表示されるかをメモします。 この結果の優先順位を下げて、主要なソースからの結果を後押ししたいと考えています。
- 選択する チューニング を開く 関連性の調整
- テキストフィールド、展開する 情報元.
- 最初のデータソースのスライダーを右にドラッグして、このソースからの結果を後押しします。 この投稿では、まず次のように設定します 8.
- 別の検索を実行します
Textract
.
XNUMX番目のデータソースからのファイルが検索ランキングの下に移動したことがわかります。
- スライダーを右端までドラッグして、ブーストを次のように設定します 10、検索を再実行してください。
セカンダリデータソースからの結果が検索結果の最初のページから消えたことを確認する必要があります。
次のスクリーンショットは、XNUMXつのデータソースにデータソースフィールドブーストが適用された関連性調整パネルと、セカンダリデータソースからの結果を除く検索結果を示しています。
データソースとしてS3バケットを使用してこのアプローチを使用しましたが、これを使用して、Amazon Kendraで利用可能な任意のデータソースに優先順位を付けることができます。 Amazon S3データレイクからの結果を後押しして、Microsoft SharePointシステムからの結果の優先順位を下げることができます。逆も同様です。
特定のドキュメントタイプの強化
このユースケースでは、AWS機械学習ブログの結果よりもホワイトペーパーの結果を向上させます。 最初にベースライン検索結果を確立します。
- Amazon Kendra検索コンソールを開いて検索
What is machine learning?
上位の結果はホワイトペーパーからの推奨回答ですが、次の結果はおそらくブログ投稿からのものです。
次のスクリーンショットは、「機械学習とは」の検索結果を示しています。
Amazonケンドラに影響を与え、検索結果の上位にホワイトペーパーを押し上げるにはどうすればよいですか?
まず、コンテンツに基づいて検索結果を調整します Type
フィールド。
- Video Cloud Studioで 関連性の調整 Amazon Kendraコンソールのパネル。
- カスタムフィールド、展開する タイプ.
- ドラッグ タイプフィールドブースト このフィールドの関連性を設定するには、スライダーを右端まで移動します 10.
また、特定の重要性を高めたい Type
つまり、 Whitepapers
.
- 詳細 高度なブースティング 選択して 付加価値.
- ホワイトペーパーは、フィールドによってメタデータに示されます
“Type”: “Whitepaper”
の値を入力しますWhitepaper
値をに設定します 10. - 選択する Save.
次のスクリーンショットは、「ホワイトペーパー」ドキュメントタイプにタイプフィールドブーストが適用された関連性調整パネルを示しています。
最大10秒待ってから、検索を再実行してください。 上位の結果はすべてホワイトペーパーであり、ブログ投稿の結果はリストのさらに下に表示されます。
次のスクリーンショットは、「機械学習とは」の検索結果を示しています。 タイプフィールドブーストが適用されています。
- を返す タイプフィールドブースト 設定を通常の値に戻します。
ドキュメントの新しさに基づくブースト
数十年にわたるドキュメントの大規模なアーカイブがあるかもしれませんが、より最近の回答がより有用です。 たとえば、ユーザーが「ITヘルプデスクはどこですか?」 あなたは彼らが最新の答えを与えられていることを確認したいのです。 これを実現するには、日付属性に基づいて鮮度を上げることができます。
この使用例では、検索結果をブーストして、より最近の投稿を含めます。
- Amazon Kendra検索コンソールで、
medical
.
最初の結果は Amazon Comprehend MedicalおよびAmazon Rekognitionの助けを借りて医療画像の匿名化、19年2019月XNUMX日公開。
次のスクリーンショットは、「medical」の検索結果を示しています。
- Video Cloud Studioで 関連性の調整 再びパネル。
- ソフトウェア設定ページで、下図のように 日付 タブ、開く カスタムフィールド.
- を調整する 鮮度アップ of 公開日 〜へ 10.
- もう一度検索
medical
.
今回は最初の結果は Amazon Transcribe Medicalを使用してCOVID-19関連用語の音声テキストの精度を向上させる、15年2020月XNUMX日発行。
次のスクリーンショットは、鮮度の向上が適用された「medical」の検索結果を示しています。
展開することもできます 高度なブースティング 特定の期間の結果を後押しします。 たとえば、四半期ごとの業績を発表する場合、機密性の範囲を過去3か月に設定することができます。 これにより、前の四半期にリリースされたドキュメントが強化され、ユーザーが見つけやすくなります。
次のスクリーンショットは、鮮度の向上に関連する関連性調整パネルのセクションを示しており、感度の範囲をキャプチャする感度スライダーを示しています。
ドキュメントの人気に基づいたブースティング
最後のシナリオは、数値に基づく調整です。 この使用例では、各投稿にランダムな番号を割り当てて、科学ジャーナルで受け取った引用数を表します。 (これらは単なる乱数であり、実際の引用番号ではないことを繰り返し説明することが重要です!)最も頻繁に引用されている投稿を表示する必要があります。
- 検索を実行
keras
は、MLでよく使用されるライブラリの名前です。
Amazon Kendraからの推奨回答が表示される場合がありますが、上位の結果(およびそれらの合成引用数)には以下が含まれている可能性があります。
- ソフトウェア設定ページで、下図のように 関連性の調整 パネル、 数値の タブ、スライダーを引く 引用 ずっと 10.
- 選択 上昇 より多くの引用がある結果を後押しします。
次のスクリーンショットは、引用のカスタムフィールドに数値ブーストが適用された関連性調整パネルを示しています。
- 検索する
keras
もう一度、どの結果が表示されるか確認してください。
検索結果の上部は次のとおりです。
Amazonケンドラはより多くの引用で結果を優先しました。
まとめ
この投稿では、関連性チューニングを使用してユーザーのAmazon Kendra検索結果を調整する方法を示しました。 小さくてやや合成されたデータセットを使用して、関連性の調整がどのように機能するかを説明しました。 実際のデータセットはより複雑であるため、ユーザーと協力して、優先したい検索結果のタイプを理解することが重要です。 関連性の調整により、Amazon Kendraでエンタープライズ検索から最大の価値を引き出すことができます。 Amazon Kendraの詳細については、次を参照してください。 AWS re:Invent 2019 – Andy Jassyによる基調講演 ユーチューブで、 Amazonケンドラのよくある質問, アマゾンケンドラとは何ですか?
サンプルデータセットと技術レビューを提供してくれたTapodipta Ghoshに感謝します。 この投稿は、彼の協力なしには作成できなかったでしょう。
著者について
ジェームズキングスミル オーストラリアの公共部門チームのソリューションアーキテクトです。 彼は公共部門の顧客が変革、自動化、およびセキュリティの目標を達成するのを支援することに長年の関心を持っています。 彼の余暇には、シドニー近くのブルーマウンテンでキャニオニングを見つけることができます。
ソース:https://aws.amazon.com/blogs/machine-learning/relevance-tuning-with-amazon-kendra/