✨
AWS Bedrockナレッジベース入門:ベクトル型 vs 構造型を実装で比較
こんにちは。株式会社ナレッジラボでAIエンジニアをしております、ダンと申します。
私たちは、社内に散在する経営データの集計・分析・管理を支援する「Manageboard」というサービスを提供しています。Manageboard では今後、AI機能のさらなる強化を予定しています。
本記事では、研究開発中に直面した課題と実装ノウハウの一環として、AWS ナレッジベースについて共有します。
はじめに
AWS Bedrock は Claude や Nova などの大規模言語モデル(LLM)を統合的に扱えるマネージドサービスです。その中でもナレッジベース
機能は、社内ドキュメントや構造化データをLLMと連携させるための中心的な仕組みです。
Bedrock のナレッジベースには、以下の3種類があります:
- ベクトルストア型(文書データ向け)
- 構造化データ型(Redshiftと連携するSQL型)
- Kendra GenAI Index型(Kendra による高性能検索)
※今回の検証は東京リージョンで実施しており、現時点では Kendra GenAI Index はこのリージョンで利用不可のため、ベクトルストア型と構造化データ型を対象としています。
ベクトルストア型ナレッジベース
ベクトルストア型ナレッジベースでは、文書をベクトル化し、ユーザー入力との類似性に基づいて該当箇所を抽出・回答する仕組みです。
仕組みの概要
- 入力データ(PDF, TXTなど)をチャンクに分割
- 埋め込みベクトル化
- ユーザーの入力をベクトル化して類似段落を検索
- 該当段落をプロンプトに挿入して LLM に渡す
作成手順
- Bedrockコンソールで「ナレッジベース」の「作成」で「ベクトルストアでナレッジベース」を選択
- 「ナレッジベースの詳細を指定」画面でサービスロールとデータソース(S3など)を選択
- 「データソースを設定」画面でデータソース(S3)を指定
- 「データストレージと処理を設定」画面で「埋め込みモデル」を選択(Titan Text Embeddingsなど)
- ナレッジベースの作成後、データの同期処理を行います。
メリット
- FAQ・マニュアル・社内文書などに最適
- シンプルなプロンプト拡張で済む
- チャンキングでスコア付き方法を調整可能
デメリット
- 画像・表・図があると精度が低下
- 関連スコアが低いと回答の質が落ちる
- 精度改善するため段落設計・分割ルールに工夫が必要
構造化データ型ナレッジベース
構造化データ型では、LLMが自然言語からSQL文を生成し、Redshift に直接クエリを投げます。
仕組みの概要
- 入力文を解析して SQL を生成(自然言語 → SQL)
- Redshift でクエリ実行
- 結果をプロンプトに挿入し LLM に回答させる
作成手順
- Bedrockコンソールで「ナレッジベース」の「作成」で「構造化データストアでナレッジベース」を選択
- 「ナレッジベースの詳細を指定」画面でサービスロール設定
- 「クエリエンジンを設定」画面でRedshiftクラスタとデータベース情報を設定(Redshift Serverlessで検証済)
- ナレッジベースを作成する
- Redshiftで以下のクエリでナレッジベースのサービスロールの権限を追加する
CREATE USER "IAMR:[サービスロール名]" WITH PASSWORD DISABLE;
GRANT USAGE ON SCHEMA public TO "IAMR:[サービスロール名]";
GRANT SELECT ON [テーブル名] TO "IAMR:[サービスロール名]";
- ナレッジベースを同期する
※CloudWatchログでSQLクエリの生成内容やエラー、実行時間を監視可能
メリット
- 集計・分析・フィルタに強い
- 数百万レコードでもトークン量が安定
- データが更新されても即座に反映される
デメリット
- 対応データソースは Redshiftのみ
- SQL構造が複雑になると精度が低下
ベクトル型 vs 構造型:使い分けの実践知
比較軸 | ベクトルストア型 | 構造化データ型 |
---|---|---|
データ種別 | 文書・非構造データ | Redshift上の構造化データ |
精度 | 関連スコア次第 | SQL正確性次第 |
実行時間 | 短い | クエリに依存 |
初期設定 | 段落設計・分割ルールが必要 | スキーマ説明が必要 |
向いている用途 | FAQ/社内文書 | 分析/集計 |
まとめ
AWS Bedrockのナレッジベース機能は、用途に応じた使い分けと丁寧な設定(特に構造型ではスキーマの説明)が精度を大きく左右します。
- 文書ベースのRAGにはベクトルストア型
- 分析・数値集計にはRedshiftベースの構造型
次回の記事では、構造型のナレッジベースの精度改善するためのスキーマ説明について紹介する予定です。
Discussion