LambdaからKnowledge baseのデータソース同期処理を行う

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. まとめ

コンソールからファイルを登録して同期させるのであれば問題ありませんが、コンソール以外からファイルをアップロードして同期するような場合は、今回のコードを参考にしていただければと思います。