Amazon BedrockとAmazon Aurora PostgreSQL Serverlessでナレッジベースを使ってみよう！

# はじめに

今回は、Amazon Bedrockを使ってナレッジベースでRAGアプリケーションを作る方法をご紹介します。最近話題のAIを活用して、社内ドキュメントの検索や問い合わせ対応を自動化できます。早速、手順を見ていきましょう！

# 今回作成するもの

社内のPDFドキュメントに対して質問すると、AIが適切な回答をしてくれるシステムを作ります。例えば「新入社員研修の資料について教えて」と聞くと、PDFの内容を理解して回答してくれるシステムです。

# RAGとは

RAGとは、大規模言語モデル（LLM）に外部の知識ベースやデータを組み合わせて、より正確で最新の情報に基づいた応答を生成する手法です。
簡単に言うと、以下の3つのステップで動作します。

1. 検索（Retrieval）：ユーザーの質問に関連する情報を外部データベースから検索します
2. 拡張（Augmentation）：検索で得られた関連情報をプロンプトに追加します
3. 生成（Generation）：LLMが拡張されたプロンプトを基に回答を生成します

RAGの主なメリットは

- 最新の情報を提供できる
- 特定の分野や組織の専門知識を活用できる
- モデルの再学習なしで新しい知識を追加できる

例えば企業の問い合わせ対応では、製品マニュアルや FAQ などのドキュメントを参照しながら、より正確な回答を提供することができます。

## Step1: モデルアクセス

今回はオレゴンリージョンを使います。
まずはBedrockのマネージドコンソールにアクセスします。
以下の2つのアクセス許可を入れましょう。

- Titan Text Embeddings V2
- Claude 3.5 Sonnet v2

![スクリーンショット 2024-12-10 11.39.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1991303/821e131b-8581-a1cc-9ba1-53769288f28b.png)

## Step2: バケットを作成する

次は、ドキュメントを保存するためのS3バケットを作成します。

![スクリーンショット 2024-12-09 16.06.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1991303/14737b5b-dd0c-d7b6-6f2c-69693f3f547f.png)

作成したら、テスト用のPDFをアップロードしておきましょう。ちなみに、私は以下の文章をPDF化して載せました。

<details><summary>サンプル文章</summary>

```
# 株式会社test 会社概要

## 会社情報

会社名：株式会社test  
設立：2020年4月1日  
資本金：5億円  
代表取締役：山田太郎  
従業員数：80名（2024年4月現在）  
本社所在地：東京都渋谷区渋谷1-1-1

## 事業内容

当社は、生成AI技術を活用した革新的なソリューションを提供しています。主な事業は以下の3つの領域です：

1. テキスト生成AIを活用したコンテンツ作成支援プラットフォームの開発・運営
2. 画像生成AI技術による商品デザイン支援システムの提供
3. 企業向けカスタマイズAIモデルの開発および導入支援

## 企業理念

「AIで創造性を解放する」を企業理念に掲げ、生成AI技術の民主化を目指しています。私たちは、誰もが創造的な活動に専念できる社会の実現に向けて、最先端のAI技術を活用したソリューションを提供し続けます。

## 技術と強み

自社開発の大規模言語モデル「TestGPT」を保有し、日本語での自然な文章生成に特化した性能を実現しています。また、独自の画像生成エンジン「TestDiffusion」は、アパレルや広告業界で高い評価を得ています。

## 主要取引先・導入実績

- 大手出版社での記事作成支援システムの導入
- アパレルメーカーでの商品デザイン生成システムの実装
- EC事業者での商品説明文自動生成システムの導入
- 広告代理店での広告コピー作成支援ツールの提供

## 研究開発体制

AIリサーチャー30名を含む技術開発チームを保有し、国内外の大学・研究機関との共同研究も積極的に行っています。最新の生成AI技術の研究開発と、その実用化に向けた取り組みを継続的に推進しています。

## 今後の展望

生成AI技術の更なる発展と社会実装を目指し、特に教育分野やヘルスケア分野への展開を計画しています。また、AIの倫理的な利用に関するガイドラインの策定にも積極的に参画し、責任ある技術開発を推進していきます。
```

</details>

![スクリーンショット 2024-12-09 16.30.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1991303/fde60ead-b4d1-c26e-5632-b9252c812300.png)


## Step3: ナレッジベース作成

Bedrockのマネージドコンソールに戻って、ナレッジベースを作成をします。

![スクリーンショット 2024-12-09 16.08.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1991303/711dddf5-d633-5139-0fc1-bfa976d25dba.png)

以下の項目を設定します。

- ナレッジベース名
- ナレッジベースの説明
- IAM許可
- Data source details(S3)

![スクリーンショット 2024-12-09 16.10.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1991303/4eb5af2d-0e51-45eb-804b-cd951011813d.png)

次に以下の項目を設定する。

![スクリーンショット 2024-12-09 16.17.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1991303/577ad0ed-de13-31e8-4744-7c8825a4878b.png)

モデルの設定とAuroraの設定をします。

- 埋め込みモデル
- ベクトルデータベース（Amazon Aurora PostgreSQL Serverlessを選択します。）

![スクリーンショット 2024-12-09 16.33.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1991303/6e347ecc-f159-717c-9ed1-ee5cfc0edca9.png)

あとは作成します。

最大で13分かかるみたいなので気長に待ちましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1991303/fefe3568-dad8-3923-377f-c4db2bd61b61.png)

以下のようなバナーが出たら作成完了です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1991303/749cee94-59a1-7911-b3be-dafc201e4416.png)

## Step4: 仕上げ

データソースを同期しましょう！

![スクリーンショット 2024-12-09 17.19.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1991303/cbbe2c7c-6703-c21f-7804-cc4e8ed4f022.png)

回答モデルを選択します。

![スクリーンショット 2024-12-09 17.42.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1991303/93a5bb9e-916a-e112-3922-b408aec98f4e.png)

モデルを選択します。

![スクリーンショット 2024-12-09 17.44.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1991303/c479ba20-fa15-05ee-8cdd-2b9494518f0f.png)

試しにチャットを送ってみると無事に動いていることがわかります！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1991303/86262de6-907a-eb3e-e1cb-2276067a1ad5.png)

# おまけ: データオートメーションを使ってみよう！

## データオートメーションとは

RAGシステムを構築する際の主な課題の1つが、非構造化データの取り扱いです。表形式のデータ、画像内のテキスト、音声データなどは、そのままではRAGが効果的に処理できず、検索精度や回答品質が低下してしまう傾向にあります。
Amazon Bedrockの新機能「データオートメーション」は、この課題に対する効果的なソリューションを提供します。この機能を利用することで、

- 各種形式のデータを自動的に最適化
- RAGが処理しやすい形式への変換
- データの前処理工程の自動化

が可能になります。
現在はプレビュー機能として提供されています。

## 手順

### Step1: データオートメーションページを開く

Bedrockマネージドコンソールのサイドバーからデータオートメーションを開きます。
基本的な説明も書いているのでぜひ確認してください。

![スクリーンショット 2024-12-10 13.34.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1991303/96937097-6999-1c11-b804-e9f44536ed7c.png)

### Step2: サンプルデートを選択する

このブログでは以下を選択しますが、ビデオやオーディオのサンプルもあるのでぜひお試しください。

- アセットタイプ: ドキュメント
- ファイル: 運転免許証

### Step3: 結果の確認

運転免許証がmarkdownで出力されていることがわかります！
これは便利...！

![スクリーンショット 2024-12-10 14.27.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1991303/aa7f5338-fe84-6223-fd7c-f3e3915d0939.png)

# まとめ

今回はAmazon BedrockとAmazon Aurora PostgreSQL Serverlessを使ってRAGアプリケーションを構築する手順をご紹介しました。

re:Invent2024では多くの新機能が発表され、Bedrockの進化が続いています。新しい機能をどんどん検証していきたいと思います！