[アップデート] Aurora PostgreSQL と MongoDB Atlas が Amazon Bedrock Knowledge Bases のハイブリッド検索をサポートしました
こんにちは!クラウド事業本部コンサルティング部のたかくに(@takakuni_)です。
Aurora PostgreSQL と MongoDB Atlas が Amazon Bedrock Knowledge Bases のハイブリッド検索をサポートしました。
アップデート内容
まず、ハイブリッド検索に関しておさらいします。
Amazon Bedrock Knowledge bases におけるハイブリッド検索とは、ベクトル検索に加えて全文検索を利用し、双方の検索結果から良い結果を利用する検索方式です。
ハイブリッド検索をサポートしているベクトルデータベースの場合、以下の検索タイプを選択可能です。
- Default
- ユーザーのプロンプトを Bedrock 側で確認し、ベクターデータベースの構成に最適な検索方法を決定してクエリを実行する
- Hybrid
- ユーザーのプロンプトにかかわらず、ベクトル検索とキーワード検索の両方を利用してクエリを実行
- Semantic
- ベクトル検索のみを利用する
今までハイブリッド検索をサポートしていたベクトルデータベースは OpenSearch Serverless と OpenSearch Managed Cluster の 2 つでした。
今回のアップデートで、 Aurora PostgreSQL と MongoDB Atlas が加わり、ハイブリッド検索可能なベクトルデータベースの選択肢が増えました。
とくにコスト観点から、 Aurora PostgreSQL を利用している方も多いのではないでしょうか。
やってみた
今回は Aurora PostgreSQL をベクトルデータベースとした、Amazon Bedrock Knowledge bases を作成します。
HashiCorp Terraform で作成し、最終的なコードは以下に格納されています。
変更点
それぞれの Terraform のコードに関しては、今回解説しません。変更点に関して深掘りします。
今回のアップデートによって、従来のデータベーススキーマで作成した場合、次のエラーが発生するようになりました。
╷
│ Error: creating Bedrock Agent Knowledge Base
│
│ with aws_bedrockagent_knowledge_base.this,
│ on main.tf line 92, in resource "aws_bedrockagent_knowledge_base" "this":
│ 92: resource "aws_bedrockagent_knowledge_base" "this" {
│
│ operation error Bedrock Agent: CreateKnowledgeBase, https response error StatusCode: 400, RequestID: ce0fafd1-de19-4ae2-bca6-3ed03717fd00,
│ ValidationException: The knowledge base storage configuration provided is invalid... chunks column must be indexed. The SQL command to index the column is:
│ CREATE INDEX ON <table_name> USING gin (to_tsvector('simple', <text_field>));
これは、ベクトルデータベースで必要なインデックス名が増えたことに起因します。
より具体的には、以前まではベクトル用のインデックス(vector
)のみ作成しておけば OK でしたが、今回のアップデートでテキスト用のインデックス(text
)の作成が必須になりました。
カラム名 | Create index on | 必須 |
---|---|---|
vector | CREATE INDEX ON bedrock_integration.bedrock_kb USING hnsw (embedding vector_cosine_ops); | Yes |
text | CREATE INDEX ON bedrock_integration.bedrock_kb USING gin (to_tsvector('simple', chunks)); | Yes |
custom metadata | CREATE INDEX ON bedrock_integration.bedrock_kb USING gin (custom_metadata); | カスタムメタデータ利用時に必要 |
この変更に合わせて、次のインデックスを作成するよう追加の変更を行いました。
#!/bin/bash
# For more information, see the official documentation:
# https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.VectorDB.html
# Create an index with the cosine operator which the bedrock can use to query the data
aws rds-data --region $REGION execute-statement \
--resource-arn $CLUSTER_ARN \
--secret-arn $SECRET_ARN \
--database $DATABASE_NAME \
--sql "CREATE INDEX IF NOT EXISTS bedrock_kb_chunks_gin_idx on bedrock_integration.bedrock_kb USING gin (to_tsvector('simple', chunks));"
なお、API Changes を確認すると MongoDB Atlas の場合は、textIndexName が追加され、対象のインデックス名を指定するようです。
Changes Added optional "customMetadataField" for Amazon Aurora knowledge bases, allowing single-column metadata. Also added optional "textIndexName" for MongoDB Atlas knowledge bases, enabling hybrid search support.
検索
全文検索用に製品ドキュメントを生成してみました。
製品ドキュメント
# XYZ-5000 スマートホームハブ
## 取扱説明書
---
## 目次
1. [はじめに](#はじめに)
2. [安全上のご注意](#安全上のご注意)
3. [同梱品の確認](#同梱品の確認)
4. [各部の名称と機能](#各部の名称と機能)
5. [初期設定](#初期設定)
6. [基本操作](#基本操作)
7. [高度な機能](#高度な機能)
8. [トラブルシューティング](#トラブルシューティング)
9. [仕様](#仕様)
10. [保証とサポート](#保証とサポート)
---
## はじめに
この度は、XYZ-5000 スマートホームハブをお買い上げいただき、誠にありがとうございます。本製品は、家庭内のさまざまなスマートデバイスを一元管理するための最新のIoTハブです。
本取扱説明書では、XYZ-5000の設定方法から高度な機能の活用方法まで詳しく解説しています。製品を安全かつ効果的にご利用いただくため、ご使用前に本書を必ずお読みください。
また、本書は今後の参照のために安全な場所に保管してください。
---
## 安全上のご注意
### 警告
- **感電の危険**: 本体を分解しないでください。内部には高電圧部品が含まれています。
- **火災の危険**: 付属の電源アダプター以外は使用しないでください。
- **水濡れ注意**: 本製品は防水仕様ではありません。水気のある場所での使用は避けてください。
### 注意
- 直射日光の当たる場所や高温多湿の環境での使用は避けてください。
- 本体の通気口をふさがないでください。
- 強い磁気を発する機器の近くでの使用は避けてください。
- 落下や強い衝撃を与えないでください。
---
## 同梱品の確認
パッケージ内に以下のアイテムが含まれていることをご確認ください:
1. XYZ-5000 本体
2. 電源アダプター(DC 12V/2A)
3. LANケーブル(1.5m)
4. クイックスタートガイド
5. 保証書
6. 壁掛け用ブラケット
7. 取付ネジセット
不足しているものがある場合は、お買い上げの販売店またはカスタマーサポートまでご連絡ください。
---
## 各部の名称と機能
### 前面パネル
- **ステータスLED**: 本体の動作状態を表示します。
- 青色点灯: 正常動作中
- 青色点滅: ネットワーク接続中/更新中
- 赤色点灯: エラー発生
- 緑色点灯: セットアップモード
- **タッチスクリーン**: 4.3インチカラー液晶。基本操作や設定が可能です。
- **マイク**: 音声コマンド認識用(4基搭載)。
- **スピーカー**: 通知音やアラーム、音声応答用。
### 背面パネル
- **電源ポート**: 付属のDC 12V電源アダプターを接続します。
- **LANポート**: 有線ネットワーク接続用RJ-45ポート。
- **USBポート**: 外部ストレージやUSB機器接続用(USB 3.0 x 2)。
- **HDMIポート**: 外部ディスプレイ接続用。
- **リセットボタン**: 5秒間長押しで工場出荷時の設定にリセットします。
- **拡張スロット**: 将来的な機能拡張用。
### 側面
- **microSDカードスロット**: 最大256GBまでのmicroSDカードに対応。
- **冷却ベント**: 内部冷却用の通気口。ふさがないでください。
---
## 初期設定
### ステップ1: 接続
1. 付属の電源アダプターを本体の電源ポートに接続し、コンセントに差し込みます。
2. LANケーブルを使用して、本体をご家庭のルーターに接続します。
3. 本体が起動するまで約60秒お待ちください。起動が完了すると、ステータスLEDが青色に点灯します。
### ステップ2: アプリのインストール
1. スマートフォンまたはタブレットで、App Store(iOS)またはGoogle Play(Android)から「XYZ Smart Home」アプリをダウンロードしてインストールします。
2. アプリを起動し、新規アカウントを作成するか、既存のアカウントでログインします。
### ステップ3: デバイスの追加
1. アプリのホーム画面で「+」ボタンをタップし、「デバイスの追加」を選択します。
2. 「XYZ-5000」を選択し、画面の指示に従って設定を進めます。
3. 本体のタッチスクリーンに表示されるQRコードをスマートフォンでスキャンします。
4. Wi-Fi設定を行い、本体をご家庭のWi-Fiネットワークに接続します。
5. デバイス名を設定し、「完了」をタップします。
### ステップ4: ファームウェアの更新
1. 初期設定完了後、最新のファームウェアが利用可能かどうかを確認します。
2. アプリの「設定」>「デバイス情報」>「ファームウェア更新」を選択します。
3. 更新が利用可能な場合は、「更新」ボタンをタップして最新版をインストールします。
4. 更新中は電源を切らないでください。更新完了まで約5〜10分かかります。
---
## 基本操作
### ホーム画面
タッチスクリーンのホーム画面には以下の情報が表示されます:
- 接続されているデバイスの数と状態
- 現在の室温と湿度
- 天気予報
- よく使う機能へのショートカット
### デバイスの管理
1. ホーム画面で「デバイス」アイコンをタップします。
2. 接続されているすべてのスマートデバイスのリストが表示されます。
3. 各デバイスをタップすると、詳細な制御オプションが表示されます。
4. デバイスの追加は「+」ボタンから行えます。
### シーンの作成
1. ホーム画面で「シーン」アイコンをタップします。
2. 「新規シーン作成」を選択します。
3. シーン名を入力し、トリガーとなるアクションを設定します。
4. 実行するアクションを選択します(例:照明をつける、温度を調整するなど)。
5. 「保存」をタップして完了します。
### 音声コマンド
XYZ-5000は以下の音声起動ワードに対応しています:
- 「ヘイ、スマートハブ」
- 「OK、ハブ」
音声コマンドの例:
- 「ヘイ、スマートハブ、リビングの電気をつけて」
- 「OK、ハブ、エアコンの温度を25度に設定して」
- 「ヘイ、スマートハブ、今日の天気は?」
---
## 高度な機能
### オートメーションの設定
1. アプリで「オートメーション」タブを選択します。
2. 「新規オートメーション」をタップします。
3. トリガー条件を設定します:
- 時間ベース(特定の時間に実行)
- イベントベース(特定のデバイスの状態変化で実行)
- 位置ベース(ユーザーの位置情報に基づいて実行)
4. 実行するアクションを選択します。
5. 条件を追加することもできます(例:特定の時間帯のみ実行など)。
6. 「保存」をタップして完了します。
### エネルギーモニタリング
1. アプリで「エネルギー」タブを選択します。
2. 接続されているデバイスの電力使用量が表示されます。
3. 日次、週次、月次のレポートを確認できます。
4. 省エネのためのアドバイスも表示されます。
### セキュリティ機能
1. アプリで「セキュリティ」タブを選択します。
2. 「ホームモード」を設定できます:
- 在宅モード
- 外出モード
- 夜間モード
3. 各モードで動作するセキュリティデバイス(カメラ、センサーなど)を設定します。
4. アラート通知の設定も行えます。
---
## トラブルシューティング
### デバイスが接続できない
1. デバイスの電源が入っていることを確認します。
2. デバイスがXYZ-5000と同じWi-Fiネットワークに接続されていることを確認します。
3. デバイスを工場出荷時の設定にリセットし、再度セットアップを試みます。
4. それでも接続できない場合は、デバイスのメーカーの取扱説明書を参照してください。
### XYZ-5000がオフラインになる
1. 電源ケーブルが正しく接続されていることを確認します。
2. Wi-Fi接続を確認します。ルーターが正常に動作していることを確認してください。
3. 本体背面のリセットボタンを3秒間押して再起動します。
4. 問題が解決しない場合は、リセットボタンを10秒間長押しして工場出荷時の設定にリセットし、初期設定をやり直してください。
### アプリが応答しない
1. アプリを強制終了し、再起動します。
2. スマートフォンを再起動します。
3. アプリを最新バージョンに更新します。
4. それでも問題が解決しない場合は、アプリをアンインストールして再インストールしてください。
---
## 仕様
### ハードウェア仕様
- **プロセッサ**: クアッドコア ARM Cortex-A53 1.5GHz
- **メモリ**: 2GB DDR4 RAM
- **ストレージ**: 16GB eMMC
- **ディスプレイ**: 4.3インチ IPS タッチスクリーン(800×480ピクセル)
- **ネットワーク**:
- Wi-Fi: 802.11 a/b/g/n/ac(2.4GHz & 5GHz)
- Bluetooth 5.0
- Zigbee 3.0
- Z-Wave Plus
- **電源**: DC 12V/2A
- **動作温度**: 0°C 〜 40°C
- **寸法**: 150mm × 150mm × 35mm
- **重量**: 320g
### 対応プロトコル
- Wi-Fi
- Bluetooth
- Zigbee
- Z-Wave
- Thread
- Matter
- HomeKit
- Google Home
- Amazon Alexa
### システム要件
- **モバイルアプリ**:
- iOS 12.0以降
- Android 8.0以降
- **インターネット接続**: 最低5Mbps以上の速度を推奨
---
## 保証とサポート
### 保証情報
- 本製品の保証期間は、購入日から2年間です。
- 保証は製造上の欠陥のみを対象とし、誤使用や不適切な取り扱いによる損傷は対象外となります。
- 保証サービスを受けるには、購入証明書(レシートなど)が必要です。
### テクニカルサポート
- **電話**: 0120-XXX-XXX(平日9:00〜18:00)
- **メール**: support@xyz-smart.com
- **ウェブサイト**: www.xyz-smart.com/support
- **チャットサポート**: アプリ内の「サポート」セクションから利用可能
### ソフトウェア更新
本製品は定期的にソフトウェア更新を受け取ります。更新には新機能の追加、バグ修正、セキュリティ強化が含まれます。自動更新を有効にしておくことを強くお勧めします。
---
**製造元**: XYZ Smart Technologies Inc.
**製造国**: 日本
**モデル番号**: XYZ-5000-JP
**認証**: 技適マーク取得済み
---
© 2023 XYZ Smart Technologies Inc. All Rights Reserved.
「タッチスクリーン サイズ
」といった全文検索が得意とする検索を行ってみました。ハイブリッド検索の場合、1番目の候補に欲しい情報がヒットし、セマンティック検索の場合は 5 番目に欲しい情報がヒットしていることがわかります。
まとめ
以上、「[アップデート] Aurora PostgreSQL と MongoDB Atlas が Amazon Bedrock Knowledge Bases のハイブリッド検索をサポートしました。」でした。
ハイブリッド検索をサポートしたことで、OpenSearch との検索体験の違いがなくなってきました。強いていうならば、OpenSearch の場合は日本語などの形態素解析プラグインが利用できるため、データの整備は少しリードといったところです。
このブログがどなたかの参考になれば幸いです。
クラウド事業本部コンサルティング部のたかくに(@takakuni_)でした!