作成手順
この『その1』では下の1,2だけ。
- VPC(virtual private cloud)作成
- Aurora Serverless v2でPostgreSQL作成
- (ec2インスタンス作成<==不要だったので使わない(参考にメモとして残した)
- s3に読み込ますpdfを.mdに変換してUploadする
- bedrockでvector storeを作り、そのapiも作る
- bedrockでllm apiを作る
- lambdaで上記2つのapiを使って簡単な質問を送る
- Webページに入力された質問をLambdaに送るAPI GatewayでREST APIを作る
- AmplifyにAngularベースのWebページを作り、REST APIに質問を送る様にする
s3にファイルをUploadする
s3にbucketを作成して、その下に7つのpdfファイルをUploadしました。
これだけです。
BedrockでVector store作成
- Bedrockページ左メニューの『Knowledge Bases』に入り
- 『Create』〜『Knowledge Base with vector store』
- 『Knowledge Base name』を入れる
- 私の場合。『MyKnowlegeBase–FP0H』とした
- IAM permissionsで『Create and use a new service role』を選択し、Service role nameはそのまま『AmazonBedrockExecutionRoleForKnowledgeBase_dylea』とした。
- 『Data source details』で『Amazon s3』を選択し『Next』
- 画面の左下の『Add data source』をします。
- Data sourceは1つのファイルで良いし、ディレクトリで良い。 ディレクトリの場合は、その下のファイル全てが対象になります。 ディレクトリを指定していると後ほど、Add documentで10個までファイルを追加できます。(ファイルはData sourceと同じディレクトリ内である必要があります)
- 今回はs3をData sourceにしていますが、Customで選択していると
- 直接ファイルをUploadできる(5MBまで。50MBまで拡大可能)
- Inlineで文字入力できる(制限は不明)
- Data source name ーーー『MyKnowledgeBase-FP0H-source』
- Data source location 『This AWS account』
- Parsing strategy 『Amazon Bedrock default parser』
- Chunk strategy size 500 overwrap 15%(私の場合はこうしましたが、300,20%でもいいと思います)
- 今回はs3をData sourceにしていますが、Customで選択していると
- Data sourceは4つ(計5つ)までで追加できるみたいです。
- Data sourceは1つのファイルで良いし、ディレクトリで良い。 ディレクトリの場合は、その下のファイル全てが対象になります。 ディレクトリを指定していると後ほど、Add documentで10個までファイルを追加できます。(ファイルはData sourceと同じディレクトリ内である必要があります)
- 『Next』
- Embedding model 『Cohere Multilingal v3』—1024次元
- このembedding modelはRequestしないと使用できない。Syncできない。
- Bedrock左メニューからFoundation modelの下のModel catalogをクリック
- Cohere multilingaulをクリック
- 画面上のEmbed Multilingaulのすぐ下に『Available to request』があるのでクリック
- ポップアップが開くので、『Request model access』をクリック
- 使いたいmodelを選択して、
- (Anthropic製を選択した場合は、会社名、業種、用途などを記入して)
- 『Submit』
- TitanなどはすぐにAccess grantedになったが、CohereとAnthropicはIn Progressのまま。3分くらいでCohereもAnthropicもAccess grantedになった。
- このembedding modelはRequestしないと使用できない。Syncできない。
- 『Use an existing vector store』とし
- Vector storeでAuroraを選択
- Amazon Aurora DB Cluster ARNはAurora DBのインスタンスの親のARNをコピペする
- Table nameは、スキーマ名.テーブル名で記入する。 『bedrock_knowledgebase.table_1』
- 『その1』で最後に作った2つ目のSecret ARNをコピペする。
- 暗号化はしていないのでKMS Keyは空白のまま
- Index filed mapping(CREATE TABLEで指定した通り)
- Vector field nameは、embedding
- Text field nameは、chunks
- Bedrock-managed metadata fieldは、metadata
- Custom metadataはテーブルに作っていないので空白のまま。
- Primary keyは、id
- 『Next』
- 『Create knowledge base』
- 『AmazonBedrokSecretPolicyForKnowledgeBase_dylea does not exit』というエラーが表示されたが、何故か次の日見たらKnowledgebaseが作成されていて、availableとなっていた。
- Knowledge baseに入り、Data sourceを選択して、『Sync』を実行。 (Sync completed for data source…)
- すると5~6分でCompleteとなり、Data source overviewの下のDocumentsに7つのファイル名の横にStatusとして『INDEXED』と表示されたら完成です。
実際テストしてみます。
- Data sourceからKnowledge baseに戻り、右上の『Test knowledge Base』をクリック
- まず、Knowledgebaseができているか確認するため、『Retrieval only: data sources』を選択
- 右下に入力フィールドがあるので、何か問い合わせてみます。
- PreviewにSoure chunksの初期値の5個の返答が表示されたら
Sourceの追加
MyKnowledgeBase-FP0Hに、pdfを追加していく。
- Bedrock画面の左メニューのKnowledge Basesを選択して
- ファイルを追加したいKnowledgebaseを選択する
- Data sourceを選択する
- Add document
- S3 locationはCurrent AWS accountとあひて、Browse s3でファイルを選択する。
- これはData sourceがs3の場合です。
- またファイルはData sourceのディレクトリ内になければなりません。
- 『Add』
*通常、Syncを実行したらData sourceで指定したディレクトリ内の全てのファイルが読み込まれる。 しかしその後ファイルを追加して、特定のファイルだけ読み込ます時にこのAdd documentを使用するのだと思います。
APIを用意する
Lambdaが使用するKnowledgebaseとLLMモデルのAPIをBedrockで用意します。
その他
Aurora databaseの右にRecommendationsのカラムに3 Informationalとあったので開いてみると、1つがRead Onlyのインスタンスが存在しないとあり、それをクリックすると、Add at least another DB instance to the DB cluster to improve availability and performance.と書かれてあったので、『Apply』ボタンを押し追加。 Availableまで5分くらいかかった。
ちょっと長いので、『その1』はここまででおしまい。 続きは『その2』へ。
コメント