どうもこんにちは。
今回は、Amazon BedrockのKnowledgeBaseを使ったRAGをRailsアプリケーションで行ってみました。
pineconeやKnowledgeBaseのセットアップ方法、AWSコンソール上でのテストについては、さまざまな方が記事にしているので、自分はRailsでの使い方にフォーカスして話を進めます。
環境
Ruby: 3.2.2
Rails: 7.1.3.4
リージョン: バージニア北部(東京リージョンだとpineconeが使えなかったので...)
前提条件
以下の記事を参考にして、pineconeやKnowledgeBaseをセットアップしたものとして話を進めます。
Railsへの実装
1. ライブラリインストール
Gemfileに記載して、インストールします。
gem 'aws-sdk-bedrockagentruntime'
bundle install
2. Bedrockクライアント設定
access_key = 'XXXXXXXXXXXXXXXXXXX'
secret_access_key = 'YYYYYYYYYYYYYYYYYYYYYYYYYY'
credentials = Aws::Credentials.new(access_key, secret_access_key)
bedrock_client = Aws::BedrockAgentRuntime::Client.new(region: 'us-east-1', credentials: credentials)
3. インプット文章の用意
input = {
"text": "私は日本人なので、日本語で教えてください。「<好きな質問してください。>」}"
}
4. APIのための設定
config = {
knowledge_base_configuration: {
knowledge_base_id: "ZZZZZZZZZZZZ",
model_arn: "arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-3-haiku-20240307-v1:0",
retrieval_configuration: {
vector_search_configuration: {
override_search_type: "SEMANTIC"
}
}
},
type: "KNOWLEDGE_BASE"
}
5. リクエスト実行
prompt = {
input: input,
retrieve_and_generate_configuration: config
}
response = bedrock_client.retrieve_and_generate(prompt)
6. レスポンス出力
completion_value = response.output.text
以上