Upgrade to Pro — share decks privately, control downloads, hide ads and more …

アプリケーションにKnowledge Bases for Amazon Bedrock を組み込む

アプリケーションにKnowledge Bases for Amazon Bedrock を組み込む

アプリケーションにKnowledge Bases for Amazon Bedrock を組み込む

Kota Sasaki

January 27, 2024
Tweet

More Decks by Kota Sasaki

Other Decks in Technology

Transcript

  1. © NEC Solution Innovators, Ltd. 2023 NEC Solu9on Innovators Internal

    Use Only アプリケーションに Knowledge Bases for Amazon Bedrock を組み込む NECソリューションイノベータ株式会社 佐々木 航太 地方エンジニアのためのAWSハンズオン 〜生成系AIを使った開発力強化のポイント〜
  2. © NEC Solu9on Innovators, Ltd. 2023 NEC Solution Innovators Internal

    Use Only 3 n 佐々木 航太(Kota Sasaki) NECソリューションイノベータ株式会社 北海道支社 クラウド・地域ソリューショングループ シニアプロフェッショナル・ビジネスプロデューサー #39歳 #稚内出⾝ #野球 #AWS歴9年 #ネットワーク #セキュリティ #新製品好き #Soracom 自己紹介
  3. 0. 前提学習 1. 初期作業 2. Knowledge Bases前確認 3. Knowledge Bases作成

    4. アプリに組み込んでみる 5. 後片付け 本日の流れ
  4. © NEC Solu9on Innovators, Ltd. 2023 NEC Solu9on Innovators Internal

    Use Only 6 本ハンズオンで学習できること ・ Knowledge Bases for Amazon Bedrockとはを学習する ・ Amazon Bedrockと Knowledge Bases for Amazon Bedrockの違いを知る ・ Knowledge Bases for Amazon Bedrockを構築できるようになる ・ Knowledge Bases for Amazon Bedrockをアプリに組み込めるようになる
  5. © NEC Solu9on Innovators, Ltd. 2023 NEC Solu9on Innovators Internal

    Use Only 7 最終的に出来上がるアーキテクチャ
  6. © NEC Solu9on Innovators, Ltd. 2023 NEC Solu9on Innovators Internal

    Use Only 8 Knowledge Bases for Amazon Bedrockとは 検索拡張(RAG)の仕組みを簡単に構築/導入できる サービスです。 わかりやすくいうと、 Amazon Bedrockにオリジナデー タル(企業独自データ) を生成(検索)対象にできる仕 組み
  7. © NEC Solu9on Innovators, Ltd. 2023 NEC Solution Innovators Internal

    Use Only 10 1.初期作業 1-1. AWSにログインする 1-2. リージョンを「バージニア」に変更する ※2024年1月24日時点では、Knowledge Bases for Amazon Bedrockは バージニアとオレゴンしか利用できないため 1-3.検索にBedrockを入力し、 Amazon Bedrock を開く
  8. © NEC Solution Innovators, Ltd. 2023 NEC Solution Innovators Internal

    Use Only 11 1.初期作業 1-4. (本ハンズオンでは実施済みのためスキップしてください)Amazon Bedrock のModel Accessを開く。
  9. © NEC Solu9on Innovators, Ltd. 2023 NEC Solution Innovators Internal

    Use Only 12 1.初期作業 1-5-1. (本ハンズオンでは実施済みのためスキップ)AnthropicのClaudeとClaude Instantを有効にする。 下記内容で表示されてる場 合はすでに利用可能な状態 なので本操作は不要です。 2. Knowledge Bases 前確認ま でスキップしてください
  10. © NEC Solution Innovators, Ltd. 2023 NEC Solution Innovators Internal

    Use Only 13 1.初期作業 1-5-2. (本ハンズオンでは実施済みのためスキップ)AnthropicのClaudeとClaude Instantを有効にする。
  11. © NEC Solu9on Innovators, Ltd. 2023 NEC Solution Innovators Internal

    Use Only 14 1.初期作業 1-5-3. (本ハンズオンでは実施済みのためスキップ)AnthropicのClaudeとClaude Instantを有効にする。 会社名 会社のURL 会社の業種 利用するのは誰か? 社内ユーザ 外部ユーザ どのような目的で使うか 使い方の説明
  12. © NEC Solu9on Innovators, Ltd. 2023 NEC Solu9on Innovators Internal

    Use Only 16 2. Knowledge Bases前確認 2-1. (前準備)他の参加者と被らない<識別子>を決めましょう ※後ほど作成するリソース名が被らないように使います。 例:sasaki-know-test-20240127 注意! 識別子はS3のバケット名にも使うので、命名規則に気をつけてください。 (半角ハイフンと英数字小文字で日付なんか入れると被らないかと)
  13. © NEC Solution Innovators, Ltd. 2023 NEC Solu9on Innovators Internal

    Use Only 17 2. Knowledge Bases前確認 2-2. Amazon Bedrockに聞いても正しい回答とならないことを確認しよう。
  14. © NEC Solu9on Innovators, Ltd. 2023 NEC Solu9on Innovators Internal

    Use Only 18 2. Knowledge Bases前確認 2-3-1. モデルを先ほど有効にしたClaudeを選択
  15. © NEC Solution Innovators, Ltd. 2023 NEC Solu9on Innovators Internal

    Use Only 19 2. Knowledge Bases前確認 2-3-2. モデルを先ほど有効にしたClaudeを選択
  16. © NEC Solu9on Innovators, Ltd. 2023 NEC Solu9on Innovators Internal

    Use Only 20 2. Knowledge Bases前確認 2-4-1. デフォルトのClaudeでは検索できないことを確認してみよう 今回は「 VoiceGraphyについて教えてください」を検索してみてください。 補足: VoiceGraphyはNECが2019 年に販売を停止した製 品で、音声認識をして 議事録の作成を支援し てくれるソフトです。 本来は社内規約などが 良いですが、お題を共 通化するために VoiceGraphyとさせてく ださい
  17. © NEC Solution Innovators, Ltd. 2023 NEC Solu9on Innovators Internal

    Use Only 21 2. Knowledge Bases前確認 2-4-2. 最もらしい答えが返ってきてますが、求めてる答えではなく、検索した限りは存在しない スタートアップ企業の内容が返却されます。
  18. © NEC Solu9on Innovators, Ltd. 2023 NEC Solu9on Innovators Internal

    Use Only 22 2. Knowledge Bases前確認 2-4-3. 補足 ChatGPTはわからないと回答 Google検索の生成AIは求めてる回答 (リアルにWebを検索してる)
  19. © NEC Solu9on Innovators, Ltd. 2023 NEC Solution Innovators Internal

    Use Only 24 3. Knowledge Bases作成 3-1-1. 最初に検索対象ドキュメントを格納するS3を作成
  20. © NEC Solu9on Innovators, Ltd. 2023 NEC Solution Innovators Internal

    Use Only 25 3. Knowledge Bases作成 3-1-2. 最初に検索対象ドキュメントを格納するS3を作成
  21. © NEC Solu9on Innovators, Ltd. 2023 NEC Solution Innovators Internal

    Use Only 26 3. Knowledge Bases作成 3-1-3. 最初に検索対象ドキュメントを格納するS3を作成 識別子
  22. © NEC Solu9on Innovators, Ltd. 2023 NEC Solution Innovators Internal

    Use Only 27 3. Knowledge Bases作成 3-2-1.検索対象データを事前格納 ※事前に渡された「VoiceGraphyユーザーズマニュアル.docx」を準備してください。
  23. © NEC Solu9on Innovators, Ltd. 2023 NEC Solution Innovators Internal

    Use Only 28 3. Knowledge Bases作成 3-2-2.検索対象データを事前格納 ※事前に渡された「VoiceGraphyユーザーズマニュアル.docx」を準備してください。 VoiceGraphyユーザーズマニュアル.docx
  24. © NEC Solu9on Innovators, Ltd. 2023 NEC Solution Innovators Internal

    Use Only 29 3. Knowledge Bases作成 3-2-3.検索対象データを事前格納 ※事前に渡された「VoiceGraphyユーザーズマニュアル.docx」を準備してください。
  25. © NEC Solu9on Innovators, Ltd. 2023 NEC Solution Innovators Internal

    Use Only 30 3. Knowledge Bases作成 3-3-1. Knowledge Bases for Amazon Bedrockを作成する
  26. © NEC Solu9on Innovators, Ltd. 2023 NEC Solution Innovators Internal

    Use Only 31 3. Knowledge Bases作成 3-3-2. Knowledge Bases for Amazon Bedrockを作成する
  27. © NEC Solu9on Innovators, Ltd. 2023 NEC Solution Innovators Internal

    Use Only 32 3. Knowledge Bases作成 3-3-3. Knowledge Bases for Amazon Bedrockを作成する 識別子
  28. © NEC Solu9on Innovators, Ltd. 2023 NEC Solution Innovators Internal

    Use Only 33 3. Knowledge Bases作成 3-3-4. Knowledge Bases for Amazon Bedrockを作成する 識別子
  29. © NEC Solu9on Innovators, Ltd. 2023 NEC Solution Innovators Internal

    Use Only 34 3. Knowledge Bases作成 3-3-4. Knowledge Bases for Amazon Bedrockを作成する 作成した識別子のS3 を選択する
  30. © NEC Solu9on Innovators, Ltd. 2023 NEC Solution Innovators Internal

    Use Only 35 3. Knowledge Bases作成 3-3-4. Knowledge Bases for Amazon Bedrockを作成する 識別子
  31. © NEC Solu9on Innovators, Ltd. 2023 NEC Solution Innovators Internal

    Use Only 36 3. Knowledge Bases作成 3-3-5. Knowledge Bases for Amazon Bedrockを作成する
  32. © NEC Solu9on Innovators, Ltd. 2023 NEC Solution Innovators Internal

    Use Only 37 3. Knowledge Bases作成 3-3-6. Knowledge Bases for Amazon Bedrockを作成する
  33. © NEC Solu9on Innovators, Ltd. 2023 NEC Solution Innovators Internal

    Use Only 38 3. Knowledge Bases作成 3-3-6. 補足 検索対象となるVector データの格納先は、 先が選択可能です。 今回は手順を簡略化さ せるために左記での Vectorデータの格納先は 作成しません。
  34. © NEC Solu9on Innovators, Ltd. 2023 NEC Solution Innovators Internal

    Use Only 39 3. Knowledge Bases作成 3-3-7. Knowledge Bases for Amazon Bedrockを作成する ボタンを押したあと OpenSearchServerlessが作成され るため数分時間がかかります。
  35. © NEC Solu9on Innovators, Ltd. 2023 NEC Solution Innovators Internal

    Use Only 40 3. Knowledge Bases作成 3-4. S3に格納したデータをKnowledge Bases(OpenSearchSeverless)に同期する ボタンを押したあとデータ の構築に数分かかります。 後ほど上記を使うので、メ モしておいてくださ い。・・・メモ1
  36. © NEC Solu9on Innovators, Ltd. 2023 NEC Solution Innovators Internal

    Use Only 41 3. Knowledge Bases作成 3-5-1. 検索結果が改善されたか確認する Select Modelと表示されてる 場合は、Claude v2.1を選択 してください。
  37. © NEC Solu9on Innovators, Ltd. 2023 NEC Solution Innovators Internal

    Use Only 42 3. Knowledge Bases作成 3-6. Knowledge Bases for Amazon Bedrockで同じキーワードを検索してみる 「 VoiceGraphyについて教えてください」
  38. © NEC Solu9on Innovators, Ltd. 2023 NEC Solution Innovators Internal

    Use Only 43 3. Knowledge Bases作成 3-7. 意図したデータが返却されたことが確認できました ここを押すことでどこの 文章から参照してきたの かを確認できます。
  39. © NEC Solu9on Innovators, Ltd. 2023 NEC Solu9on Innovators Internal

    Use Only 45 4.アプリに組み込んでみる 4-1-1. (本ハンズオンでは実施済みのためスキップ)事前準備としてIAMロールを作成します。
  40. © NEC Solu9on Innovators, Ltd. 2023 NEC Solu9on Innovators Internal

    Use Only 46 4.アプリに組み込んでみる 4-1-2. (本ハンズオンでは実施済みのためスキップ)事前準備としてIAMロールを作成します。
  41. © NEC Solu9on Innovators, Ltd. 2023 NEC Solu9on Innovators Internal

    Use Only 47 4.アプリに組み込んでみる 4-1-3. (本ハンズオンでは実施済みのためスキップ)事前準備としてIAMロールを作成します。
  42. © NEC Solu9on Innovators, Ltd. 2023 NEC Solu9on Innovators Internal

    Use Only 48 4.アプリに組み込んでみる 4-1-4.(本ハンズオンでは実施済みのためスキップ)事前準備としてIAMロールを作成します。
  43. © NEC Solu9on Innovators, Ltd. 2023 NEC Solu9on Innovators Internal

    Use Only 49 4.アプリに組み込んでみる 4-1-5.(本ハンズオンでは実施済みのためスキップ)事前準備としてIAMロールを作成します。 識別子
  44. © NEC Solu9on Innovators, Ltd. 2023 NEC Solu9on Innovators Internal

    Use Only 50 4.アプリに組み込んでみる 4-2. (本ハンズオンでは実施済みのためスキップ)現状のLambda標準のboto3にはKnowledge Bases for Amazon BedrockのrunYmeが含まれていないためLambda Layerを使って追加します。 mkdir python pip3 install boto3 -t ./python zip -r ./python.zip . aws lambda publish-layer-version --layer-name <識別子> --zip-file fileb://python.zip --compatible-runtimes python3.12
  45. © NEC Solu9on Innovators, Ltd. 2023 NEC Solu9on Innovators Internal

    Use Only 51 4.アプリに組み込んでみる 4-3-1. Lambda関数を作成します
  46. © NEC Solu9on Innovators, Ltd. 2023 NEC Solu9on Innovators Internal

    Use Only 52 4.アプリに組み込んでみる 4-3-2. Lambda関数を作成します
  47. © NEC Solu9on Innovators, Ltd. 2023 NEC Solu9on Innovators Internal

    Use Only 53 4.アプリに組み込んでみる 4-3-3. Lambda関数を作成します 識別子 識別子 今回のハンズオンではロールは 前のセッションで作成した Lambdaのロールを指定してくだ さい 今回はレイヤーがPython 3.9な ので3.9を指定してください
  48. © NEC Solu9on Innovators, Ltd. 2023 NEC Solu9on Innovators Internal

    Use Only 54 4.アプリに組み込んでみる 4-3-4. Lambda関数のタイムアウト値を3秒から30秒に変更します。 ※今回は応答に20秒ぐらいかかるため
  49. © NEC Solu9on Innovators, Ltd. 2023 NEC Solu9on Innovators Internal

    Use Only 55 4.アプリに組み込んでみる 4-3-5. 作成したLambda Leyerを追加します
  50. © NEC Solu9on Innovators, Ltd. 2023 NEC Solu9on Innovators Internal

    Use Only 56 4.アプリに組み込んでみる 4-3-5. 作成したLambda Leyerを追加します 識別子 今回のハンズオンではレイヤー は前のセッションで作成したレ イヤーを指定してください
  51. © NEC Solu9on Innovators, Ltd. 2023 NEC Solu9on Innovators Internal

    Use Only 57 4.アプリに組み込んでみる 4-6. ソースをコピーする import json import boto3 bedrock_agent = boto3.client('bedrock-agent-runtime') def lambda_handler(event, context): model_id = "anthropic.claude-v2:1" model_arn = f'arn:aws:bedrock:us-east-1::foundation-model/{model_id}' knowledgeBase_id = "XXXXXXXX" #メモ1を設定する # クエリパラメータを取得 query_params = event.get('queryStringParameters') # クエリパラメータが存在するか確認し、値を取得 param_value = "VoiceGraphyについて教えてください" if query_params: param_value = query_params.get('prompt', '') response = bedrock_agent.retrieve_and_generate( input={ 'text': param_value }, retrieveAndGenerateConfiguration={ 'type': 'KNOWLEDGE_BASE', 'knowledgeBaseConfiguration': { 'knowledgeBaseId': knowledgeBase_id, 'modelArn': model_arn } }) # 実行結果からテキストのみを変数に入れて、画面に出力する generated_text = response['output']['text'] print(generated_text) # 返却値 return { 'statusCode': 200, 'headers': { 'Access-Control-Allow-Origin': '*', 'Content-Type': 'application/json' }, 'body': json.dumps({ 'message': generated_text}, ensure_ascii=False) } ここに赤字部分を 修正しコピーペー ストする
  52. © NEC Solu9on Innovators, Ltd. 2023 NEC Solu9on Innovators Internal

    Use Only 58 4.アプリに組み込んでみる 4-7-1. APIGatewayに作成したLambdaを紐づける
  53. © NEC Solu9on Innovators, Ltd. 2023 NEC Solu9on Innovators Internal

    Use Only 59 4.アプリに組み込んでみる 4-7-2. APIGatewayに作成したLambdaを紐づける Cloud9で作成してSAMのアウト プットから自分のIDのものを探 してください
  54. © NEC Solu9on Innovators, Ltd. 2023 NEC Solu9on Innovators Internal

    Use Only 60 4.アプリに組み込んでみる 4-7-3. APIGatewayに作成したLambdaを紐づける
  55. © NEC Solu9on Innovators, Ltd. 2023 NEC Solu9on Innovators Internal

    Use Only 61 4.アプリに組み込んでみる 4-7-4. APIGatewayに作成したLambdaを紐づける
  56. © NEC Solu9on Innovators, Ltd. 2023 NEC Solu9on Innovators Internal

    Use Only 62 4.アプリに組み込んでみる 4-7-5. APIGatewayに作成したLambdaを紐づける
  57. © NEC Solu9on Innovators, Ltd. 2023 NEC Solu9on Innovators Internal

    Use Only 63 4.アプリに組み込んでみる 4-7-6. APIGatewayに作成したLambdaを紐づける
  58. © NEC Solu9on Innovators, Ltd. 2023 NEC Solu9on Innovators Internal

    Use Only 64 4.アプリに組み込んでみる 4-7-7. APIGatewayに作成したLambdaを紐づける
  59. © NEC Solu9on Innovators, Ltd. 2023 NEC Solu9on Innovators Internal

    Use Only 65 4.アプリに組み込んでみる 4-7-8. APIGatewayに作成したLambdaを紐づける
  60. © NEC Solu9on Innovators, Ltd. 2023 NEC Solu9on Innovators Internal

    Use Only 66 4.アプリに組み込んでみる 4-8. 画面から動作確認する。 画面で動作確認するため、API GatewayのURL パスを変更します。 ・「ui.html」をダブルクリック ・sendDataのurlのパスを「bedrock」から「knowledges」に変更 ※上記以外は変更しないでください。
  61. © NEC Solu9on Innovators, Ltd. 2023 NEC Solu9on Innovators Internal

    Use Only 68 5.後片付け 5. (今回はAWSの問題により運営側で対応)下記リソースを削除する ※注意 OpenSearchServerlesは個別で削除が必要です。料金が高めなので注意してください ・Knowledge baseを削除する ・OpenSearchServerlessを削除する ・Lambdaを削除する ・LambdaLeyerを削除する ・IAMロールを削除する ・S3を削除する