Amazon Bedrock Knowledge Basesで「RAG(検索拡張生成)」を構築してみる
生成AIを業務で活用する際、自社固有の情報をどう参照させるかが課題になります。本記事では、AWSのマネージド機能であるAmazon Bedrock Knowledge Basesを使って、RAG(検索拡張生成)を構築する方法を、基本的な仕組みから順に解説します。
Amazon Bedrock ナレッジベースの概要
まずは、Amazon Bedrock Knowledge Basesがどのような機能なのか、そしてBedrock単体での生成AI利用と何が違うのかを整理します。
Amazon Bedrock Knowledge Basesとは?
Amazon Bedrock Knowledge Basesは、AWSの生成AIサービスであるAmazon Bedrockで利用できる、RAGを構築するためのマネージド機能です。社内文書、FAQ、マニュアル、規程類、製品情報などのデータを生成AIアプリケーションに取り込み、ユーザーの質問に対して、関連する情報を検索したうえで回答を生成できるようにします。
通常、生成AIを業務で活用する場合、モデルがもともと学習している一般的な知識だけでは不十分です。たとえば、社内の申請手順、独自の業務ルール、製品ごとの保守条件、社内用語などは、基盤モデルが正確に把握しているとは限りません。そのため、業務に即した回答を行わせるには、自社が保有する文書やデータを参照させる仕組みが必要になります。
Amazon Bedrock Knowledge Basesを使うと、こうした社内データをAmazon Bedrockに接続し、検索・回答生成に利用できます。データソースを登録すると、文書の取り込み、分割、ベクトル化、ベクトルストアへの保存といったRAGに必要な処理をAWS側の機能として扱えます。これにより、開発者が検索基盤やデータ連携を一から作り込む負担を抑えられます。
Bedrock単体の生成AI利用との違い
Amazon Bedrock単体でも、基盤モデルにプロンプトを入力して回答を生成することはできます。しかし、その場合の回答は、基本的にモデルが持つ一般知識や、プロンプトに直接入力した情報に依存します。社内文書や最新の業務ルールを参照させたい場合は、毎回プロンプトに情報を貼り付けるか、別途検索処理を実装する必要があります。
一方、Amazon Bedrock Knowledge Basesを利用すると、あらかじめ登録したデータソースから関連情報を検索し、その内容をもとに回答を生成できます。つまり、Bedrock単体の利用が「生成AIに直接質問する」形であるのに対し、Knowledge Basesを使った利用は「社内データを検索してから生成AIに回答させる」形になります。
RAG機能とは?
Amazon Bedrock Knowledge Basesを理解する前提として、その土台となるRAGという仕組みを押さえておきましょう。ここでは、RAGの基本的な考え方と、それによって何が改善されるのかを解説します。
RAG(検索拡張生成)の基本的な考え方
RAGとは、Retrieval-Augmented Generationの略で、日本語では「検索拡張生成」と呼ばれます。簡単に言えば、生成AIが回答を作る前に、外部のデータソースから関連情報を検索し、その検索結果をもとに回答を生成する仕組みです。
通常の生成AIは、モデルが学習済みの知識や入力されたプロンプトをもとに回答を作ります。そのため、社内固有の情報、最新の情報、限定公開のマニュアルなどについては、正確に答えられない場合があります。また、情報が不足しているにもかかわらず、もっともらしい回答を作ってしまうこともあります。これが、業務利用でよく懸念されるハルシネーションの一因です。
RAGでは、ユーザーから質問を受けると、まず社内文書やFAQなどのデータソースを検索します。そして、検索で見つかった関連情報を生成AIに渡し、その情報を踏まえて回答を作らせます。このように、RAGは生成AIに「データソースを参照して回答する力」を持たせる仕組みです。
RAGによって何が改善されるのか
RAGによって改善される代表的な点は、回答の正確性、業務適合性、情報の更新性です。
まず、回答の正確性については、AIが根拠となる文書を参照して回答できるため、一般知識だけに頼る場合よりも、実態に近い回答を期待できます。社内規程やマニュアルに基づく問い合わせ対応では、これは大きな利点です。
ただし、RAGを使えばハルシネーションが完全になくなるわけではありません。検索結果が不十分だったり、古い文書が混在していたり、質問に対して適切な情報を取得できなかったりすると、期待どおりの回答にならない場合があります。
そのため、RAGの運用では、文書の品質、データの鮮度、アクセス権限、検索精度、回答内容の検証が重要になります。
Amazon Bedrock ナレッジベースの仕組み
Amazon Bedrock Knowledge Basesは、RAGに必要な一連の処理をマネージドに扱える仕組みです。大きく見ると、「データの取り込み」「文書の分割」「ベクトル化」「検索」「回答生成」という流れで動作します。
- データの取り込み…まず、社内文書やFAQなどのデータソースをKnowledge Basesに接続します。代表的なデータソースとしては、Amazon S3に保存した文書などが利用されます。
- 文書の分割(チャンク)…データソースを同期すると、Amazon Bedrockは文書の内容を取り込み、検索しやすい単位に分割します。この分割された単位は、一般的にチャンクと呼ばれます。
- ベクトル化…チャンク化された文章は、埋め込みモデルによってベクトルと呼ばれる数値表現に変換されます。ベクトル化することで、単なるキーワード一致ではなく、意味の近さに基づいた検索が可能になります。たとえば、「パスワードを忘れた」と「ログインできない」は表現が異なりますが、意味としては近い問い合わせです。ベクトル検索では、このような意味的に近い情報を見つけやすくなります。
- 検索…作成されたベクトルは、ベクトルストアに保存されます。ユーザーが質問すると、その質問もベクトル化され、ベクトルストア内の情報と照合されます。そして、質問に関連性の高いチャンクが検索結果として取得されます。
- 回答生成…取得された情報が基盤モデルに渡され、モデルは検索結果を踏まえて自然な回答を生成します。
最新のサービスを選択し適切なインフラ設計をお約束するスタイルズのAWS導入・移行サービスはこちら→
◆Bedrock Knowledge Baseのサンプル実装
RAG(検索拡張生成)は、社内文書などの外部知識をいったん検索し、その内容を踏まえて回答を生成する仕組みです。Amazon Bedrock Knowledge Baseを使うと、文書の取り込み・ベクトル化・検索を一括して任せられます。ここではS3に置いたFAQを題材に、ナレッジベースを作成して質問に答えるまでを、操作どおりに手順化します。
事前準備:S3にFAQ文書を用意する
検索対象とするFAQ文書をS3バケットに置きます。本手順ではAWS CloudShell(コンソール下部の[CloudShell]から起動)で次のコマンドを実行しました。S3コンソールからの手動アップロードでも構いません。バケット名は全世界で一意な任意の名前に置き換えてください。
# バケットを作成(東京リージョン)
aws s3 mb s3://<任意のバケット名> –region ap-northeast-1
# FAQテキスト(Q&A形式)を docs/ にアップロード
aws s3 cp worktime-faq.txt s3://<任意のバケット名>/docs/
worktime-faq.txtには「Q1. 無料トライアル期間は何日間ですか? / A1. お申し込み日から30日間です。」のように、想定問答をテキストで記載しておきます。
ナレッジベースを作成する
- Bedrockの左ナビゲーションから[ナレッジベース]をクリックします。
- 右上の[作成 ▼]をクリックし、表示されたメニューから[ベクトルストアを含むナレッジベース]を選択します。

図1:ナレッジベースの一覧・概要画面
- ステップ1「ナレッジベースの詳細を指定」で、[ナレッジベース名]に「faq-knowledge-base」、[説明]に「社内FAQ文書を検索対象とするRAG検証用ナレッジベース」を入力します。
- 「IAM許可」では「新しいサービスロールを作成して使用」が選択されていることを確認し、右下の[次へ]をクリックします。

図2:ステップ1 名前・説明の入力
データソースとモデルを設定する
- ステップ2「データソースを設定」で、[データソース名]に「faq-docs-s3」と入力します。
- 「データソースの場所」で「このAWSアカウント」を選択し、[S3のURI]に「s3://<バケット名>/docs/」を入力します([S3を参照]ボタンから選択することもできます)。
- 「解析戦略」は「Amazon Bedrock デフォルトパーサー」、「チャンキング戦略」は「デフォルトチャンキング」のまま、[次へ]をクリックします。

図3:ステップ2 データソース名とS3のURIの指定
- ステップ3「データストレージと処理を設定」の「埋め込みモデル」で[モデルを選択]をクリックし、[Amazon]→「Titan Text Embeddings V2」→ 推論「オンデマンド」を選んで[適用]します。
- 「ベクトルデータベース」で「新しいベクトルストアをクイック作成」を選択し、その下のベクトルストアのドロップダウンから「Amazon S3 Vectors」を選択して、[次へ]をクリックします。

図4:ステップ3 埋め込みモデルとベクトルストア(S3 Vectors)の選択
- ステップ4「確認して作成」で設定内容を確認し、[ナレッジベースを作成]をクリックします。ステータスが「利用可能」になるまで待ちます。

図5:ナレッジベースの作成完了画面
同期してテストする
- 「データソース」一覧でデータソース「faq-docs-s3」の左のチェックボックスを選択し、[同期]ボタンをクリックします。「データソースの同期が完了しました」と表示されるまで待ちます(フィードバックの画面が出た場合は閉じて構いません)。
- 画面右上の[ナレッジベースをテスト]をクリックし、テストパネルの[モデルを選択]からNova Pro(APAC)などの生成モデルを選びます。
- プロンプト欄に「無料トライアル期間は何日間ですか?」と入力して[実行]をクリックします。FAQに基づく回答が返り、回答の[詳細]を開くと根拠となった文書(引用元チャンク)を確認できます。

図6:テスト画面での回答と引用元(ソースの詳細)の表示
最新のサービスを選択し適切なインフラ設計をお約束するスタイルズのAWS導入・移行サービスはこちら→
まとめ
Amazon Bedrock Knowledge Basesは、社内文書やFAQなどのデータを活用して、RAG構成の生成AIアプリケーションを構築するための機能です。Bedrock単体の利用と異なり、外部データを検索したうえで回答を生成できるため、業務に即した回答を実現しやすくなります。
RAGを活用すると、回答の正確性や業務適合性、情報の更新性を高めることができます。一方で、ハルシネーションを完全に防げるわけではないため、データ品質や権限管理、検索精度の設計が重要です。
具体的なRAGアプリケーションの構築を検討する場合は、専業のベンダーにぜひ相談してみてください。





