1. はじめに
Knowledge baseのデータソース同期処理をLambdaから実行してみます。
2. 目次
3. 用語
3.1. Knowledge base
Knowledge baseとは、Amazon Bedrockで簡単にRAGを実現できるようになるサービスです。 ファイル登録後、同期することでRAGを実現できるようになります。
3.2. Amazon Bedrock
Amazon Bedrockとは、AWSの生成AIサービスであり、テキスト生成、テキスト要約、画像生成など様々な場面で活用できるサービスです。
3.3. RAG(Retrieval Augmented Generation)
RAGとは、生成AIの回答精度を高めるための仕組みです。大規模言語モデル(LLM)が回答を生成する際にユーザーの質問文に応じた知識情報を参照できるようにします。
4. Knowledge base作成
4.1. Bedrock画面の、[Orchestration]>[Knowledge base]から、[Create knowledge base]をクリックする。
4.2. Knowledge baseの詳細を入力し、[Next]をクリックする。
項目 | 設定値 |
---|---|
Knowledge base name | 作成するKnowledge baseの名前 |
Knowledge base description | 作成するKnowledge baseの説明 |
Runtime role | 新規のロールを作成するか、既存のロールを選択する |
Service role name | 作成するロール名 |
Tags | 生成されるAWSリソースへのタグ |
4.3. データソースの定義を入力し、[Next]をクリックする。
項目 | 設定値 |
---|---|
Data source name | 作成するデータソースの名前 |
S3 URI | 利用するS3バケットを選択 |
4.4. ベクターDBの設定項目を入力し、[Next]をクリックする。
項目 | 設定値 |
---|---|
Embeddings model | 埋め込みモデル(2024/01/10時点では、Titan Embeddings G1 - Text v1.2以外選択不可) |
Vector database | 新規のベクターDB作成か、既存のベクターDBを利用するかを選択 |
4.5. 設定した内容を確認後、[Create knowledge base]をクリックする。
5. コード
import boto3 import json import os import logging logger = logging.getLogger() logger.setLevel(logging.INFO) client = boto3.client('bedrock-agent') def lambda_handler(event, context): response = client.start_ingestion_job( knowledgeBaseId='対象のナレッジベースID', dataSourceId='対象のデータソースID' ) return { 'statusCode': 200, 'body': json.dumps('Hello from Lambda!') }
6. コード確認
[Data source]セクションの[Last sync time]を確認し、時間が更新されていればOK。
7. まとめ
コンソールからファイルを登録して同期させるのであれば問題ありませんが、コンソール以外からファイルをアップロードして同期するような場合は、今回のコードを参考にしていただければと思います。