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 はこのリージョンで利用不可のため、ベクトルストア型と構造化データ型を対象としています。

ベクトルストア型ナレッジベース

ベクトルストア型ナレッジベースでは、文書をベクトル化し、ユーザー入力との類似性に基づいて該当箇所を抽出・回答する仕組みです。

仕組みの概要

  1. 入力データ(PDF, TXTなど)をチャンクに分割
  2. 埋め込みベクトル化
  3. ユーザーの入力をベクトル化して類似段落を検索
  4. 該当段落をプロンプトに挿入して LLM に渡す

作成手順

  1. Bedrockコンソールで「ナレッジベース」の「作成」で「ベクトルストアでナレッジベース」を選択
  2. 「ナレッジベースの詳細を指定」画面でサービスロールとデータソース(S3など)を選択
  3. 「データソースを設定」画面でデータソース(S3)を指定
  4. 「データストレージと処理を設定」画面で「埋め込みモデル」を選択(Titan Text Embeddingsなど)
  5. ナレッジベースの作成後、データの同期処理を行います。

メリット

  • FAQ・マニュアル・社内文書などに最適
  • シンプルなプロンプト拡張で済む
  • チャンキングでスコア付き方法を調整可能

デメリット

  • 画像・表・図があると精度が低下
  • 関連スコアが低いと回答の質が落ちる
  • 精度改善するため段落設計・分割ルールに工夫が必要

構造化データ型ナレッジベース

構造化データ型では、LLMが自然言語からSQL文を生成し、Redshift に直接クエリを投げます。

仕組みの概要

  1. 入力文を解析して SQL を生成(自然言語 → SQL)
  2. Redshift でクエリ実行
  3. 結果をプロンプトに挿入し LLM に回答させる

作成手順

  1. Bedrockコンソールで「ナレッジベース」の「作成」で「構造化データストアでナレッジベース」を選択
  2. 「ナレッジベースの詳細を指定」画面でサービスロール設定
  3. 「クエリエンジンを設定」画面でRedshiftクラスタとデータベース情報を設定(Redshift Serverlessで検証済)
  4. ナレッジベースを作成する
  5. Redshiftで以下のクエリでナレッジベースのサービスロールの権限を追加する
CREATE USER "IAMR:[サービスロール名]" WITH PASSWORD DISABLE;
GRANT USAGE ON SCHEMA public TO "IAMR:[サービスロール名]";
GRANT SELECT ON [テーブル名] TO "IAMR:[サービスロール名]";
  1. ナレッジベースを同期する

※CloudWatchログでSQLクエリの生成内容やエラー、実行時間を監視可能

メリット

  • 集計・分析・フィルタに強い
  • 数百万レコードでもトークン量が安定
  • データが更新されても即座に反映される

デメリット

  • 対応データソースは Redshiftのみ
  • SQL構造が複雑になると精度が低下

ベクトル型 vs 構造型:使い分けの実践知

比較軸 ベクトルストア型 構造化データ型
データ種別 文書・非構造データ Redshift上の構造化データ
精度 関連スコア次第 SQL正確性次第
実行時間 短い クエリに依存
初期設定 段落設計・分割ルールが必要 スキーマ説明が必要
向いている用途 FAQ/社内文書 分析/集計

まとめ

AWS Bedrockのナレッジベース機能は、用途に応じた使い分けと丁寧な設定(特に構造型ではスキーマの説明)が精度を大きく左右します。

  • 文書ベースのRAGにはベクトルストア型
  • 分析・数値集計にはRedshiftベースの構造型

次回の記事では、構造型のナレッジベースの精度改善するためのスキーマ説明について紹介する予定です。

参考リンク

Discussion