エンジニアのyokomachiです。
今回は先日GAとなったAmazon LexのQnAIntent機能を試してみたいと思います。
Amazon Lex の QnAIntent が一般提供開始
これまでLexからBedrockのモデルにアクセスするためにはLambdaなどを使用していましたが、
(参考:【Amazon Connect】Bedrock+Lex+LambdaでAIチャットボットを構築する)
QnAIntentを使うことでLexとBedrockを直接連携できるようになります。
併せてBedrockのナレッジベースやKendraなどと連携することでRAG(検索拡張生成)を構築し、専門領域や社内資料などをベースとした回答までノーコードで自動化できるようになりました。
現在QnAIntentは米国東部 (バージニア北部) および米国西部 (オレゴン) リージョンにおいて英語(US)のインテントで使用可能で、
対応しているLLMモデルはAnthropic Claude V2 と Anthropic Claude Instantになります。
高性能と話題のClaude V3への対応も今後期待したいところです。
Bedrockの構築
モデルアクセスの有効化
まずはBedrockで今回使用するLLMモデルへのアクセスを有効化します。
今回はLexで利用するためClaude V2へのアクセスを有効化します。
また、BedrockのKnowledge baseでデータソースのRAGを構築するためにTitan Embeddings G1 – Textへのアクセスも有効化します。
ナレッジベースの作成
RAGのベースとしてBedrockのKnowledge baseを利用します。
今回は弊社製品のSylphina(Sylphina | Amazon Connect拡張クラウドサービス)の製品ページをデータソースとするため、PDF化してS3に保存しておきました。
以下の設定でKnowledge baseを作成しました。
そのままBedrockのコンソールで試してみましたが、ちゃんと応答できています。
Lexの構築
QnAIntentの作成
続いてLexでQnAIntentを作成し、Bedrockと連携させます。
新規で空のボット作成後、英語(US)で新規のインテントを作成します。
組み込みインテントとして「AMAZON.QnAIntent」を選択してインテントを作成します。
作成したインテントにQnA configurationという設定ブロックがあるので、
そこで利用するLLMモデルとKnowledge baseのIDを指定します。
以上で構築は完了です。
Lexのコンソールでテストしてみます。
Knowledge baseにインポートしたドキュメントは日本語でしたが、QA対応は英語でも日本語でも回答できていますね。
ここからさらに拡張したい場合には、Amazon Connectと連携させて音声チャネルに対応することも可能です。
ノーコードでQAボットを構築できるようになったことで、より生成AIを手軽に試しやすくなりました。
今回構築した内容だけでも、試験的に導入するには十分な精度に感じられます。
お片付け
上記で作成したリソースを削除する場合、LexとBedrockのKnowledge base、S3のデータはそのままコンソール上で削除して問題ありません。
ただし、Knowledge baseの作成時に裏でOpensarch Serverlessのコレクションが作成されています。
これはKnowledge baseを削除しても残っているので手動で削除する必要があります。
放っておくとそれなりの料金が発生するようなので忘れずに削除しておきましょう。
参考
Amazon Bedrock のナレッジベース – Amazon Bedrock
[プレビュー]Amazon Lexでは、ノーコードで簡単に、RAGのチャットボットを構築できるようになりました #AWSreInvent | DevelopersIO
- おすすめガジェット紹介!2024年12月編 - 2024-12-21
- Amazon ConnectでNGワードをリアルタイムに検知してSlackに通知する - 2024-12-16
- AWS Amplify AI KitでAIチャットアプリを爆速で作ってみる - 2024-12-14
- AWS LambdaをC#で実装する(ついでにラムダ式を書く) - 2024-12-09
- Amazon Connect Tasksの手動作成と自己割り当て、タスクテンプレートを試してみる - 2024-12-07