

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon Bedrock ナレッジベースでデータを取得して AI レスポンスを生成する
<a name="knowledge-base"></a>

基盤モデルは一般的な知識を備えていますが、検索拡張生成 (RAG) を使用することで、レスポンスをさらに改善できます。RAG は、データソースからの情報を使用して、生成されるレスポンスの関連性と正解率を向上させる手法です。Amazon Bedrock ナレッジベースを使用すると、独自の情報を生成 AI アプリケーションと統合できます。クエリが実行されると、ナレッジベースはデータを検索し、クエリに回答するために必要な関連情報を検索します。取得した情報は、その後、生成されるレスポンスの改善に利用できます。Amazon Bedrock ナレッジベースの機能を使用すると、独自の RAG ベースのアプリケーションを構築できます。

Amazon Bedrock ナレッジベースを使用すると、以下が可能になります。
+ データソースから関連情報を返すことで、ユーザークエリに回答します。
+ データソースから取得した情報を使用して、ユーザークエリに対して正確かつ関連性の高いレスポンスを生成します。
+ 返された関連情報をプロンプトにフィードして、独自のプロンプトを拡張します。
+ 元のデータソースを参照して、正解率をチェックできるように、生成されたレスポンスに引用を含めます。
+ 大量のビジュアルリソースを備えたドキュメントを含めて、イメージを抽出してクエリへの応答として取得できるようにします。取得したデータに基づいてレスポンスを生成すると、モデルはこれらのイメージに基づいて追加のインサイトを提供できます。
+ イメージをクエリとして使用して視覚的に類似したコンテンツを検索するか、マルチモーダル埋め込みモデルを使用して、クエリでテキストとイメージを組み合わせてより正確な結果を得ることができます。
+ 自然言語を、構造化データベース用にカスタマイズしたクエリ (SQL クエリなど) に変換します。このようなクエリは、構造化データストアからデータを取得するために使用されます。
+ データソースを更新し、変更をナレッジベースに直接取り込み、直ちにアクセスできるようにします。
+ モデルの再ランク付けを使用して、データソースから取得される結果に影響を与えます。
+ [Amazon Bedrock エージェント](agents.md)のワークフローにナレッジベースを含めます。

ナレッジベースを設定するには、以下の一般的なステップを完了する必要があります。

1. (オプション) ナレッジベースを非構造化データソースに接続する場合は、独自の[サポートされているベクトルストア](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-setup.html)を設定して、データのベクトル埋め込み表現をインデックス化します。Amazon Bedrock コンソールを使用して Amazon OpenSearch Serverless ベクトルストアを作成する場合は、このステップはスキップできます。

1. ナレッジベースを非構造化データソースまたは構造化データソースに接続します。

1. データソースをナレッジベースと同期します。

1. 以下を実行するように、アプリケーションまたはエージェントを設定します。
   + ナレッジベースに対してクエリを実行し、関連するソースを返します。
   + ナレッジベースに対してクエリを実行し、取得した結果に基づいて自然言語のレスポンスを生成します。
   + (構造化データストアに接続されたナレッジベースをクエリする場合) クエリを構造化データ言語固有のクエリ (SQL クエリなど) に変換します。

**Topics**
+ [ナレッジベースの仕組み](kb-how-it-works.md)
+ [サポートされているモデルとリージョン](knowledge-base-supported.md)
+ [設定なしでドキュメントとチャットする](knowledge-base-chatdoc.md)
+ [ナレッジベースを作成および管理するためのアクセス許可を設定する](knowledge-base-prereq-permissions-general.md)
+ [データソースに接続してナレッジベースを構築する](knowledge-base-build.md)
+ [マルチモーダルコンテンツのナレッジベースを構築する](kb-multimodal.md)
+ [構造化データストアに接続してナレッジベースを構築する](knowledge-base-build-structured.md)
+ [Amazon Kendra GenAI Index を使用してナレッジベースを構築する](knowledge-base-build-kendra-genai-index.md)
+ [Amazon Neptune Analytics のグラフを使用してナレッジベースを構築する](knowledge-base-build-graphs.md)
+ [クエリとレスポンスを使用してナレッジベースをテストする](knowledge-base-test.md)
+ [アプリケーションのナレッジベースをデプロイする](knowledge-base-deploy.md)
+ [ナレッジベースに関する情報を表示する](kb-info.md)
+ [ナレッジベースを変更する](kb-update.md)
+ [ナレッジベースを削除する](kb-delete.md)

# Amazon Bedrock ナレッジベースの仕組み
<a name="kb-how-it-works"></a>

Amazon Bedrock のナレッジベースは、検索拡張生成 (RAG) の活用に役立ちます。RAG は、データストアから情報を取得して、大規模言語モデル (LLM) によって生成されるレスポンスを拡張する一般的な手法です。データソースを使用してナレッジベースを設定すると、アプリケーションはナレッジベースに対してクエリを実行し、ソースからの直接の引用、またはクエリ結果から生成される自然なレスポンスによってクエリに答える情報を返すことができます。

Amazon Bedrock ナレッジベースを使用すると、ナレッジベースでのクエリから得られるコンテキストによって強化されたアプリケーションを構築できます。パイプライン構築の面倒な作業から解放され、すぐに使える RAG ソリューションを提供することでアプリケーションの構築時間を短縮できるため、市場投入までの時間を短縮できます。また、ナレッジベースを追加することで、プライベートデータを活用できるようにモデルを継続的にトレーニングする必要がなくなるため、費用対効果も向上します。

以下の図は、RAG がどのように実行されるかを概略的に示しています。ナレッジベースは、このプロセスのいくつかのステップを自動化することで、RAG の設定と実装を簡素化します。

**非構造化データの前処理**

非構造化プライベートデータ (構造化データストアに存在しないデータ) を効果的に検索できるようにするには、データをテキストに変換してから、管理しやすいかたまりに分割するのが一般的です。このかたまり (チャンク) は埋め込みに変換され、元のドキュメントへのマッピングを維持したままベクトルインデックスに書き込まれます。これらの埋め込みは、クエリとデータソースからのテキストの意味上の類似性を判断するために使用されます。以下の図は、ベクトルデータベース用のデータの前処理を示しています。

![\[検索拡張生成のためにデータを前処理する\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/kb/rag-preprocess.png)


ベクトル埋め込みとは、テキストの各チャンクを表す一連の数値です。モデルは、各テキストチャンクをベクトルと呼ばれる一連の数値に変換し、テキストを数学的に比較できるようにします。これらのベクトルは、浮動小数点数 (float32) またはバイナリ数のいずれかです。Amazon Bedrock でサポートされているほとんどの埋め込みモデルは、デフォルトで浮動小数点ベクトルを使用します。ただし、一部のモデルはバイナリベクトルをサポートしています。バイナリ埋め込みモデルを選択する場合は、バイナリベクトルをサポートするモデルとベクトルストアも選択する必要があります。

1 ディメンションあたり 1 ビットしか使用しないバイナリベクトルは、1 ディメンションあたり 32 ビットを使用する浮動小数点 (float32) ベクトルほどストレージにコストがかかりません。ただし、バイナリベクトルは、テキストの表現が浮動小数点ベクトルほど正確ではありません。

次の例は、3 つの表現のテキストを示しています。


****  

| 表記 | 値 | 
| --- | --- | 
| テキスト | "Amazon Bedrock は、主要な AI 企業や Amazon が提供する高パフォーマンスな基盤モデルを使用します。" | 
| 浮動小数点ベクトル | [0.041..., 0.056..., -0.018..., -0.012..., -0.020..., ...] | 
| バイナリベクトル | [1,1,0,0,0, ...] | 

**ランタイムの実行**

実行時には、埋め込みモデルを使用してユーザーのクエリをベクトルに変換します。次に、ドキュメントベクトルとユーザークエリベクトルを比較して、ベクトルインデックスをクエリしてユーザークエリの検索対象に意味的に類似したチャンクを検索します。最後のステップでは、ベクトルインデックスから取得したチャンクの追加コンテキストがユーザープロンプトに追加されます。その後、追加のコンテキストと共にプロンプトがモデルに送信され、ユーザーへのレスポンスが生成されます。以下の画像は、RAG が実行時にどのように動作してユーザークエリへのレスポンスを補強するかを示しています。

![\[実行時の検索拡張生成\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/kb/rag-runtime.png)


データをナレッジベースに変換する方法、ナレッジベースの設定後にナレッジベースへのクエリを実行する方法、取り込み中にデータソースに適用できるカスタマイズの詳細については、以下のトピックを参照してください。

**Topics**
+ [データをナレッジベースに変換する](kb-how-data.md)
+ [Amazon Bedrock ナレッジベースを使用してデータソースから情報を取得する](kb-how-retrieval.md)
+ [ナレッジベースのカスタマイズ](kb-how-customization.md)

# データをナレッジベースに変換する
<a name="kb-how-data"></a>

ナレッジベースを作成するには、ナレッジベースがアクセスできるサポートされているデータソースに接続します。ナレッジベースは、ユーザーのクエリに応答したり、取得したデータに基づいて応答を生成したりできるようになります。

 Amazon Bedrock ナレッジベースは、テキスト、画像、またはテーブル、グラフ、図、その他の画像を含んだマルチモーダルドキュメントなど、さまざまなドキュメントをサポートしています。*マルチモーダル*データとは、テキストデータとビジュアルデータの組み合わせを指します。非構造化データを含むファイルタイプの例は、テキスト、マークダウン、HTML、PDF などです。

次のセクションでは、Amazon Bedrock ナレッジベースがサポートするデータのタイプと、ナレッジベースを接続できるサービスについて、データのタイプごとに説明します。

## Unstructured data (非構造化データ)
<a name="kb-how-unstructured"></a>

非構造化データとは、事前定義された構造に強制されないデータを指します。Amazon Bedrock ナレッジベースでは、ナレッジベースに非構造化データを追加するために次のサービスに接続することがサポートされています。
+ Amazon S3
+ Confluence (プレビュー)
+ Microsoft SharePoint (プレビュー)
+ Salesforce (プレビュー)
+ Web Crawler (プレビュー)
+ カスタムデータソース (同期せずにナレッジベースにデータを直接取り込むことができます)

データソースには、ドキュメントの raw 形式が含まれています。クエリプロセスを最適化するために、ナレッジベースは raw データをデータの数値表現である*ベクトル埋め込み*に変換し、ベクトル埋め込みにも変換されるクエリとの類似性を定量化します。Amazon Bedrock ナレッジベースは、データソースの変換プロセスで次のリソースを使用します。
+ 埋め込みモデル – データをベクトル埋め込みに変換する基盤モデル。テキストと画像の両方を含むマルチモーダルデータの場合、Amazon Titan Multimodal Embeddings G1 や Cohere Embed v3 などのマルチモーダル埋め込みモデルを使用できます。
+ ベクトルストア – データのベクトル表現を保存するサービス。次のベクトルストアがサポートされています。
  + Amazon OpenSearch Serverless
  + Amazon Neptune
  + Amazon Aurora (RDS)
  + Pinecone
  + Redis Enterprise Cloud
  + MongoDB アトラス

データをベクトル埋め込みに変換するプロセスは、*取り込み*と呼ばれます。データをナレッジベースに変換する取り込みプロセスには、次のステップが含まれます。

**取り込み**

1. データは、選択したパーサーによって解析されます。解析の詳細については、「[データソースの解析オプション](kb-advanced-parsing.md)」を参照してください。

1. データソース内の各ドキュメントは、トークンの数やその他のパラメータによって定義できるデータの細分化である*チャンク*に分割されます。チャンキングの詳細については、「[ナレッジベースのコンテンツのチャンキングの仕組み](kb-chunking.md)」を参照してください。

1. 選択した埋め込みモデルで、データはベクトル埋め込みに変換されます。マルチモーダルコンテンツの場合、画像はビジュアルベクトルとして埋め込まれ、テキストはテキストベクトルとして埋め込まれ、両方のモダリティで検索できます。

1. ベクトル埋め込みは、選択したベクトルストアのベクトルインデックスに書き込まれます。

取り込みプロセスが完了すると、ナレッジベースのクエリを実行する準備が整います。クエリを実行してナレッジベースから情報を取得する方法の詳細については、「[Amazon Bedrock ナレッジベースを使用してデータソースから情報を取得する](kb-how-retrieval.md)」を参照してください。

データソースに変更を加える場合は、変更を同期して、追加、変更、削除をナレッジベースに取り込む必要があります。一部のデータソースでは、ナレッジベースへのファイルの直接取り込みやファイルの削除がサポートされているため、データソースの変更と取り込みを個別のステップとして扱う必要がなくなり、常にフル同期を実行する必要もなくなります。ナレッジベースとそれをサポートするデータソースにドキュメントを直接取り込む方法については、「[変更をナレッジベースに直接取り込む](kb-direct-ingestion.md)」を参照してください。

Amazon Bedrock ナレッジベースには、データの取り込み方法をカスタマイズするためのさまざまなオプションが用意されています。このプロセスをカスタマイズする方法の詳細については、「[ナレッジベースのカスタマイズ](kb-how-customization.md)」を参照してください。

## 構造化データ
<a name="kb-how-structured"></a>

構造化データとは、それが存在するデータストアによって事前定義された形式の表形式データを指します。Amazon Bedrock ナレッジベースは、Amazon Redshift クエリエンジンを使用してサポートされている構造化データストアに接続します。Amazon Bedrock ナレッジベースは、クエリパターン、クエリ履歴、スキーマメタデータを分析して自然言語クエリを SQL クエリに変換するフルマネージドメカニズムを備えています。これらの変換されたクエリは、サポートされているデータソースから関連情報を取得するために使用されます。

Amazon Bedrock ナレッジベースでは、ナレッジベースに構造化データストアを追加するために次のサービスに接続することがサポートされています。
+ Amazon Redshift
+ AWS Glue Data Catalog(AWS Lake Formation)

ナレッジベースを構造化データ ストアに接続する場合、データをベクトル埋め込みに変換する必要はありません。代わりに、Amazon Bedrock ナレッジベースは構造化データストアのクエリを直接実行できます。クエリ中、Amazon Bedrock ナレッジベースはユーザークエリを SQL クエリに変換して、ユーザークエリに関連するデータを取得し、より正確な応答を生成できます。データを取得せずに SQL クエリを生成し、他のワークフローで使用することもできます。

例えば、データベースリポジトリには、顧客とその購入に関する情報を持つ次のテーブルが含まれています。


****  

| カスタマー ID | 2020 年に購入した金額 | 2021 年に購入した金額 | 2022 年に購入した金額 | 現在までに合計購入金額 | 
| --- | --- | --- | --- | --- | 
| 1 | 200 | 300 | 500 | 1,000 | 
| 2 | 150 | 100 | 120 | 370 | 
| 3 | 300 | 300 | 300 | 900 | 
| 4 | 720 | 180 | 100 | 900 | 
| 5 | 500 | 400 | 100 | 1,000 | 
| 6 | 900 | 800 | 1,000 | 2700 | 
| 7 | 470 | 420 | 400 | 1290 | 
| 8 | 250 | 280 | 250 | 780 | 
| 9 | 620 | 830 | 740 | 2190 | 
| 10 | 300 | 200 | 300 | 800 | 

ユーザークエリが「支出額上位 5 名の顧客の概要を教えてください」というものである場合、ナレッジベースは次を実行する可能性があります。
+ クエリを SQL クエリに変換する。
+ 次を含むテーブルから抜粋を返す。
  + 関連するテーブル列「カスタマー ID」と「現在までの合計購入金額」
  + 支出額が最も多い 10 名の顧客の合計購入額を含むテーブル行
+ 支出額上位 5 名の顧客と、その顧客が購入した金額を示す応答を生成します。

ナレッジベースでテーブルの抜粋を生成できるクエリのその他の例は次のとおりです。
+ 「2020 年の支出額で上位 5 名の顧客」
+ 「2020 年の購入額で上位の顧客」
+ 「2020～2022 年の購入額で上位 5 名の顧客」
+ 「2020～2022 年で最も支出の多い顧客上位 5 名」
+ 「合計購入金額が 10 USD 未満の顧客」
+ 「支出が最も少ない顧客上位 5 名」

クエリが具体的かつ詳細であるほど、ナレッジベースは正確な情報を絞り込んで返すことができます。例えば、「2020 年の支出額で上位 10 名の顧客」というクエリではなく、「2020 年の顧客について、現在までの合計購入金額が上位 10 名を見つけてください」のほうがより具体的なクエリです。この具体的なクエリは、顧客支出データベーステーブルの列名「現在までの合計購入金額」を参照しており、データを「上位」で並べ替える必要があることも示しています。

# Amazon Bedrock ナレッジベースを使用してデータソースから情報を取得する
<a name="kb-how-retrieval"></a>

ナレッジベースの設定後、ナレッジベース内のデータソースをクエリするようにアプリケーションを設定できます。ナレッジベースをクエリするには、以下の API オペレーションを利用できます。
+ [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) – クエリに最も関連性の高いソースチャンクまたはイメージをデータから取得し、レスポンスで配列として返します。
+ [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) – Amazon Bedrock で、`Retrieve` オペレーションと [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html) オペレーションを結合し、クエリに最も関連性の高いソースチャンクをデータから取得し、自然言語のレスポンスを生成します。データから特定のソースチャンクへの引用も含まれます。データソースにビジュアル要素が含まれている場合、モデルはテキストレスポンスを生成する際にこれらのイメージからのインサイトを活用し、イメージのソース属性を提供します。
+ [GenerateQuery](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GenerateQuery.html) – 自然言語のユーザークエリを構造化データストアに適した形式のクエリに変換します。

`RetrieveAndGenerate` オペレーションは、`GenerateQuery` (ナレッジベースが構造化データストアに接続されている場合)、`Retrieve`、`InvokeModel` を背後で使用して、RAG プロセス全体を実行する複合アクションです。Amazon Bedrock ナレッジベースは、`Retrieve` オペレーションへのアクセスも提供するため、特定のユースケースに合わせて RAG の各ステップを切り離し、カスタマイズできます。

`Retrieve` または `RetrieveAndGenerate` を使用する際に[再ランク付けモデル](rerank.md)を使用して、クエリ中に取得されたドキュメントの関連性を再ランク付けすることもできます。

ナレッジベースのクエリ時にこれらの API オペレーションを使用する方法については、「[クエリとレスポンスを使用してナレッジベースをテストする](knowledge-base-test.md)」を参照してください。

# ナレッジベースのカスタマイズ
<a name="kb-how-customization"></a>

Amazon Bedrock ナレッジベースは、データソースをナレッジベースに取り込む方法をカスタマイズするオプションを提供しており、データの保存、解析、エンドユーザーへの返答方法を柔軟に選択できます。ナレッジベースの設定時に検討できるカスタマイズオプションの詳細については、次のトピックのいずれかを選択してください。

**Topics**
+ [ナレッジベースのコンテンツのチャンキングの仕組み](kb-chunking.md)
+ [データソースの解析オプション](kb-advanced-parsing.md)
+ [カスタム変換 Lambda 関数を使用してデータの取り込み方法を定義する](kb-custom-transformation.md)
+ [データソースにメタデータを含めてナレッジベースのクエリを改善する](kb-metadata.md)

# ナレッジベースのコンテンツのチャンキングの仕組み
<a name="kb-chunking"></a>

Amazon Bedrock では、データを取り込むとき、データ検索を効率化するため、まずドキュメントやコンテンツを管理しやすいかたまり (チャンク) に分割します。それらのチャンクは埋め込みに変換され、分割前のドキュメントへのマッピングを維持したままベクトルインデックス (データのベクトル表現) に書き込まれます。ベクトル埋め込みにすることで、テキストを定量的に比較できるようになります。

**Topics**
+ [標準のチャンキング](#kb-standard-chunking)
+ [階層的チャンキング](#kb-hiearchical-chunking)
+ [セマンティックチャンキング](#kb-semantic-chunking)
+ [マルチモーダルコンテンツのチャンキング](#kb-multimodal-chunking)

## 標準のチャンキング
<a name="kb-standard-chunking"></a>

Amazon Bedrock は、次の標準的なチャンキング方法に対応しています。

**注記**  
テキストチャンキング戦略は、テキストドキュメントにのみ適用されます。マルチモーダルコンテンツ (オーディオ、ビデオ、画像) の場合、チャンキングはこれらのテキストベースの戦略ではなく、埋め込みモデルレベルで行われます。
+ 固定サイズのチャンキング: チャンクあたりのトークン数と重複率を指定することで、目的のチャンクサイズを設定できます。具体的な要件に柔軟に対応できます。チャンク内のトークン数の上限と、連続するチャンク間の重複率を設定できます。
**注記**  
解析されたコンテンツ (高度なパーサーを使用したコンテンツや HTML から変換されたコンテンツなど) の場合、Amazon Bedrock ナレッジベースはコンテンツをチャンクして最適な結果が得られるように最適化する場合があります。チャンカーは論理ドキュメントの境界 (ページやセクションなど) を尊重し、最大トークンサイズを大きくしても、これらの境界を越えてコンテンツをマージしません。
+ デフォルトのチャンキング: コンテンツを約 300 トークンずつのテキストチャンクに分割します。文の区切りが認識され、文が途切れずに各チャンク内に収まるように処理されます。

ドキュメントをチャンキングしないという選択肢もあります。その場合、各ドキュメントが 1 つのテキストチャンクとして扱われます。チャンキングのアプローチ/戦略として [チャンキングなし] を選択する場合は、前処理として、ドキュメントを別々のファイルに分割しておいてもよいでしょう。ドキュメントのチャンキングを選択しない場合、引用内のページ番号を表示したり、*x-amz-bedrock-kb-document-page-number* メタデータフィールド/属性でフィルタリングしたりすることはできません。

## 階層的チャンキング
<a name="kb-hiearchical-chunking"></a>

階層的チャンキングでは、情報を子チャンクと親チャンクというネスト構造で整理します。データソースの作成時に、親チャンクと子チャンクのサイズ、各チャンク間で重複するトークンの数を定義できます。検索中は、最初は子チャンクが取得されますが、さらに包括的なコンテキストをモデルに提供するために、より広範な親チャンクに置き換えられます。

小さなテキスト埋め込みの方が精度は高くなりますが、検索の目的は包括的なコンテキストを提供することです。階層的チャンキングのシステムは、取得した子チャンクを適宜親チャンクに置き換えることで、これらのニーズのバランスを図ります。

**注記**  
子チャンクは取り込み時に親チャンクに置き換えられるため、返される結果の数は、リクエストされた量よりも少なくなる可能性があります。
S3 ベクトルバケットをベクトルストアとして使用する場合は、階層チャンキングはお勧めしません。チャンキングに多数のトークンを使用する場合 (合計 8,000 個を超えるトークン）、メタデータサイズの制限が発生する可能性があります。

階層的チャンキングのため、Amazon Bedrock ナレッジベースでは 2 つのレベル (チャンキングの深さ) を指定できます。
+ 親: 親チャンクの最大トークンサイズを設定します。
+ 子: 子チャンクの最大トークンサイズを設定します。

また、チャンク間の重複トークン数も設定します。これは、連続する親チャンク間および連続する子チャンク間で重複するトークンの絶対数です。

## セマンティックチャンキング
<a name="kb-semantic-chunking"></a>

セマンティックチャンキングは自然言語処理の手法です。テキストを意味のあるチャンクに分割するので、理解度と情報検索が向上します。単に構文的な構造だけでなく、意味的なコンテンツに焦点を当てることで、検索精度を向上させることが狙いです。関連情報をより高い精度で抽出し、操作しやすくなる可能性があります。

セマンティックチャンキングを設定する場合、次のハイパーパラメータを指定することができます。
+ 最大トークン数: 1 つのチャンクに含めるべきトークンの最大数。文の区切りを考慮して設定します。
+ バッファサイズ: 特定の文について、埋め込みの作成用に追加される前後の文の数を定義します。例えば、バッファサイズが 1 の場合は、3 つの文 (現在の文、前の文、次の文) を組み合わせて埋め込みます。このパラメータは、各チャンクの境界を判断するために一緒に調べるテキストの量を左右し、その結果、チャンクの粒度と一貫性に影響を及ぼします。バッファサイズを大きくすると、取り込めるコンテキストが増える分、ノイズも生じやすくなります。一方、バッファサイズを小さくすると重要なコンテキストを見逃す可能性がありますが、より正確なチャンキングが保証されます。
+ ブレークポイントのパーセンタイルしきい値: 文章間の距離/非類似性のしきい値 (パーセント値)。これを基に文章間の区切り位置が決まります。しきい値が高いほど、文が区別しやすくないと、異なるチャンクに分割されません。しきい値が高いと、チャンク数が少なくなり、通常はチャンクの平均サイズが大きくなります。
**注記**  
セマンティックチャンキングでは、基盤モデルを使用するため、追加のコストがかかります。データの量によってコストは異なります。基盤モデルのコストの詳細については、「[Amazon Bedrock の料金](https://aws.amazon.com/bedrock/pricing/)」を参照してください。

## マルチモーダルコンテンツのチャンキング
<a name="kb-multimodal-chunking"></a>

マルチモーダルコンテンツ (オーディオ、ビデオ、画像) の場合、チャンキング動作はテキストドキュメントとは異なります。
+ **Nova マルチモーダル埋め込み:** チャンキングは埋め込みモデルレベルで発生します。オーディオとビデオのチャンク期間は 1～30 秒 (デフォルト: 5 秒) に設定できます。ビデオファイルの場合、ビデオにオーディオが含まれている場合でも、ビデオチャンク期間のみが適用されます。オーディオチャンク期間は、スタンドアロンのオーディオファイルにのみ適用されます。
+ **Bedrock Data Automation (BDA) パーサー:** コンテンツは最初にテキスト (トランスクリプトとシーンの概要) に変換され、変換されたテキストに標準のテキストチャンキング戦略が適用されます。

**注記**  
Nova マルチモーダル埋め込みを使用する場合、ナレッジベースで設定されたテキストチャンキング戦略は、音声、動画、画像ファイルではなく、データソース内のテキストドキュメントにのみ影響します。

# データソースの解析オプション
<a name="kb-advanced-parsing"></a>

解析とは、未加工データに含まれているコンテンツを理解し、抽出することを指します。Amazon Bedrock ナレッジベースには、取り込み中にデータソースを解析するための以下のオプションがあります。
+ **Amazon Bedrock デフォルトパーサー** – .txt、.md、.html、.doc/.docx、.xls/.xlsx、.pdf ファイルなどのテキストファイル内のテキストのみを解析します。このパーサーには使用料はかかりません。
**注記**  
デフォルトパーサーはテキストのみを出力するため、ドキュメントに図、チャート、テーブル、画像が含まれている場合は、デフォルトパーサーではなく、Amazon Bedrock Data Automation または基盤モデルをパーサーとして使用することをお勧めします。Amazon Bedrock Data Automation と基盤モデルは、ドキュメントからこれらの要素を抽出し、出力として返すことができます。
+ Amazon Bedrock ナレッジベースには、.jpeg および .png の画像ファイルに加えて、.pdf ファイル内の図、チャート、テーブルなどのマルチモーダルデータを解析するための以下のパーサーが用意されています。これらのパーサーは、これらの図、チャート、テーブル、画像を抽出し、ナレッジベースの作成時に指定した S3 送信先にファイルとして保存することもできます。ナレッジベースの取得中に、これらのファイルをレスポンスまたはソース属性で返すことができます。
  + **Amazon Bedrock Data Automation** – マルチモーダルデータを効果的に処理するフルマネージドサービス。追加のプロンプトを指定する必要はありません。このパーサーのコストは、ドキュメントのページ数や処理される画像の数によって異なります。このサービスの詳細については、「[Amazon Bedrock Data Automation](bda.md)」を参照してください。
  + **基盤モデル** – 基盤モデルを使用してマルチモーダルデータを処理します。このパーサーには、データ抽出に使用されるデフォルトのプロンプトをカスタマイズするオプションがあります。このパーサーのコストは、基盤モデルによって処理される入出力トークンの数によって異なります。Amazon Bedrock ナレッジベースのデータの解析をサポートするモデルのリストについては、「[解析でサポートされているモデルとリージョン](knowledge-base-supported.md#knowledge-base-supported-parsing)」を参照してください。

**重要**  
Amazon Bedrock Data Automation または基盤モデルをパーサーとして選択した場合、.pdf ファイルにテキストのみが含まれていても、選択した方法でデータソース内のすべての .pdf ファイルが解析されます。デフォルトパーサーは、これらの .pdf ファイルの解析には使用されません。お客様のアカウントには、これらのファイルを解析する際に使用した Amazon Bedrock Data Automation または基盤モデルの料金が課金されます。

データの解析方法を選択するときは、次の点を考慮してください。
+ データは純粋にテキストなのか、それとも画像、グラフ、チャートなどのマルチモーダルデータが含まれており、それらをナレッジベースでクエリできるようにするのか。
+ データの解析方法をモデルに指示するために使用されるプロンプトをカスタマイズするオプションが必要かどうか。
+ パーサーのコスト。Amazon Bedrock Data Automation では 1 ページあたりの料金が使用されますが、基盤モデルのパーサーの料金は入出力トークンに基づいて課金されます。詳細については、「[Amazon Bedrock の料金体系](https://aws.amazon.com/bedrock/pricing/)」ページを参照してください。
+ ファイルの合計サイズ制限。基盤モデルをパーサーとして使用する場合、すべてのファイルの合計ファイルサイズは 100 GB 以下にする必要があります。

ナレッジベースの解析方法を設定する方法については、「[データソースをナレッジベースと接続する](data-source-connectors.md)」のデータソースの接続設定を参照してください。

# カスタム変換 Lambda 関数を使用してデータの取り込み方法を定義する
<a name="kb-custom-transformation"></a>

カスタム変換の Lambda 関数を定義して、ナレッジベースの取り込みプロセスに独自のロジックを挿入できます。

具体的なチャンキングロジックがあり、これが Amazon Bedrock のナレッジベースではネイティブサポートされていない場合があります。その場合は、チャンキングの戦略として [チャンキングなし] を選択し、使用するチャンキングロジックを含む Lambda 関数を指定します。さらに、Lambda 関数によるチャンク化の対象ファイルをナレッジベースが書き込む先の Amazon S3 バケットを指定する必要があります。

Lambda 関数はファイルをチャンキングした後、同じバケットに書き戻し、ナレッジベースで後処理を行えるように参照を返します。オプションで、S3 バケットに保存されるファイルを暗号化するため、独自の AWS KMS キーを指定できます。

**注記**  
ウェブコネクタを使用する場合、HTML の代わりに Markdown テキストが Lambda に渡されます。

または、チャンクレベルのメタデータを指定し、ナレッジベースにはネイティブサポートされているチャンキング戦略のいずれかを適用させることもできます。この場合、定義済みのチャンキング戦略 (例えば、デフォルトまたは固定サイズのチャンキング) のいずれかを選択すると同時に、Lambda 関数と S3 バケットへの参照を指定します。ナレッジベースは、解析と前処理のチャンク化を行ったファイルを事前定義済みの S3 バケットに保存し、その後、チャンクレベルのメタデータを追加するために Lambda 関数を呼び出します。

チャンクレベルのメタデータを追加した後、Lambda 関数はチャンク化されたファイルを同じバケットに書き戻し、ナレッジベースで後処理を行えるように参照を返します。衝突が生じた場合は、チャンクレベルのメタデータが優先され、ファイルレベルのメタデータが上書きされます。

カスタムのチャンキングに Python Lambda 関数を使用する例については、「[Custom chunking using Lambda function](https://github.com/aws-samples/amazon-bedrock-samples/blob/main/rag/knowledge-bases/features-examples/03-optimizing-accuracy-retrieved-results/advanced_chunking_options.ipynb)」を参照してください。

API およびファイル契約については、以下の構造を参照してください。

**Lambda 関数を使用してカスタム変換を追加する場合の API 契約**

```
{
...
    "vectorIngestionConfiguration": {
        "customTransformationConfiguration": { // Custom transformation 
            "intermediateStorage": {
                "s3Location": { // the location where input/output of the Lambda is expected 
                    "uri": "string"
                }
            },
            "transformations": [{
                "transformationFunction": {
                    "transformationLambdaConfiguration": {
                        "lambdaArn": "string"
                    }
                },
                "stepToApply": "string" // enum of POST_CHUNKING
            }]
        },
        "chunkingConfiguration": {
            "chunkingStrategy": "string",
            "fixedSizeChunkingConfiguration": {
                "maxTokens": "number",
                "overlapPercentage": "number"
            }
            ...
        }
    }
}
```

**カスタムの Lambda 変換の入力形式**

```
{
    "version": "1.0",
    "knowledgeBaseId": "string",
    "dataSourceId": "string",
    "ingestionJobId": "string",
    "bucketName": "string",
    "priorTask": "string",
    "inputFiles": [{
        "originalFileLocation": {
            "type": "S3",
            "s3_location": {
                "uri": "string"
            }
        },
        "fileMetadata": {
            "key1": "value1",
            "key2": "value2"
        },
        "contentBatches": [{
            "key":"string"
        }]
    }]
}
```

**カスタムの Lambda 変換の出力形式**

```
{
    "outputFiles": [{
        "originalFileLocation": {
            "type": "S3",
            "s3_location": {
                "uri": "string"
            }
        },
        "fileMetadata": {
            "key1": "value1",
            "key2": "value2"
        },
        "contentBatches": [{
            "key": "string"
        }]
    }]
}
```

**で参照されるオブジェクトのファイル形式`fileContents`**

```
{
    "fileContents": [{
        "contentBody": "...",
        "contentType": "string", // enum of TEXT, PDF, ...
        "contentMetadata": {
            "key1": "value1",
            "key2": "value2"
        }
    }
    ...
    ]
}
```

# データソースにメタデータを含めてナレッジベースのクエリを改善する
<a name="kb-metadata"></a>

CSV (カンマ区切り値) ファイルを取り込む場合、ナレッジベースで特定の列をコンテンツフィールドとメタデータフィールドとして扱うことができます。コンテンツ/メタデータファイルのペアは数百または数千にのぼる場合がありますが、その代わりに、単一の CSV ファイルと対応する metadata.json ファイルを用意し、CSV 内の各列をナレッジベースでどのように扱うべきかヒントを提供できるようになりました。

チャンクあたりのドキュメントメタデータフィールド/属性には制限があります。「[Quotas for knowledge bases](https://docs.aws.amazon.com/bedrock/latest/userguide/quotas.html)」を参照してください。

CSV ファイルを取り込む前に、次の点を確認してください。
+ CSV が RFC4180 形式であり、UTF-8 でエンコードされている。
+ CSV の最初の行に、ヘッダー情報が含まれている。
+ metadata.json に指定されているメタデータフィールドが、CSV に列として存在している。
+ 次の形式の fileName.csv.metadata.json ファイルを用意する。

  ```
  {
      "metadataAttributes": {
          "${attribute1}": "${value1}",
          "${attribute2}": "${value2}",
          ...
      },
      "documentStructureConfiguration": {
          "type": "RECORD_BASED_STRUCTURE_METADATA",
          "recordBasedStructureMetadata": {
              "contentFields": [
                  {
                      "fieldName": "string"
                  }
              ],
              "metadataFieldsSpecification": {
                  "fieldsToInclude": [
                      {
                          "fieldName": "string"
                      }
                  ],
                  "fieldsToExclude": [
                      {
                          "fieldName": "string"
                      }
                  ]
              }
          }
      }
  }
  ```

CSV ファイルは一度に 1 行ずつ解析され、チャンキング戦略とベクトル埋め込みがコンテンツフィールドに適用されます。Amazon Bedrock ナレッジベースは、現時点では 1 つのコンテンツフィールドに対応しています。コンテンツフィールドはチャンクに分割され、各チャンクに関連付けられているメタデータフィールド (列) は、文字列値として扱われます。

例えば、CSV に「Description (説明)」という列と「Creation\$1Date (作成日)」という列があるとしましょう。説明フィールドがコンテンツフィールドで、作成日が関連するメタデータフィールドです。説明のテキストはチャンクに分割され、CSV の行ごとのベクトル埋め込みに変換されます。作成日の値は日付の文字列表現として扱われ、説明の各チャンクに関連付けられます。

包含/除外フィールドが指定されていない場合、コンテンツ列を除くすべての列がメタデータ列として扱われます。包含フィールドのみが指定されている場合は、指定されたその列のみがメタデータとして扱われます。除外フィールドのみが指定されている場合は、除外列を除くすべての列がメタデータとして扱われます。`fieldsToInclude` と `fieldsToExclude` の両方で同じ `fieldName` を指定した場合、Amazon Bedrock は検証例外をスローします。包含と除外の間で競合が発生した場合は、エラーになります。

CSV 内で空白の行が見つかった場合は無視またはスキップされます。

# Amazon Bedrock ナレッジベースでサポートされているモデルとリージョン
<a name="knowledge-base-supported"></a>

Amazon Bedrock ナレッジベースは、次の基盤モデルを使用したクエリをサポートしています。


| プロバイダー | モデル | モデル ID | 単一リージョンモデルのサポート | クロスリージョン推論プロファイルのサポート | 
| --- | --- | --- | --- | --- | 
| AI21 Labs | Jamba 1.5 Large | ai21.jamba-1-5-large-v1:0 |  us-east-1  |  | 
| AI21 Labs | Jamba 1.5 Mini | ai21.jamba-1-5-mini-v1:0 |  us-east-1  |  | 
| Amazon | Nova Lite | amazon.nova-lite-v1:0 |  ap-northeast-1 ap-southeast-2 eu-north-1 eu-west-2 us-east-1 us-gov-west-1  |  ap-northeast-1 ap-northeast-2 ap-south-1 ap-southeast-1 ap-southeast-2 ca-central-1 eu-central-1 eu-north-1 eu-south-1 eu-south-2 eu-west-1 eu-west-3 us-east-1 us-east-2 us-west-2  | 
| Amazon | Nova Micro | amazon.nova-micro-v1:0 |  ap-southeast-2 eu-west-2 us-east-1 us-gov-west-1  |  ap-northeast-1 ap-northeast-2 ap-south-1 ap-southeast-1 ap-southeast-2 eu-central-1 eu-north-1 eu-south-1 eu-south-2 eu-west-1 eu-west-3 us-east-1 us-east-2 us-west-2  | 
| Amazon | Nova Pro | amazon.nova-pro-v1:0 |  ap-southeast-2 eu-west-2 us-east-1 us-gov-west-1  |  ap-northeast-1 ap-northeast-2 ap-south-1 ap-southeast-1 ap-southeast-2 eu-central-1 eu-north-1 eu-south-1 eu-south-2 eu-west-1 eu-west-3 us-east-1 us-east-2 us-west-2  | 
| Anthropic | Claude 3 Haiku | anthropic.claude-3-haiku-20240307-v1:0 |  ap-northeast-1 ap-northeast-2 ap-south-1 ap-southeast-1 ap-southeast-2 ca-central-1 eu-central-1 eu-central-2 eu-west-1 eu-west-2 eu-west-3 sa-east-1 us-east-1 us-gov-west-1 us-west-2  |  eu-central-1 us-east-2 us-gov-east-1  | 
| Anthropic | Claude 3 Sonnet | anthropic.claude-3-sonnet-20240229-v1:0 |  ap-south-1 ap-southeast-2 ca-central-1 eu-central-1 eu-west-1 eu-west-2 eu-west-3 sa-east-1 us-east-1 us-west-2  |  ap-northeast-1 ap-northeast-2 ap-southeast-1 eu-central-1  | 
| Anthropic | Claude 3.5 Haiku | anthropic.claude-3-5-haiku-20241022-v1:0 |  us-west-2  |  us-east-1 us-east-2  | 
| Anthropic | Claude 3.5 Sonnet | anthropic.claude-3-5-sonnet-20240620-v1:0 |  ap-northeast-1 ap-northeast-2 ap-southeast-1 eu-central-1 eu-central-2 us-east-1 us-gov-west-1 us-west-2  |  ap-south-1 ap-southeast-2 eu-central-1 eu-west-1 eu-west-3 us-east-1 us-east-2 us-gov-east-1 us-west-2  | 
| Anthropic | Claude 3.5 Sonnet v2 | anthropic.claude-3-5-sonnet-20241022-v2:0 |  ap-southeast-2 us-west-2  |  ap-northeast-1 ap-northeast-2 ap-northeast-3 ap-south-1 ap-south-2 ap-southeast-1 ap-southeast-2 us-east-1 us-east-2  | 
| Anthropic | Claude 3.7 Sonnet | anthropic.claude-3-7-sonnet-20250219-v1:0 |  eu-west-2 us-gov-west-1  |  ap-northeast-1 ap-northeast-2 ap-northeast-3 ap-south-1 ap-south-2 ap-southeast-1 ap-southeast-2 eu-central-1 eu-north-1 eu-west-1 eu-west-3 us-east-1 us-east-2 us-gov-east-1 us-west-2  | 
| Anthropic | Claude Opus 4 | anthropic.claude-opus-4-20250514-v1:0 |  |  us-east-1 us-east-2 us-west-2  | 
| Anthropic | Claude Sonnet 4 | anthropic.claude-sonnet-4-20250514-v1:0 |  |  ap-northeast-1 ap-northeast-2 ap-northeast-3 ap-south-1 ap-south-2 ap-southeast-1 ap-southeast-2 eu-central-1 eu-north-1 eu-south-1 eu-south-2 eu-west-1 eu-west-3 us-east-1 us-east-2 us-west-2  | 
| Anthropic | Claude Sonnet 4.5 | anthropic.claude-sonnet-4-5-20250929-v1:0 | 該当なし |  ap-northeast-1 ap-northeast-2 ap-northeast-3 ap-south-1 ap-south-2 ap-southeast-1 ap-southeast-2 ca-central-1 eu-central-1 eu-central-2 eu-north-1 eu-south-1 eu-south-2 eu-west-1 eu-west-2 eu-west-3 sa-east-1 us-east-1 us-east-2 us-gov-east-1 us-gov-west-1 us-west-2  | 
| Cohere | コマンド R | cohere.command-r-v1:0 |  us-east-1 us-west-2  |  | 
| Cohere | コマンド R\$1 | cohere.command-r-plus-v1:0 |  us-east-1 us-west-2  |  | 
| DeepSeek | DeepSeek-R1 | deepseek.r1-v1:0 |  |  us-east-1 us-east-2 us-west-2  | 
| Meta | Llama 3 70B Instruct | meta.llama3-70b-instruct-v1:0 |  ap-south-1 ca-central-1 eu-west-2 us-east-1 us-gov-west-1 us-west-2  |  | 
| Meta | Llama 3 8B Instruct | meta.llama3-8b-instruct-v1:0 |  ap-south-1 ca-central-1 eu-west-2 us-east-1 us-gov-west-1 us-west-2  |  | 
| Meta | Llama 3.1 405B インストラクション | meta.llama3-1-405b-instruct-v1:0 |  us-west-2  |  us-east-2  | 
| Meta | Llama 3.1 70B Instruct | meta.llama3-1-70b-instruct-v1:0 |  us-west-2  |  us-east-1 us-east-2 us-west-2  | 
| Meta | Llama 3.1 8B インストラクション | meta.llama3-1-8b-instruct-v1:0 |  us-west-2  |  us-east-1 us-east-2 us-west-2  | 
| Meta | Llama 3.2 11B 指示 | meta.llama3-2-11b-instruct-v1:0 |  |  us-east-1 us-east-2 us-west-2  | 
| Meta | Llama 3.2 90B 指示 | meta.llama3-2-90b-instruct-v1:0 |  |  us-east-1 us-east-2 us-west-2  | 
| Meta | Llama 3.3 70B インストラクション | meta.llama3-3-70b-instruct-v1:0 |  us-east-2  |  us-east-1 us-east-2 us-west-2  | 
| Mistral AI | Mistral Large (24.02) | mistral.mistral-large-2402-v1:0 |  ap-south-1 ap-southeast-2 ca-central-1 eu-west-1 eu-west-2 eu-west-3 sa-east-1 us-east-1 us-west-2  |  | 
| Mistral AI | Mistral Large (24.07) | mistral.mistral-large-2407-v1:0 |  us-west-2  |  | 
| Mistral AI | Mistral Small (24.02) | mistral.mistral-small-2402-v1:0 |  us-east-1  |  | 

Amazon Bedrock ナレッジベースは、データの解析やレスポンスの生成を行う際の推論プロファイルの使用もサポートしています。推論プロファイルを使用すると、コストとメトリクスを追跡できます。また、クロスリージョン推論を実行して、モデル推論リクエストを一連のリージョンに分散し、スループットを向上させることもできます。推論プロファイルは、[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) または [CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html) リクエストで指定できます。詳細については、「[推論プロファイルを使用してモデル呼び出しリソースを設定する](inference-profiles.md)」を参照してください。

**重要**  
クロスリージョン推論を使用すると、データをリージョン間で共有できます。

SageMaker AI モデル、または独自のデータでトレーニングする[カスタムモデル](custom-models.md)も使用できます。

**注記**  
SageMaker AI モデルまたはカスタムモデルを使用する場合は、オーケストレーションプロンプトと生成プロンプトを指定する必要があります (詳細については、「[クエリとレスポンスの生成を設定してカスタマイズする](kb-test-config.md)」の「**ナレッジベースのプロンプトテンプレート**」を参照してください)。プロンプトには、ユーザーの入力とコンテキストにアクセスするための情報変数が含まれている必要があります。

Amazon Bedrock ナレッジベースの一部の機能では、リージョンとモデルのサポート状況が異なります。トピックを選択して、機能のサポート状況を表示してください。

**Topics**
+ [ベクトル埋め込みでサポートされているモデル](#knowledge-base-supported-embeddings)
+ [解析でサポートされているモデルとリージョン](#knowledge-base-supported-parsing)
+ [クエリ中の結果の再ランク付けでサポートされているモデルとリージョン](#knowledge-base-supported-rerank)
+ [構造化データストアを持つナレッジベースでサポートされているリージョン](#knowledge-base-supported-structured)

## ベクトル埋め込みでサポートされているモデル
<a name="knowledge-base-supported-embeddings"></a>

Amazon Bedrock ナレッジベースは、埋め込みモデルを使用してデータをベクトル埋め込みに変換し、その埋め込みをベクトルデータベースに保存します。詳細については、「[データをナレッジベースに変換する](kb-how-data.md)」を参照してください。

Amazon Bedrock ナレッジベースは、次の基盤モデルを使用したベクトル埋め込みをサポートしています。


| プロバイダー | モデル | モデル ID | 単一リージョンモデルのサポート | 
| --- | --- | --- | --- | 
| Amazon | Titan Embeddings G1 - Text | amazon.titan-embed-text-v1 |  ap-northeast-1 eu-central-1 us-east-1 us-west-2  | 
| Amazon | Titan Text Embeddings V2 | amazon.titan-embed-text-v2:0 |  ap-northeast-1 ap-northeast-2 ap-northeast-3 ap-south-1 ap-south-2 ap-southeast-2 ca-central-1 eu-central-1 eu-central-2 eu-north-1 eu-south-1 eu-south-2 eu-west-1 eu-west-2 eu-west-3 sa-east-1 us-east-1 us-east-2 us-gov-east-1 us-gov-west-1 us-west-2  | 
| Cohere | Embed English | cohere.embed-english-v3 |  ap-northeast-1 ap-south-1 ap-southeast-1 ap-southeast-2 ca-central-1 eu-central-1 eu-west-1 eu-west-2 eu-west-3 sa-east-1 us-east-1 us-west-2  | 
| Cohere | Embed Multilingual | cohere.embed-multilingual-v3 |  ap-northeast-1 ap-south-1 ap-southeast-1 ap-southeast-2 ca-central-1 eu-central-1 eu-west-1 eu-west-2 eu-west-3 sa-east-1 us-east-1 us-west-2  | 

埋め込みモデルは、次のベクトルタイプをサポートしています。


****  

| モデル名 | サポートされているベクトルタイプ | サポートされているディメンションの数 | 
| --- | --- | --- | 
| Amazon Titan Embeddings G1 - Text | 浮動小数点 | 1536 | 
| Amazon Titan Text Embeddings V2 | 浮動小数点、バイナリ | 256、512、1024 | 
| Cohere Embed (英語) | 浮動小数点、バイナリ | 1024 | 
| Cohere Embed (多言語) | 浮動小数点、バイナリ | 1024 | 
| Amazon Titan Multimodal Embeddings G1 | 浮動小数点 | 1024 | 
| Cohere 埋め込み v3 (マルチモーダル) | 浮動小数点、バイナリ | 1024 | 

## 解析でサポートされているモデルとリージョン
<a name="knowledge-base-supported-parsing"></a>

データをベクトル埋め込みに変換する場合、Amazon Bedrock ナレッジベースでデータを解析するためのさまざまなオプションがあります。詳細については、「[データソースの解析オプション](kb-advanced-parsing.md)」を参照してください。

解析オプションのサポート状況を以下に示します。
+ Amazon Bedrock Data Automation パーサーは米国西部 (オレゴン) でサポートされており、現在プレビュー中のため、変更される可能性があります。
+ 次の基盤モデルファミリーをパーサーとして使用できます。
  + Claude ビジョンモデル
  + Nova ビジョンモデル
  + LLama 4 ビジョンモデル

  基盤モデルの解析は、これらのモデルが (クロスリージョン推論ではなく) 直接利用可能な AWS リージョンで使用できます。現在のリージョン別のモデルの可用性については、「[Amazon Bedrock でサポートされている基盤モデル](models-supported.md)」を参照してください。

## クエリ中の結果の再ランク付けでサポートされているモデルとリージョン
<a name="knowledge-base-supported-rerank"></a>

ナレッジベースでのクエリの結果を取得する場合、再ランク付けモデルを使用して、ナレッジベースでのクエリの結果を再ランク付けできます。詳細については、「[ナレッジベースのクエリを実行してデータを取得する](kb-test-retrieve.md)」および「[ナレッジベースをクエリし、取得したデータに基づいてレスポンスを生成する](kb-test-retrieve-generate.md)」を参照してください。

再ランク付けをサポートするモデルとリージョンのリストについては、「[Amazon Bedrock での再ランク付けをサポートするリージョンとモデル](rerank-supported.md)」を参照してください。

## 構造化データストアを持つナレッジベースでサポートされているリージョン
<a name="knowledge-base-supported-structured"></a>

構造化データストアを持つナレッジベースを使用すると、ナレッジベースを構造化データストアに接続して、自然言語クエリを SQL クエリに変換できます。詳細については、「[構造化データストアに接続してナレッジベースを構築する](knowledge-base-build-structured.md)」を参照してください。

構造化データストアを持つナレッジベースは、以下にありますAWS リージョン。
+ 欧州 (フランクフルト)
+ 欧州 (チューリッヒ)
+ 欧州 (アイルランド)
+ 欧州 (ロンドン)
+ 欧州 (パリ)
+ アジアパシフィック (東京)
+ アジアパシフィック (ソウル)
+ アジアパシフィック (ムンバイ)
+ アジアパシフィック (シンガポール)
+ アジアパシフィック (シドニー)
+ カナダ (中部)
+ 南米 (サンパウロ)
+ 米国東部 (バージニア北部)
+ 米国東部 (オハイオ)
+ 米国西部 (オレゴン)
+ AWSGovCloud (米国西部)

# ナレッジベースを設定せずにドキュメントとチャットする
<a name="knowledge-base-chatdoc"></a>

Amazon Bedrock コンソールの **[ドキュメントとチャット]** を使用すると、ナレッジベースを設定しなくても、ナレッジベースを簡単にテストプレイできます。コンソールチャットウィンドウにドキュメントをロードしたり、ドキュメントをドラッグアンドドロップして、質問を開始したりできます。**[ドキュメントとチャット]** では、ドキュメントを使用して、質問への回答、分析の実施、概要の作成、番号付きリストのフィールドの項目化、またはコンテンツの書き換えを行います。**[ドキュメントとチャット]** では、使用後にドキュメントやそのデータは保存されません。

**注記**  
**[ドキュメントとチャット]** 機能は現在、Anthropic Sonnet モデルに最適にサポートされています。ナレッジベースモデルにアクセスして使用する方法の詳細については、[ナレッジベースでサポートされているモデル](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-supported.html)を参照してください。  
ドキュメントとチャットするときにリランカーモデルを使用することはできません。

また、ナレッジベースを設定せずに、チャットアプリケーションまたはフローアプリケーションを簡単にプロトタイプ化することもできます。[Amazon Bedrock Studio](https://docs.aws.amazon.com/bedrock/latest/userguide/br-studio.html) を使用すると、コンピュータからドキュメントをアップロードして、アプリケーション向けにデータまたはデータソースを提供できます。Amazon Bedrock Studio は、Amazon Bedrock IDE という名前に変更され、Amazon SageMaker Unified Studio で使用できるようになりました。詳細については、「[Amazon Bedrock IDE](https://docs.aws.amazon.com/sagemaker-unified-studio/latest/userguide/bedrock.html)」を参照してください。

ナレッジベースの一部として **[ドキュメントとチャット]** を使用するには、以下のタブを選択し、ステップに従います。

------
#### [ Console ]

**Amazon Bedrock でドキュメントとチャットするには:**

1. Amazon Bedrock コンソール ([https://console.aws.amazon.com/bedrock/](https://console.aws.amazon.com/bedrock/)) を開きます。

1. 左側のナビゲーションペインで、**[ナレッジベース]** と **[ドキュメントとチャット]** を選択します。

1. **[ドキュメントとチャット]** タブの **[モデル]** で **[モデルを選択]** を選択します。

1. ドキュメント分析に使用するモデルを選択し、**[適用]** を選択します。

1. **[ドキュメントとチャット]** タブでシステムプロンプトを入力します。

1. **[データ]** で、**[お使いのコンピュータ]** または **[S3]** を選択します。

1. **[ドキュメントを選択]** を選択して、ドキュメントをアップロードします。**[クエリを書き込む]** というボックスのチャットコンソールにドキュメントをドラッグアンドドロップすることもできます。
**注記**  
ファイルタイプ: PDF、MD、TXT、DOC、DOCX、HTML、CSV、XLS、XLSX。10MB 未満のファイルを使用する場合は、プリセット固定トークンの制限があります。テキストが多い 10MB 未満のファイルは、トークンの制限を超える可能性があります。

1. **[クエリを書き込む]** というボックスにカスタムプロンプトを入力します。カスタムプロンプトを入力するか、デフォルトのプロンプトを使用できます。ロードされたドキュメントとプロンプトがチャットウィンドウの下部に表示されます。

1. **[実行]** を選択します。レスポンスは、回答のソースマテリアル情報を表示する **[ソースチャンクを表示する]** オプションを使用して検索結果を生成します。

1. 新しいファイルをロードするには、X を選択してチャットウィンドウにロードされている現在のファイルを削除し、ドラッグアンドドロップして新しいファイルを作成します。新しいプロンプトを入力し、**[実行]** を選択します。
**注記**  
新しいファイルを選択すると、以前のクエリとレスポンスが消去され、新しいセッションが開始します。

------

# ユーザーまたはロールがナレッジベースを作成および管理するためのアクセス許可を設定する
<a name="knowledge-base-prereq-permissions-general"></a>

Amazon Bedrock ナレッジベースに関連するアクションを実行するユーザーまたはロールには、アクションを実行するアクセス許可を付与するポリシーをアタッチする必要があります。ユーザーがこれらのナレッジベースから情報を取得し、そこからレスポンスを生成できるようにするアクセス許可について説明します。

以下のセクションを展開して、特定のユースケースのアクセス許可を設定する方法を確認してください。

## ロールにナレッジベースの作成と管理を許可する
<a name="w2aac28c10c21b7b1"></a>

ナレッジベースの作成、構造化データストアへの接続、ナレッジベースの管理、データソースからナレッジベースへの取り込みジョブの開始と管理を IAM ロールに許可するには、`KnowledgeBase` アクション、`DataSource` アクション、`IngestionJob` アクションへのアクセス許可を付与する必要があります。ナレッジベースにタグを付けるアクセス許可を付与するには、`bedrock:TagResource` と `bedrock:UntagResource` へのアクセス許可を追加します。

**注記**  
ユーザーまたはロールに [AmazonBedrockFullAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonBedrockFullAccess) AWS 管理ポリシーがアタッチされている場合は、この前提条件をスキップできます。

これらのアクションの実行をロールに許可するには、次のポリシーをロールにアタッチします。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "CreateKB",
            "Effect": "Allow",
            "Action": [
                "bedrock:CreateKnowledgeBase"
            ],
            "Resource": "*"
        },
        {
            "Sid": "KBDataSourceManagement",
            "Effect": "Allow",
            "Action": [
                "bedrock:GetKnowledgeBase",
                "bedrock:ListKnowledgeBases",
                "bedrock:UpdateKnowledgeBase",
                "bedrock:DeleteKnowledgeBase",
                "bedrock:StartIngestionJob",
                "bedrock:GetIngestionJob",
                "bedrock:ListIngestionJobs",
                "bedrock:StopIngestionJob",
                "bedrock:TagResource",
                "bedrock:UntagResource"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:knowledge-base/*"
            ]
        }
    ]
}
```

------

ナレッジベースを作成したら、ワイルドカード (*\$1*) を作成したナレッジベースの ID に置き換えて、`KBDataSourceManagement` ステートメントのアクセス許可の範囲を絞り込むことをお勧めします。

## ロールにナレッジベース API オペレーションの実行を許可する
<a name="w2aac28c10c21b7b3"></a>

このセクションでは、ナレッジベースに対して `Retrieve` API オペレーションと `RetrieveAndGenerate` API オペレーションを実行するために必要なアクセス許可について説明します。

次のポリシーをロールにアタッチします。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "GetKB",
            "Effect": "Allow",
            "Action": [
                "bedrock:GetKnowledgeBase"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:knowledge-base/${KnowledgeBaseId}"
            ]
        },
        {
            "Sid": "Retrieve",
            "Effect": "Allow",
            "Action": [
                "bedrock:Retrieve"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:knowledge-base/${KnowledgeBaseId}"
            ]
        },
        {
            "Sid": "RetrieveAndGenerate",
            "Effect": "Allow",
            "Action": [
                "bedrock:RetrieveAndGenerate"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
```

------

ユースケースに応じて、不要なステートメントは削除できます。
+ `GetKB` ステートメントは、ナレッジベースの情報を取得するために使用されます。
+ `Retrieve` ステートメントは、[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) を呼び出してデータストアからデータを取得するために必要です。
+ `RetrieveAndGenerate` ステートメントは、[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) を呼び出してデータストアからデータを取得し、そのデータに基づいてレスポンスを生成するために必要です。

## RetrieveAndGenerate の基盤モデルへのアクセスをリクエストする
<a name="knowledge-base-prereq-structured-model-access"></a>

[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) を使用してデータソースから取得したデータに基づいてレスポンスを生成する場合は、「[Access Amazon Bedrock foundation models](model-access.md)」の手順に従って、生成に使用する基盤モデルへのアクセスをリクエストします。

アクセス許可をさらに制限するには、アクションを省略するか、アクセス許可をフィルタリングするためのリソースや条件キーを指定できます。アクション、リソース、条件キーの詳細については、「*サービス認可リファレンス*」の以下のトピックを参照してください。
+ [Amazon Bedrock で定義されるアクション](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-actions-as-permissions) – アクション、`Resource` フィールドで範囲を定義できるリソースタイプ、`Condition` フィールドでアクセス許可をフィルタリングできる条件キーについて説明しています。
+ [Amazon Bedrock で定義されるリソースタイプ](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-resources-for-iam-policies) – Amazon Bedrock のリソースタイプについて説明しています。
+ [Amazon Bedrock の条件キー](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-policy-keys) – Amazon Bedrock の条件キーについて説明しています。

# データソースに接続してナレッジベースを構築する
<a name="knowledge-base-build"></a>

Amazon Bedrock ナレッジベースは、データソースに保存されているさまざまなファイルタイプをサポートしています。データソースからのデータを解釈するために、Amazon Bedrock ナレッジベースでは、データの数値表現であるベクトル埋め込みにデータを変換する必要があります。これらの埋め込みは、クエリのベクトル表現と比較することで類似性を評価し、データ取得時に返すソースを決定できます。

ナレッジベースをデータソースに接続するには、以下の一般的な手順を実行します。

1. ナレッジベースをサポートされているデータソースに接続します。

1. データソースに画像、オーディオ、ビデオファイルなどのマルチモーダルデータが含まれている場合は、マルチモーダルコンテンツをサポートする適切な処理アプローチと埋め込みモデルを選択する必要があります。
**注記**  
マルチモーダルデータは、Amazon S3 およびカスタムデータソースでのみサポートされています。マルチモーダルコンテンツの使用に関する包括的なガイダンスについては、「」を参照してください[マルチモーダルコンテンツのナレッジベースを構築する](kb-multimodal.md)。

1. データソース内のデータをベクトル埋め込みに変換するには、埋め込みモデルを選択します。

1. データのベクトル表現を保存するには、ベクトルストアを選択します。

1. ベクトル埋め込みに変換するために、データを同期します。

1. データソースのデータを変更する場合は、変更を再同期する必要があります。

**Topics**
+ [非構造化データソースを使用して Amazon Bedrock ナレッジベースを作成するための前提条件](knowledge-base-prereq.md)
+ [Amazon Bedrock ナレッジベースで OpenSearch マネージドクラスターを使用するために必要な前提条件とアクセス許可](kb-osm-permissions-prereq.md)
+ [Amazon Bedrock ナレッジベースでデータソースに接続してナレッジベースを作成する](knowledge-base-create.md)
+ [Amazon Bedrock ナレッジベースとデータを同期する](kb-data-source-sync-ingest.md)
+ [変更をナレッジベースに直接取り込む](kb-direct-ingestion.md)
+ [Amazon Bedrock ナレッジベースのデータソース情報を表示する](kb-ds-info.md)
+ [Amazon Bedrock ナレッジベースのデータソースを変更する](kb-ds-update.md)
+ [Amazon Bedrock ナレッジベースからデータソースを削除する](kb-ds-delete.md)

# 非構造化データソースを使用して Amazon Bedrock ナレッジベースを作成するための前提条件
<a name="knowledge-base-prereq"></a>

Amazon Bedrock ナレッジベースには、レスポンスを取得して生成するためのデータとモデル、データのベクトル表現を保存するベクトルストア、データにアクセスしてアクションを実行するための AWS Identity and Access Management アクセス許可が必要です。

ナレッジベースを作成する前に、次の前提条件を満たす必要があります。一般的なアクセス許可の要件については、「[ユーザーまたはロールがナレッジベースを作成および管理するためのアクセス許可を設定する](knowledge-base-prereq-permissions-general.md)」を参照してください。

1. データが[サポートされているデータソースコネクタ](data-source-connectors.md)内にあることを確認します。

1. (オプション) [独自のサポートされているベクトルストアを設定します](knowledge-base-setup.md)。を使用してベクトルストア AWS マネジメントコンソール を自動的に作成する場合は、このステップをスキップできます。

1. (オプション) の手順に従って、適切なアクセス許可を持つカスタム AWS Identity and Access Management (IAM) [サービスロール](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-role)を作成します[Amazon Bedrock ナレッジベースのサービスロールを作成する](kb-permissions.md)。サービスロールを作成するには、 AWS マネジメントコンソール を使用します。
**注記**  
Amazon OpenSearch Service (Amazon OpenSearch Serverless を含む) を使用してナレッジベースを作成する場合、サービスロールには、AWS マネージド BedrockFullAccess ポリシーでカバーされているアクセス許可以外の追加のアクセス許可が必要です。これには、`aoss:CreateAccessPolicy`、`iam:CreateServiceLinkedRole`、`iam:CreateRole` などのアクセス許可があります。

1. (オプション) [ナレッジベースリソースの暗号化](encryption-kb.md) のステップに従って、追加のセキュリティ設定を行います。

1. (オプション) [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) API オペレーションを使用してナレッジベースから取得した情報に基づいてレスポンスを生成する予定の場合は、「[Access Amazon Bedrock foundation models](model-access.md)」の手順に従って、使用するリージョンで使用するモデルへのアクセスをリクエストします。

**Topics**
+ [Amazon Bedrock ナレッジベースデータの前提条件](knowledge-base-ds.md)
+ [ナレッジベース用に作成したベクトルストアを使用するための前提条件](knowledge-base-setup.md)

# Amazon Bedrock ナレッジベースデータの前提条件
<a name="knowledge-base-ds"></a>

データソースには、ナレッジベースをクエリする際に取得できる情報を含むファイルまたはコンテンツが含まれます。ドキュメントまたはコンテンツは、[サポートされているデータソース](https://docs.aws.amazon.com/bedrock/latest/userguide/data-source-connectors.html) の 1 つ以上に保存する必要があります。

## ナレッジベースデータにサポートされているドキュメント形式と制限
<a name="kb-ds-supported-doc-formats-limits"></a>

[サポートされているデータソース](https://docs.aws.amazon.com/bedrock/latest/userguide/data-source-connectors.html)に接続すると、コンテンツはナレッジベースに取り込まれます。

Amazon S3 を使用してファイルを保存する場合、またはデータソースにアタッチされたファイルが含まれている場合は、まず各ソースドキュメントファイルが次の内容に準拠していることを確認する必要があります。
+ ソースファイルは、次のサポートされている形式です。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/knowledge-base-ds.html)
+ 各ファイルサイズは 50 MB のクォータを超えないようにしてください。

Amazon S3 またはカスタムデータソースを使用する場合は、JPEG (.jpeg) または PNG (.png) イメージ、あるいは表、グラフ、図、その他のイメージを含むファイルなどのマルチモーダルデータを使用できます。

**注記**  
.JPEG ファイルと .PNG ファイルの最大サイズは、3.75 MB です。

# ナレッジベース用に作成したベクトルストアを使用するための前提条件
<a name="knowledge-base-setup"></a>

ドキュメント変換先のベクトル埋め込みを保存するには、ベクトルストアを使用します。Amazon Bedrock ナレッジベースでは、一部のベクトルストアのクイック作成フローがサポートされるため、これらのベクトルストアのいずれかで Amazon Bedrock によりベクトルインデックスが自動的に作成されるよう設定する場合は、この前提条件をスキップして「[Amazon Bedrock ナレッジベースでデータソースに接続してナレッジベースを作成する](knowledge-base-create.md)」に進みます。

標準の浮動小数点 (float32) ベクトル埋め込みの代わりにバイナリベクトル埋め込みを保存する場合は、バイナリベクトルをサポートするベクトルストアを使用する必要があります。

**注記**  
Amazon OpenSearch Serverless クラスターと Amazon OpenSearch Managed クラスターは、バイナリベクトルの保存がサポートされる唯一のベクトルストアです。

独自のサポートされているベクトルストアを設定して、データのベクトル埋め込み表現をインデックス化できます。次のデータ用にフィールドを作成できます。
+ 選択した埋め込みモデルによってデータソースのテキストから生成されたベクトル用のフィールド。
+ データソース内のファイルから抽出されたテキストチャンク用フィールド。
+ Amazon Bedrock が管理するソースファイルのメタデータのフィールド。
+ (Amazon Aurora データベースを使用して[メタデータのフィルタリング](kb-test-config.md)を設定する場合) ソースファイルに関連付けるメタデータのフィールド。他のベクトルストアでフィルタリングを設定する場合は、フィルタリングのためにこれらのフィールドを設定する必要はありません。

KMS キーを使用して、サードパーティーのベクトルストアを暗号化できます。詳細については、「[Encryption of knowledge base resources](https://docs.aws.amazon.com/bedrock/latest/userguide/encryption-kb.html)」を参照してください。

ベクトルインデックスの作成に使用するベクトルストアサービスに対応するタブを選択します。

**注記**  
埋め込みモデルとベクトルディメンションの選択は、使用可能なベクトルストアの選択に影響を与える可能性があります。希望するベクトルストアを使用できない場合は、互換性のあるオプション (埋め込みモデルとベクトルディメンション) を選択します。

------
#### [ Amazon OpenSearch Serverless ]

1. でアクセス許可を設定し、Amazon OpenSearch Serverless でベクトル検索コレクションを作成するには AWS マネジメントコンソール、「Amazon OpenSearch Service デベロッパーガイド」の[「ベクトル検索コレクションの使用](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-vector-search.html)」のステップ 1 と 2 に従います。コレクションを設定するときは、以下の考慮事項に注意してください。

   1. コレクションに任意の名前と説明を付けます。

   1. コレクションをプライベートにするには、**[セキュリティ]** セクションの **[標準作成]** を選択します。次に、**[ネットワークアクセス設定]** セクションで、**[アクセスタイプ]** として **[VPC]** を選択し、VPC エンドポイントを選択します。Amazon OpenSearch Serverless コレクションの VPC エンドポイントの設定の詳細については、「Amazon OpenSearch Service デベロッパーガイド」の「[Access Amazon OpenSearch Serverless using an interface endpoint (AWS PrivateLink)](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-vpc.html)」を参照してください。

1. コレクションを作成したら、ナレッジベースを作成するときに備えて **[コレクション ARN]** を書き留めます。

1. 左側のナビゲーションペインの **[サーバーレス]** で **[コレクション]** を選択します。次に、ベクトル検索コレクションを選択します。

1. **[インデックス]** タブを選択します。次に、**[ベクトルインデックスを作成]** を選択します。

1. **[ベクトルインデックスの詳細]** セクションで、ベクトルインデックス名フィールドに **[ベクトルインデックスの名前]** を入力します。

1. **[ベクトルフィールド]** セクションで**[ベクトルフィールドの追加]** を選択します。Amazon Bedrock は、データソースのベクトル埋め込みをこのフィールドに保存します。次の設定の詳細を入力します。
   + **ベクトルフィールド名** – フィールドの名前を指定します (例: **embeddings**)。
   + **エンジン** – 検索に使用するベクトルエンジン。**[faiss]** を選択します。
   + **ディメンション** - ベクトルのディメンション (次元) の数。ベクトルに含めるディメンションの数を決定するには、次の表を参照してください。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/knowledge-base-setup.html)
   + **距離メトリクス** - ベクトル間の類似性を測定するために使用されるメトリクス。浮動小数点ベクトル埋め込みには、**ユークリッド**を使用することをお勧めします。

1. **[メタデータの管理]** セクションを展開し、ナレッジベースがベクトルを使用して取得できる追加のメタデータを保存するよう、ベクトルインデックスを設定します。次の表は、各フィールドに対して指定するフィールドと値を示しています。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/knowledge-base-setup.html)

1. ナレッジベースの作成時に、ベクトルインデックス名、ベクトルフィールド名、メタデータ管理マッピングフィールド名に選択した名前を書き留めます。次に **[作成]** を選択します。

ベクトルインデックスを作成したら、[[ナレッジベースの作成]](knowledge-base-create.md) に進むことができます。次の表は、メモした各情報を入力する場所をまとめたものです。


| フィールド | ナレッジベース設定 (コンソール) の対応するフィールド | ナレッジベース設定 (API) の対応するフィールド | 説明 | 
| --- | --- | --- | --- | 
| コレクション ARN | コレクション ARN | collectionARN | ベクトル検索コレクションの Amazon リソースネーム (ARN)。 | 
| ベクトルインデックス名 | ベクトルインデックス名 | vectorIndexName | ベクトルインデックスの名前。 | 
| ベクトルフィールド名 | ベクトルフィールド | vectorField | データソースのベクトル埋め込みを保存するフィールドの名前。 | 
| メタデータ管理 (最初のマッピングフィールド) | テキストフィールド | textField | データソースから未加工のテキストを保存するフィールドの名前。 | 
| メタデータ管理 (2 番目のマッピングフィールド) | Bedrock が管理するメタデータフィールド | metadataField | Amazon Bedrock が管理するメタデータを保存するフィールドの名前。 | 

Amazon OpenSearch Serverless でのベクトルストアの設定に関する詳細なドキュメントについては、「Amazon OpenSearch Service デベロッパーガイド」の「[Working with vector search collections](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-vector-search.html)」を参照してください。

------
#### [ Amazon OpenSearch Service Managed Clusters ]

**重要**  
OpenSearch マネージドクラスターでドメインリソースを使用する前に、特定の IAM アクセス許可とポリシーを設定する必要があります。詳細については、「[Amazon Bedrock ナレッジベースで OpenSearch マネージドクラスターを使用するために必要な前提条件とアクセス許可アクセス許可設定の概要](kb-osm-permissions-prereq.md)」を参照してください。
データインジェストに障害が発生した場合は、OpenSearch ドメイン容量が不足している可能性があります。この問題を解決するには、より高い IOPS をプロビジョニングし、スループット設定を増やして、ドメインの容量を増やします。詳細については、「[Amazon OpenSearch Service の運用上のベストプラクティス](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/bp.html)」を参照してください。

1.  AWS マネジメントコンソールの OpenSearch クラスターでドメインとベクトルインデックスを作成するには、「*Amazon OpenSearch Service デベロッパーガイド*」の「[OpenSearch Service ドメインの作成と管理](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/createupdatedomains.html)」で説明されているステップに従います。

   ドメインを設定するときは、以下の考慮事項に注意してください。

   1. ドメインに任意の名前を付けます。

   1. [**簡易作成**] オプションを使用して、ドメインの作成をすばやく開始することをお勧めします。
**注記**  
このオプションでは、スループットが低いドメインが作成されます。ワークロードが大きいためにより高いスループットが必要な場合は、[**標準作成**] オプションを選択してください。必要に応じて、後でキャパシティを調整できます。このオプションでは、最小キャパシティから始めて、必要に応じて後で変更できます。

   1. [ネットワーク] では、[**パブリックアクセス**] を選択する必要があります。VPC の背後にある OpenSearch ドメインは、ナレッジベースではサポートされていません。

   1. [**バージョン**] は次のようにします。バイナリベクトル埋め込みを使用している場合、Amazon Bedrock ナレッジベースには Engine バージョン 2.16 以降が必要です。さらに、k-nn インデックスを作成するには 2.13 以降のバージョンが必要です。詳細については、「*Amazon OpenSearch Service デベロッパーガイド*」の「[K-NN 検索](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/knn.html)」を参照してください。

   1. [**デュアルスタックモード**] を使用することをお勧めします。

   1. [**きめ細かなアクセスコントロール**] を有効にしてドメイン内のデータを保護し、OpenSearch ドメインへのアクセスをナレッジベースサービスロールに許可してリクエストを行うアクセス許可をさらに制御することをお勧めします。

   1. その他のすべての設定をデフォルト値のままにし、[**作成**] を選択してドメインを作成します。

1. ドメインが作成されたら、それをクリックして、ナレッジベースの作成時に [**ドメイン ARN**] と [**ドメインエンドポイント**] を書き留めます。

1. ドメインを作成したら、OpenSearch ダッシュボードで次のコマンドを実行するか、curl コマンドを使用してベクトルインデックスを作成できます。詳細については、「[OpenSearch ドキュメント](https://opensearch.org/docs/latest/search-plugins/knn/knn-index/)」を参照してください。

   コマンドを実行するときは、次のようにします。
   + ベクトルフィールドの名前を指定します (例: **embeddings**)。
   + 検索に使用するベクトルが **faiss** であることを確認します。**nmslib** はサポートされていません。
   + ベクトル内のディメンションの数については、次の表を参照し、ベクトルに含めるディメンションの数を決定してください。
**注記**  
Titan V2 埋め込み - テキストモデルでは複数のディメンションがサポートされます。256 または 512 にすることもできます。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/knowledge-base-setup.html)
   + ナレッジベースがベクトルを使用して取得できる追加のメタデータを保存するよう、ベクトルインデックスを設定する 2 つのフィールドを追加できます。次の表は、フィールドと、各フィールドに対して指定する値を示しています。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/knowledge-base-setup.html)

   ```
   PUT /<index-name>
   {
       "settings": {
           "index": {
               "knn": true
           }
       },
       "mappings": {
           "properties": {
               "<vector-name>": {
                   "type": "knn_vector",
                   "dimension": <embedding-dimension>,
                   "data_type": "binary",          # Only needed for binary embeddings
                   "space_type": "l2" | "hamming", # Use l2 for float embeddings and hamming for binary embeddings
                   "method": {
                       "name": "hnsw",
                       "engine": "faiss",
                       "parameters": {
                           "ef_construction": 128,
                           "m": 24
                       }
                   }
               },
   
               "AMAZON_BEDROCK_METADATA": {
                   "type": "text",
                   "index": "false"
               },
               "AMAZON_BEDROCK_TEXT_CHUNK": {
                   "type": "text",
                   "index": "true"            
               }
           }
       }
   }
   ```

1. ドメイン ARN とエンドポイントに加えて、ナレッジベースの作成時にベクトルインデックス名、ベクトルフィールド名、メタデータ管理マッピングフィールド名に選択した名前を書き留めます。

ベクトルインデックスを作成したら、[ナレッジベースの作成](knowledge-base-create.md)に進むことができます。次の表は、メモした各情報を入力する場所をまとめたものです。


| フィールド | ナレッジベース設定 (コンソール) の対応するフィールド | ナレッジベース設定 (API) の対応するフィールド | 説明 | 
| --- | --- | --- | --- | 
| ドメイン ARN | ドメイン ARN | domainARN | OpenSearch ドメインの Amazon リソースネーム (ARN)。 | 
| ドメインエンドポイント | ドメインエンドポイント | domainEndpoint | OpenSearch ドメインに接続するエンドポイント。 | 
| ベクトルインデックス名 | ベクトルインデックス名 | vectorIndexName | ベクトルインデックスの名前。 | 
| ベクトルフィールド名 | ベクトルフィールド | vectorField | データソースのベクトル埋め込みを保存するフィールドの名前。 | 
| メタデータ管理 (最初のマッピングフィールド) | テキストフィールド | textField | データソースから未加工のテキストを保存するフィールドの名前。 | 
| メタデータ管理 (2 番目のマッピングフィールド) | Bedrock が管理するメタデータフィールド | metadataField | Amazon Bedrock が管理するメタデータを保存するフィールドの名前。 | 

------
#### [ Amazon S3 Vectors ]

Amazon S3 Vectors では、コスト効率の高いベクトルストレージが Amazon S3 に用意されており、ベクトルデータの保存とクエリに使用できます。1 秒未満のクエリパフォーマンスで、大きなベクトルデータセットの耐久性と伸縮自在なストレージが提供されます。Amazon S3 Vectors は、低頻度のクエリワークロードに最適で、検索拡張生成 (RAG) およびセマンティック検索アプリケーションで使用するとコストを削減できます。

Amazon S3 Vectors では、セマンティックの意味と類似性に基づいてクエリできるベクトルインデックスを含む S3 ベクトルバケットが導入されています。インフラストラクチャをプロビジョニングすることなく、ベクトルデータを大規模に保存、アクセス、クエリしながら、1 秒未満のクエリ応答時間を実現し、コストを削減するために使用できます。ベクトルバケット内では、ベクトルデータをベクトルインデックス内で整理できます。ベクトルバケットには複数のベクトルインデックスを含めることができます。詳細については、「*Amazon S3 ユーザーガイド*」の「[Amazon S3 Vectors](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-vectors.html)」を参照してください。

**注記**  
Amazon Bedrock と Amazon S3 Vectors の両方が利用可能なすべての AWS リージョンでAmazon S3のナレッジベースを作成できます。Amazon S3 Vectors のリージョンの可用性については、「*Amazon S3 ユーザーガイド*」の「[Amazon S3 Vectors](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-vectors.html)」を参照してください。
Amazon Bedrock ナレッジベースで階層チャンキングで非常に高いトークン数を使用する場合、親子チャンク関係と階層コンテキストが Amazon S3 Vectors にフィルタリング不可能なメタデータとして保存されるため、メタデータの最大サイズ制限を超える可能性があります。ベクトルあたりのメタデータサイズ制限の詳細については、*Amazon S3ユーザーガイド*」の[「制限と制限](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-vectors-limitations.html)」を参照してください。チャンキング戦略については、「[ナレッジベースのコンテンツのチャンキングの仕組み](kb-chunking.md)」を参照してください。
<a name="metadata-support"></a>
**メタデータのサポート**  
メタデータをキーと値のペアとして各ベクトルにアタッチできます。デフォルトでは、メタデータはフィルタリング可能で、類似度検索クエリで使用して、日付、カテゴリ、ユーザー設定などの条件でフィルタリングできます。

ベクトルインデックスの作成時にフィルタリングできないようにメタデータを設定することもできます。Amazon S3 ベクトルインデックスでは、文字列、ブール値、および数値タイプがサポートされます。

Amazon Bedrock ナレッジベースで Amazon S3 Vectors を使用する場合、ベクトルごとに最大 1 KB のカスタムメタデータ (フィルタリング可能なメタデータとフィルタリング不可能なメタデータの両方を含む) と 35 のメタデータキーをアタッチできます。ベクトルあたりのメタデータサイズ制限の詳細については、*Amazon S3ユーザーガイド*」の[「制限と制限](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-vectors-limitations.html)」を参照してください。

メタデータがこれらの制限を超えると、取り込みジョブはベクトルインデックスの入力時に例外をスローします。詳細については、「*Amazon S3 ユーザーガイド*」の「[Amazon S3 Vectors](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-vectors.html)」を参照してください。

**必要なアクセス許可**  
IAM ポリシーで、Amazon Bedrock が S3 ベクトルバケット内のベクトルインデックスにアクセスすることが許可されていることを確認します。必要なアクセス許可の詳細については、「[Amazon Bedrock ナレッジベースのサービスロールを作成する](kb-permissions.md)」を参照してください。

**S3 ベクトルバケットとインデックスを作成する**  
ナレッジベースで Amazon S3 Vectors を使用するには、S3 ベクトルバケットとベクトルインデックスを作成する必要があります。Amazon S3 コンソール、または AWS SDK を使用して AWS CLI、ベクトルバケットとインデックスを作成できます。詳しい手順については、「*Amazon S3 ユーザーガイド*」の「[ベクトルインデックスを作成する](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-vectors-index-create.html)」を参照してください。

[Amazon S3 コンソール](https://console.aws.amazon.com/s3/vector-buckets#)でベクトルバケットとインデックスを作成するときは、次の考慮事項に注意してください。

1. S3 ベクトルバケットを作成するときは、次の考慮事項に注意してください。
   + 一意の**ベクトルバケット名**を指定します。
   + (オプション) Amazon S3 では、**Amazon S3 マネージドキー (SSE-S3) によるデフォルトのサーバー側暗号化**を使用して、データが自動的に暗号化されます。このデフォルトの暗号化を使用するか、代わりに ** AWS Key Management Service キーによるサーバー側の暗号化 (SSE-KMS)** を使用するかを選択できます。
**注記**  
ベクトルバケットを作成した後、暗号化タイプを変更することはできません。

     step-by-step手順については、[AWS 「KMS キーによる暗号化](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-vectors-bucket-encryption.html)」を参照してください。

1. S3 ベクトルバケットを作成したら、ナレッジベースの作成時にベクトルバケットの **Amazon リソースネーム (ARN)** を書き留めます。

1. 作成したベクトルバケットを選択し、ベクトルインデックスを作成します。ベクトルインデックスを作成するときは、次の考慮事項に注意してください。
   + **インデックスフィールド名** – フィールドの名前を指定します (例: **embeddings**)。
   + **ディメンション** - ベクトルのディメンションの数。ディメンションは 1～4,096 の値にする必要があります。埋め込みモデルの選択内容に基づいてベクトルに含めるディメンションの数を決定するには、次の表を参照してください。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/knowledge-base-setup.html)
   + 
**注記**  
Amazon S3 Vectors では浮動小数点埋め込みのみサポートされます。バイナリ埋め込みはサポートされていません。

     **距離メトリクス** - ベクトル間の類似性を測定するために使用されるメトリクス。**コサイン**または**ユークリッド**を使用できます。

1. [**その他の設定**] を展開し、[**フィルタリングできないメタデータ**] フィールドでフィルタリングできないメタデータを指定します。

   最大 10 個のフィルタリングできないメタデータキーを設定できます。[**キーの追加**] を選択し、キーとして `AMAZON_BEDROCK_TEXT` と `AMAZON_BEDROCK_METADATA` を追加します。

1. **[暗号化]** で、**[暗号化タイプを指定する]** を選択します。**[暗号化のバケット設定を使用する]** か、ベクトルインデックスの暗号化設定を上書きするかを選択できます。バケットレベルの設定を上書きする場合は、ベクトルインデックスの暗号化タイプを Key **Management Service AWS キーによるサーバー側の暗号化 (SSE-KMS)** または ** Amazon S3 マネージドキーによるデフォルトのサーバー側の暗号化 (SSE-S3) **として指定できます。ベクトルインデックスの暗号化設定の詳細については、[Amazon S3 Vectors でのデータ保護と暗号化](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-vectors-data-encryption.html)」を参照してください。

1. **タグ (オプション)** では、キーと値のペアとしてタグを追加して、 AWS 請求情報とコスト管理を使用してベクトルインデックスのコストを追跡および整理できます。**キー**と**値**を入力します。別のタグを追加するには、[**タグの追加**] を選択します。ベクトルインデックスには最大 50 個のタグを入力できます。詳細については、[Amazon S3ベクトルインデックスでのタグ](https://docs.aws.amazon.com/console/s3/vector-index-create-with-tag)の使用」を参照してください。

1. ベクトルインデックスを作成し、ナレッジベースの作成時にベクトルインデックスの **Amazon リソースネーム (ARN)** を書き留めます。

**S3 ベクトルバケットのナレッジベースを作成する**  
この情報を収集したら、[ナレッジベースの作成](knowledge-base-create.md)に進むことができます。S3 ベクトルバケットを使用してナレッジベースを作成するときは、ベクトルバケットの ARN とベクトルインデックスを指定する必要があります。ベクトルインデックスには、データソースから生成された埋め込みが保存されます。次の表は、各情報を入力する場所をまとめたものです。


| フィールド | ナレッジベース設定 (コンソール) の対応するフィールド | ナレッジベース設定 (API) の対応するフィールド | 説明 | 
| --- | --- | --- | --- | 
| ベクトルバケット ARN | S3 ベクトルバケット ARN | vectorBucketArn | S3 ベクトルバケットの Amazon リソースネーム (ARN)。 | 
| ベクトルインデックス ARN | S3 ベクトルインデックス ARN | vectorIndexARN | S3 ベクトルバケットのベクトルインデックスの Amazon リソースネーム (ARN)。 | 

------
#### [ Amazon Aurora (RDS) ]

1. 「[Using Aurora PostgreSQL as a knowledge base](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.VectorDB.html)」の手順に従って、Amazon Aurora データベース (DB) クラスターを作成します。テーブルを作成するときは、次の列とデータ型で設定します。上の表に掲載されている名前の代わりに、希望する列名を使用できます。ナレッジベースの設定時に指定できるように、使用した列名をメモしておきます。

   これらのフィールドは、ナレッジベースを作成する前に指定する必要があります。ナレッジベースが作成されると、フィールドを更新することはできません。
**重要**  
Aurora クラスターは、Amazon Bedrock のナレッジベースが作成されるクラスター AWS アカウント と同じ に存在する必要があります。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/knowledge-base-setup.html)

1. テキストフィールドと埋め込みフィールドの列ベクトルおよびテキストにインデックスを作成する必要があります。カスタムメタデータフィールドを使用している場合は、この列に GIN インデックスも作成する必要があります。GIN インデックスを使用すると、メタデータフィルタリングのために jsonb ドキュメント内のキーと値のペアを効率的に検索できます。詳細については、*PostgreSQL ドキュメント*の「[jsonb インデックス作成](https://www.postgresql.org/docs/current/datatype-json.html#JSON-INDEXING)」を参照してください。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/knowledge-base-setup.html)
**注記**  
英語コンテンツでハイブリッド検索の精度とレイテンシーを向上させるには、「simple」の代わりに「english」ディクショナリを使用することを検討してください。  

   ```
   CREATE INDEX ON bedrock_integration.bedrock_kb USING gin (to_tsvector('english', chunks));
   ```

1. (オプション) [フィルタリングのためにファイルにメタデータを追加](kb-test-config.md)した場合は、カスタムメタデータフィールドに列名を指定して、すべてのメタデータを 1 つの列に保存することをお勧めします。[データインジェスト](kb-data-source-sync-ingest.md)中、この列にはデータソースのメタデータファイル内のすべての情報が入力されます。このフィールドを指定することにした場合は、この列に GIN インデックスを作成する必要があります。
**注記**  
数値メタデータに対して範囲フィルターを頻繁に使用する場合は、パフォーマンスを最適化するため、特定のキーのインデックスを作成します。例えば、`"lessThan": { "key": "year", "value": 1989 }` などのフィルターを使用する場合は、`year` キーに式インデックスを作成します。詳細については、「*PostgreSQL ドキュメント*」の「[式のインデックス](https://www.postgresql.org/docs/current/indexes-expressional.html)」を参照してください。  

   ```
   CREATE INDEX ON your_table ((custom_metadata->>'year')::double precision
   ```

   または、このフィールド名を指定しない場合は、ファイル内のメタデータ属性ごとに列を作成し、データ型 (テキスト、数値、またはブール値) を指定できます。例えば、属性 `genre` がデータソースに存在する場合は、`genre` という名前の列を追加し、`text` をデータ型として指定します。[データインジェスト](kb-data-source-sync-ingest.md)中、これらの別個の列には対応する属性値が入力されます。

1. Amazon Aurora [と を使用したパスワード管理の手順に従って、Aurora DB AWS Secrets Manager](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/rds-secrets-manager.html)クラスターの AWS Secrets Manager シークレットを設定します。

1. DB クラスターを作成しシークレットを設定したら、次の情報をメモします。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/knowledge-base-setup.html)

------
#### [ Neptune Analytics graphs (GraphRAG) ]

1.  AWS マネジメントコンソールの Neptune Analytics でグラフとベクトルストアを作成するには、「*Neptune Analytics ユーザーガイド*」の「[Neptune Analytics でのベクトルインデックス作成](https://docs.aws.amazon.com/neptune-analytics/latest/userguide/vector-index.html)」で説明されているステップに従います。
**注記**  
Neptune GraphRAG を使用するには、ベクトル検索インデックスを含む空の Neptune Analytics グラフを作成します。ベクトル検索インデックスは、グラフの作成時のみ作成できます。[コンソールで Neptune Analytics グラフ](https://docs.aws.amazon.com/neptune-analytics/latest/userguide/create-graph-using-console.html)を作成するとき、プロセスの最後付近にある [**ベクトル検索設定**] でインデックスディメンションを指定します。

   グラフを作成するときは、次の考慮事項に注意してください。

   1. グラフに任意の名前を付けます。

   1. [**データソース**] で、[**空のグラフを作成**] を選択し、割り当てる m-NCU の数を指定します。m-NCU ごとに、約 1 GiB のメモリ容量と、対応するコンピューティングおよびネットワークがあります。
**注記**  
グラフの容量は後で変更できます。最も小さいインスタンスから開始し、必要に応じて後で別のインスタンスを選択することをお勧めします。

   1. デフォルトのネットワーク接続設定のままにすることができます。Amazon Bedrock は、ナレッジベースを関連付ける Neptune Analytics グラフへのネットワーク接続を作成します。グラフにパブリック接続やプライベートエンドポイントを設定する必要はありません。

   1. [**ベクトル検索設定**] で [**ベクトルディメンションを使用**] を選択し、各ベクトルのディメンション数を指定します。
**注記**  
各ベクトルのディメンションの数は、埋め込みモデルのベクトルディメンションと一致している必要があります。ベクトルに含めるディメンションの数を決定するには、次の表を参照してください。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/knowledge-base-setup.html)

   1. 他のすべての設定をデフォルトのままにして、グラフを作成します。

1. グラフを作成したら、そのグラフをクリックして、ナレッジベースの作成時に [**リソース ARN**] と [**ベクトルディメンション**] を書き留めます。Amazon Bedrock で埋め込みモデルを選択するときは、Neptune Analytics グラフで設定した**ベクトルディメンション**と同じディメンションのモデルを選択してください。

ベクトルインデックスを作成したら、[ナレッジベースの作成](knowledge-base-create.md)に進むことができます。次の表は、メモした各情報を入力する場所をまとめたものです。


| フィールド | ナレッジベース設定 (コンソール) の対応するフィールド | ナレッジベース設定 (API) の対応するフィールド | 説明 | 
| --- | --- | --- | --- | 
| グラフ ARN | Neptune 分析グラフ ARN | graphARN | Neptune Analytics グラフの Amazon リソースネーム (ARN)。 | 
| メタデータ管理 (最初のマッピングフィールド) | テキストフィールド名 | textField | データソースから未加工のテキストを保存するフィールドの名前。このフィールドには、テキストなどの任意の値を指定できます。 | 
| メタデータ管理 (2 番目のマッピングフィールド) | Bedrock が管理するメタデータフィールド | metadataField | Amazon Bedrock が管理するメタデータを保存するフィールドの名前。このフィールドには、メタデータなどの任意の値を指定できます。 | 

------
#### [ Pinecone ]

**注記**  
を使用する場合Pinecone、お客様は、ベクトルストアサービスを提供するために、お客様に代わって指定されたサードパーティーソースへのアクセスを AWS に許可することに同意します。お客様は、サードパーティーサービスからのデータの使用および転送に適用されるいかなるサードパーティー規約をも遵守する必要があります。

Pinecone でベクトルストアを設定する方法の詳細については、「[Pinecone as a knowledge base for Amazon Bedrock](https://docs.pinecone.io/docs/amazon-bedrock)」を参照してください。

ベクトルストアを設定する際は、次の情報をメモしておきます。この情報は、ナレッジベースを作成するときに入力することになります。
+ **エンドポイント URL** – インデックス管理ページのエンドポイント URL。
+ **認証情報シークレット ARN** – データベースユーザーのユーザー名とパスワード AWS Secrets Manager を含む、 で作成したシークレットの Amazon リソースネーム (ARN)。
+ **(オプション) 認証情報シークレット ARN のカスタマーマネージド KMS キー** – 認証情報シークレット ARN を暗号化した場合は、Amazon Bedrock が復号できるように KMS キーを指定します。
+ **名前空間** - (オプション) データベースに新しいデータを書き込むために使用する名前空間。詳細については、「[Using namespaces](https://docs.pinecone.io/docs/namespaces)」を参照してください。

Pinecone インデックスを作成するときに必要となる追加の設定は以下のとおりです。
+ **テキストフィールド名** – Amazon Bedrock が未加工チャンクテキストを保存するフィールドの名前。
+ **メタデータフィールド名** – Amazon Bedrock がソース属性メタデータを保存するフィールドの名前。

Pinecone インデックスにアクセスするには、 AWS Secrets Managerを使用して Amazon Bedrock に Pinecone API キーを提供する必要があります。

**Pinecone 設定用のシークレットを設定するには**

1. 「 [AWS Secrets Manager シークレットの作成](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html)」の手順に従って、 キーを に設定`apiKey`し、 値をPineconeインデックスにアクセスするための API キーとして設定します。

1. この API キーを見つけるには、[Pinecone コンソール](https://app.pinecone.io/)を開いて **[API キー]** を選択します。

1. シークレットを作成したら、作成したシークレットの ARN をメモしておきます。

1. 「[ナレッジベースを含むベクトルストアのシー AWS Secrets Manager クレットを復号するアクセス許可](encryption-kb.md#encryption-kb-3p)」の手順に従って、KMS キーの ARN を復号化する権限をサービスロールにアタッチします。

1. この ARN は、後でナレッジベースを作成するときに、[**認証情報シークレット ARN]** フィールドに入力します。

------
#### [ Redis エンタープライズクラウド ]

**注記**  
を使用する場合Redis Enterprise Cloud、お客様は、ベクトルストアサービスを提供するために、お客様に代わって指定されたサードパーティーソースへのアクセスを AWS に許可することに同意します。お客様は、サードパーティーサービスからのデータの使用および転送に適用されるいかなるサードパーティー規約をも遵守する必要があります。

Redis Enterprise Cloud でのベクトルストアの設定に関する詳細なドキュメントについては、「[Integrating Redis Enterprise Cloud with Amazon Bedrock](https://docs.redis.com/latest/rc/cloud-integrations/aws-marketplace/aws-bedrock/)」を参照してください。

ベクトルストアを設定する際は、次の情報をメモしておきます。この情報は、ナレッジベースを作成するときに入力することになります。
+ **エンドポイント URL** – データベースのパブリックエンドポイント URL。
+ **ベクトルインデックス名** - データベースのベクトルインデックスの名前。
+ **ベクトルフィールド** - ベクトル埋め込みが保存されるフィールドの名前。ベクトルに含めるディメンションの数を決定するには、次の表を参照してください。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/knowledge-base-setup.html)
+ **テキストフィールド** – Amazon Bedrock が未加工テキストのチャンクを保存するフィールドの名前。
+ **Bedrock マネージドメタデータフィールド** – Amazon Bedrock がナレッジベースに関連するメタデータを保存するフィールドの名前。

Redis Enterprise Cloud クラスターにアクセスするには、 AWS Secrets Managerを使用して Redis Enterprise Cloud のセキュリティ設定を Amazon Bedrock に提供する必要があります。

**Redis Enterprise Cloud 設定用のシークレットを設定するには**

1. 「[Transport Layer Security (TLS)](https://docs.redis.com/latest/rc/security/database-security/tls-ssl/)」の手順に従って、Amazon Bedrock でデータベースを使用するように TLS を有効にします。

1. 「 [AWS Secrets Manager シークレットを作成する](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html)」の手順に従います。シークレット内の Redis Enterprise Cloud 設定の適切な値を使用して、以下のキーを設定します。
   + `username` – Redis Enterprise Cloud データベースにアクセスするためのユーザー名。自身のユーザー名を確認するには、[Redis コンソール](http://app.redislabs.com/) でデータベースの **[セキュリティ]** セクションを参照してください。
   + `password` – Redis Enterprise Cloud データベースにアクセスするためのパスワード。自身のパスワードを確認するには、[Redis コンソール](http://app.redislabs.com/) でデータベースの **[セキュリティ]** セクションを参照してください。
   + `serverCertificate` - Redis Cloud 認証機関からの証明書の内容。「[Download CA certificates](https://docs.redis.com/latest/rc/security/database-security/tls-ssl/#download-certificates)」の手順に従って、Redis 管理コンソールを使ってサーバー証明書をダウンロードします。
   + `clientPrivateKey` - Redis Cloud 認証機関からの証明書のプライベートキー。「[Download CA certificates](https://docs.redis.com/latest/rc/security/database-security/tls-ssl/#download-certificates)」の手順に従って、Redis 管理コンソールを使ってサーバー証明書をダウンロードします。
   + `clientCertificate` - Redis Cloud 認証機関からの証明書のパブリックキー。「[Download CA certificates](https://docs.redis.com/latest/rc/security/database-security/tls-ssl/#download-certificates)」の手順に従って、Redis 管理コンソールを使ってサーバー証明書をダウンロードします。

1. シークレットを作成したら、そのシークレットの ARN を書き留めます。この ARN は、後でナレッジベースを作成するときに、[**認証情報シークレット ARN]** フィールドに入力します。

------
#### [ MongoDB Atlas ]

**注記**  
MongoDB Atlas を使用する場合は、ベクトルストアサービスをお客様に提供するために、お客様に代わって指定されたサードパーティーソースへのアクセスを AWS に許可することに同意します。お客様は、サードパーティーサービスからのデータの使用および転送に適用されるいかなるサードパーティー規約をも遵守する必要があります。

MongoDB Atlas でのベクトルストアの設定に関する詳細なドキュメントについては、「[MongoDB Atlas と Amazon Bedrock を使用して完全マネージド型 RAG ワークフローを起動する](https://www.mongodb.com/developer/products/atlas/rag-workflow-with-atlas-amazon-bedrock/)」を参照してください。

ベクトルストアを設定する際は、次の情報をメモしておきます。この情報は、ナレッジベースを作成するときに入力することになります。
+ **エンドポイント URL** – MongoDB Atlas クラスターのエンドポイント URL。
+ **データベース名** – MongoDB Atlas クラスター内のデータベースの名前。
+ **コレクション名** – データベース内のコレクションの名前。
+ **認証情報シークレット ARN** – MongoDB Atlas クラスター内のデータベースユーザーのユーザー名とパスワード AWS Secrets Manager を含む、 で作成したシークレットの Amazon リソースネーム (ARN)。シークレットには、`username` および `password` という名前のキーが含まれている必要があります。
+ **(オプション) 認証情報シークレット ARN のカスタマーマネージド KMS キー** – 認証情報シークレット ARN を暗号化した場合は、Amazon Bedrock が復号できるように KMS キーを指定します。

MongoDB Atlas インデックスを作成するときに提供する必要がある**フィールドマッピング**の追加の設定は以下のとおりです。
+ **ベクトルインデックス名** – コレクション上の MongoDB Atlas ベクトル検索インデックスの名前。
+ **ベクトルフィールド名** – Amazon Bedrock がベクトル埋め込みを保存するフィールドの名前。
+ **テキストフィールド名** – Amazon Bedrock が未加工チャンクテキストを保存するフィールドの名前。
+ **メタデータフィールド名** – Amazon Bedrock がソース属性メタデータを保存するフィールドの名前。
+ **(オプション) ベクトル検索インデックス名** – コレクションの MongoDB Atlas ベクトル検索インデックスの名前。

**重要**  
MongoDB Atlas ナレッジベースでメタデータフィルタリングを使用する予定の場合は、ベクトルインデックスでフィルタを手動設定する必要があります。メタデータフィルタリングはデフォルトでは機能しないため、MongoDB Atlas ベクトルインデックス設定で追加のセットアップが必要です。

(オプション) Amazon Bedrock を MongoDB Atlas クラスターに接続するには AWS PrivateLink、[「Amazon Bedrock を使用した MongoDB Atlas での RAG ワークフロー](https://www.mongodb.com/developer/products/atlas/rag-workflow-with-atlas-amazon-bedrock/)」を参照してください。

------

# Amazon Bedrock ナレッジベースで OpenSearch マネージドクラスターを使用するために必要な前提条件とアクセス許可
<a name="kb-osm-permissions-prereq"></a>

このセクションでは、Amazon OpenSearch Service マネージドクラスターで独自のベクトルデータベースを作成する場合にアクセス許可を設定する方法について説明します。この設定は、ナレッジベースを作成する前に実行する必要があります。この手順では、Amazon OpenSearch Service でドメインインデックスとベクトルインデックスを既に作成していることを前提としています。詳細については、「*Amazon OpenSearch Service デベロッパーガイド*」の「[Amazon OpenSearch Service ドメインの作成と管理](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/createupdatedomains.html)」を参照してください。

## 主な考慮事項
<a name="kb-osm-permissions-prereq-considerations"></a>

Amazon OpenSearch Service マネージドクラスターで Amazon Bedrock ナレッジベースを使用する際の主な考慮事項を以下に示します。
+ OpenSearch マネージドクラスターでドメインリソースを使用する前に、特定の IAM アクセス許可とポリシーを設定する必要があります。ナレッジベースとマネージドクラスターの統合の場合、このセクションのステップを実行する前に、ドメインに制限付きアクセスポリシーがある場合は、必要な IAM アクセス許可を付与し、リソースベースのポリシーを設定する必要があります。また、アクセス許可の範囲を絞り込むようにきめ細かなアクセスコントロールを設定することをお勧めします。
+ ナレッジベースのデータを取り込むときに障害が発生した場合は、取り込み速度を処理するための OpenSearch ドメイン容量が不十分である可能性があります。この問題を解決するには、より高い IOPS (1 秒あたりの入出力オペレーション数) をプロビジョニングし、スループット設定を増やして、ドメインの容量を増やします。新しい容量がプロビジョニングされるまで数分待ってから、取り込みプロセスを再試行します。問題が解決されたことを確認するには、再試行の処理時にパフォーマンスをモニタリングできます。スロットリングがまだ続く場合は、効率を向上させるために容量をさらに調整する必要があるかもしれません。詳細については、[「Amazon OpenSearch Service の運用上のベストプラクティス](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/bp.html)」を参照してください。

## アクセス許可設定の概要
<a name="kb-osm-permissions-prereq-overview"></a>

ナレッジベースとマネージドクラスターを統合するには、次の IAM アクセス許可とリソースベースのポリシーを設定する必要があります。きめ細かなアクセスポリシーを有効にして、ユーザーアクセスとプロパティレベルまで範囲を絞り込む必要がある詳細度をさらに制御することをお勧めします。

次の手順では、アクセス許可の設定方法の概要を説明します。

1. 

**ナレッジベースサービスロールを作成して使用する**

   設定するアクセス許可については、独自のカスタムロールを指定することもできますが、Amazon Bedrock ナレッジベースがナレッジベースサービスロールを作成するオプションを指定することをお勧めします。

1. 

**リソースベースのポリシーを設定する**

   OpenSearch ドメインは、ドメインにアクセスして操作できるプリンシパルを決定するリソースベースのポリシーをサポートします。ナレッジベースを使用するには、ドメインのリソースベースのポリシーを適切に設定するようにしてください。

1. 

***(強く推奨)* きめ細かなアクセスコントロールのためのロールマッピングを提供する**

   きめ細かなアクセスコントロールはオプションですが、プロパティレベルでアクセス許可の範囲を絞り込む必要がある詳細度を制御するために有効にすることをお勧めします。

## IAM ポリシーの設定
<a name="kb-osm-permissions-iam"></a>

ドメインのアクセスポリシーは、アカウントのロールで必須の OpenSearch API アクションを実行するためのアクセス許可を付与する必要があります。

ドメインに制限付きアクセスポリシーがあるときは、次のように更新する必要がある場合があります。
+ Amazon Bedrock サービスへのアクセス許可を付与し、必須の HTTP アクションの `GET`、`POST`、`PUT`、`DELETE` を含める必要があります。
+ また、インデックスリソースで `es:DescribeDomain` アクションを実行するための Amazon Bedrock アクセス許可を付与する必要があります。これにより、Amazon Bedrock ナレッジベースはナレッジベースを設定するときに必要な検証を実行できます。

## (オプション) きめ細かなアクセスコントロール
<a name="kb-osm-permissions-console-fgap"></a>

きめ細かなアクセスコントロールは、アクセス許可の範囲をプロパティレベルで絞り込む必要がある詳細度を制御できます。きめ細かなアクセスポリシーを設定して、ナレッジベースによって作成されたサービスロールに必要な読み取り/書き込みアクセス許可を付与できます。

きめ細かなアクセスコントロールを設定し、ロールマッピングを指定するには

1. 作成した OpenSearch ドメインで、きめ細かなアクセスコントロールが有効になっていることを確認します。

1. OpenSearch UI (ダッシュボード) をまだ作成していない場合は、作成します。これはロールマッピングの設定に使用します。

1. OpenSearch ダッシュボードで、OpenSearch ロールを作成し、ベクトルインデックス名と、クラスターとインデックスのアクセス許可を指定します。アクセス許可を追加するには、アクセス許可グループを作成し、ロールの `delete`、`search`、`get`、`index` などの一連のオペレーションを実行するためのアクセスを認めるのに必要なアクセス許可を追加する必要があります。

1. 必要なアクセス許可を追加したら、OpenSearch バックエンドロールのナレッジベースサービスロールの ARN を入力する必要があります。このステップを実行すると、ナレッジベースサービスロールと OpenSearch ロール間のマッピングが完了し、OpenSearch ドメインのベクトルインデックスにアクセスして必要なオペレーションを実行するためのアクセス許可が Amazon Bedrock ナレッジベースに付与されます。

**Topics**
+ [主な考慮事項](#kb-osm-permissions-prereq-considerations)
+ [アクセス許可設定の概要](#kb-osm-permissions-prereq-overview)
+ [IAM ポリシーの設定](#kb-osm-permissions-iam)
+ [(オプション) きめ細かなアクセスコントロール](#kb-osm-permissions-console-fgap)
+ [OpenSearch マネージドクラスターのリソースベースポリシーの設定](kb-osm-permissions-slr-rbp.md)
+ [きめ細かなアクセスコントロールによる OpenSearch アクセス許可の設定](kb-osm-permissions-console-fgap.md)

# OpenSearch マネージドクラスターのリソースベースポリシーの設定
<a name="kb-osm-permissions-slr-rbp"></a>

ナレッジベースを作成するときは、独自のカスタムロールを作成することも、Amazon Bedrock に作成を任せることもできます。アクセス許可の設定方法は、新しいロールを作成するのか、既存のロールを使用するのかによって異なります。既存の IAM ロールが既に設定されている場合は、ドメインのアクセスポリシーによって、アカウント内のロールによる必要な OpenSearch API オペレーションの実行が妨げられないことを確認する必要があります。

Amazon Bedrock ナレッジベースで IAM ロールを作成するように選択する場合は、ドメインのアクセスポリシーで、アカウント内のロールに必要な OpenSearch API アクションを実行するためのアクセス許可が付与されていることを確認する必要があります。ドメインに制限付きアクセスポリシーがある場合、そのポリシーによってロールがこれらのアクションを実行できない可能性があります。制限付きリソースベースのポリシーの例を以下に示します。

この場合、次のいずれかを実行できます。
+ 既存の IAM ロールを使用してナレッジベースを作成します。OpenSearch ドメインでは、このロールに必要なオペレーションを実行するためのアクセスを付与できます。
+ または、Amazon Bedrock に新しいロールの作成を任せることもできます。この場合、ドメインのアクセスポリシーで、アカウント内のロールに必要な OpenSearch API アクションを実行するためのアクセス許可が付与されていることを確認する必要があります。

次のセクションでは、必要なアクセス許可を付与するサンプル IAM ポリシー、および必要な OpenSearch API オペレーションを実行するためのアクセス許可を付与するようにドメインのアクセスポリシーを更新する方法を紹介します。

**Topics**
+ [サンプル IAM アイデンティティベースのポリシーとリソースベースのポリシー](#kb-osm-permissions-iam)
+ [Amazon Bedrock ナレッジベースのサービスロールの作成](#kb-osm-permissions-slr)
+ [リソースベースのポリシーの更新](#kb-osm-permissions-console-rbp)

## サンプル IAM アイデンティティベースのポリシーとリソースベースのポリシー
<a name="kb-osm-permissions-iam"></a>

このセクションでは、Amazon Bedrock ナレッジベースとの統合時に OpenSearch ドメイン用に設定できるサンプルのアイデンティティポリシーとリソースベースのポリシーについて説明します。ナレッジベースを提供するインデックスに対してこれらのアクションを実行するための Amazon Bedrock アクセス許可を付与する必要があります。


****  

| Action | [リソース]  | 説明 | 
| --- | --- | --- | 
| es:ESHttpPost | arn:<partition>:es:<region>:<accountId>:domain/<domainName>/<indexName> | インデックスに情報を挿入する場合 | 
| es:ESHttpGet |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/kb-osm-permissions-slr-rbp.html)  | インデックスからの情報を検索する場合。このアクションは、domain/index レベルと domain/index/\$1 レベルの両方で設定されます。domain/index レベルでは、エンジンタイプなど、インデックスに関する高レベルの詳細を取得できます。インデックス内に保存されている詳細を取得するには、domain/index/\$1 レベルのアクセス許可が必要です。 | 
| es:ESHttpHead |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/kb-osm-permissions-slr-rbp.html)  | インデックスから情報を取得する場合。このアクションは、特定のインデックスが存在するかどうかなど、より高いレベルで情報を取得する必要がある場合に備えて、domain/index レベルと domain/index/\$1 レベルの両方で設定されます。 | 
| es:ESHttpDelete | arn:<partition>:es:<region>:<accountId>:domain/<domainName>/<indexName> | インデックスの情報を削除する場合 | 
| es:DescribeDomain | arn:<partition>:es:<region>:<accountId>:domain/<domainName> | 使用されているエンジンバージョンの確認など、ドメインに対して検証を実行する場合。 | 

### サンプルのアイデンティティベースのポリシー
<a name="kb-osm-permissions-idpolicy"></a>

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "OpenSearchIndexAccess",
            "Effect": "Allow",
            "Action": [
                "es:ESHttpGet",
                "es:ESHttpPost",
                "es:ESHttpPut",
                "es:ESHttpDelete"
            ],
            "Resource": [
                "arn:aws:es:us-east-1:123456789012:domain/domainName/indexName/*"
            ]
        },
        {
            "Sid": "OpenSearchIndexGetAccess",
            "Effect": "Allow",
            "Action": [
                "es:ESHttpGet",
                "es:ESHttpHead"
            ],
            "Resource": [
            "arn:aws:es:us-east-1:123456789012:domain/domainName/indexName"
            ]
        },
        {
            "Sid": "OpenSearchDomainValidation",
            "Effect": "Allow",
            "Action": [
                "es:DescribeDomain"
            ],
            "Resource": [
            "arn:aws:es:us-east-1:123456789012:domain/domainName"
            ]
        }
    ]
}
```

------

### サンプルのリソースベースのポリシー
<a name="kb-osm-permissions-rbp"></a>

**注記**  
リソースベースのポリシーで使用するサービスロールが作成されていることを確認します。

## Amazon Bedrock ナレッジベースのサービスロールの作成
<a name="kb-osm-permissions-slr"></a>

ナレッジベースを作成するときに、新しいサービスロールを作成して使用するオプションを選択できます。このセクションでは、Amazon Bedrock ナレッジベースのサービスロールを作成する方法について説明します。リソースベースのポリシーときめ細かなアクセスポリシーをこのロールにマッピングすることで、OpenSearch ドメインにリクエストを行うためのアクセス許可が Amazon Bedrock に付与されます。

**Amazon Bedrock ナレッジベースのサービスロールを指定する方法:**

1. Amazon Bedrock コンソールで、[[ナレッジベース]](https://console.aws.amazon.com/bedrock/home#/knowledge-bases) に移動します。

1. **[作成]** を選択し、**[ベクトルストアを含むナレッジベース]** を選択します。

1. **[新しいサービスロールの作成と使用]** を選択します。デフォルトを使用することも、カスタムロール名を指定することもでき、Amazon Bedrock によってナレッジベースのサービスロールが自動的に作成されます。

1. そのままコンソールを操作し、データソースおよび解析戦略とチャンキング戦略を設定します。

1. 埋め込みモデルを選択し、**[既存のベクトルストアを選択]** で **[Amazon OpenSearch マネージドクラスター]** を選択します。

**重要**  
ナレッジベースの作成に進む前に、次のステップを実行して、リソースベースのポリシーときめ細かなアクセスポリシーを設定します。ナレッジベースの作成に関する詳しいステップについては、「[Amazon Bedrock ナレッジベースでデータソースに接続してナレッジベースを作成する](knowledge-base-create.md)」を参照してください。

## リソースベースのポリシーの更新
<a name="kb-osm-permissions-console-rbp"></a>

OpenSearch ドメインに制限付きアクセスポリシーがある場合は、このページの手順に従ってリソースベースのポリシーを更新できます。これらのアクセス許可により、ナレッジベースは指定されたインデックスを使用し、OpenSearch ドメイン定義を取得してドメインで必要な検証を実行できます。

**からリソースベースのポリシーを設定するには AWS マネジメントコンソール**

1. [Amazon OpenSearch Service コンソール](https://console.aws.amazon.com/aos/home?region=us-east-1#opensearch/dashboard)に移動します。

1. 作成したドメインに移動したら、リソースベースのポリシーが設定されている **[セキュリティ設定]** に移動します。

1. **JSON** タブでポリシーを編集してから、[サンプルのリソースベースのポリシー](#kb-osm-permissions-rbp)と同様にポリシーを更新します。

1. これで、Amazon Bedrock コンソールに戻り、「[マネージド型クラスターのナレッジベースのセットアップ](knowledge-base-setup.md#knowledge-base-setup-osm)」の説明に従って、OpenSearch ドメインとインデックスの詳細を入力できるようになります。

# きめ細かなアクセスコントロールによる OpenSearch アクセス許可の設定
<a name="kb-osm-permissions-console-fgap"></a>

任意ですが、OpenSearch ドメインのきめ細かなアクセスコントロールを有効にすることを強くお勧めします。きめ細かなアクセスコントロールを使用すると、ロールベースのアクセスコントロールを使用できます。これにより、特定のアクセス許可を持つ OpenSearch ロールを作成し、そのロールをナレッジベースサービスロールにマッピングできます。マッピングは、ナレッジベースに OpenSearch ドメインとインデックスへのアクセスとオペレーションの実行を許可する最低限必要なアクセス許可を付与します。

きめ細かなアクセスコントロールを設定して使用するには

1. 使用している OpenSearch ドメインで、きめ細かなアクセスコントロールが有効になっていることを確認します。

1. きめ細かなアクセスコントロールを使用するドメインの場合は、OpenSearch ロールの形式でアクセス許可を設定します。

1. ロールを作成するドメインの場合は、ナレッジベースサービスロールにロールマッピングを追加します。

次の手順は、OpenSearch ロールを設定し、OpenSearch ロールとナレッジベースサービスロール間で正しくマッピングする方法を示しています。

**OpenSearch ロールを作成し、アクセス許可を設定するには**  
きめ細かなアクセスコントロールを有効にし、Amazon Bedrock が OpenSearch Service に接続するように設定したら、各 OpenSearch ドメインの OpenSearch ダッシュボードリンクを使用してアクセス許可を設定できます。

**Amazon Bedrock へのアクセスを許可するドメインのアクセス許可を設定するには**

1. 使用する OpenSearch ドメインで、OpenSearch ダッシュボードを開きます。ダッシュボードへのリンクを確認するには、OpenSearch Service コンソールで作成したドメインに移動します。OpenSearch を実行しているドメインの場合、URL は `domain-endpoint/_dashboards/` の形式です。詳細については、「*Amazon OpenSearch Service デベロッパーガイド*」の「[ダッシュボード](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/dashboards.html)」を参照してください。

1. OpenSearch ダッシュボードで、**[セキュリティ]** に進み、**[ロール]** を選択します。

1. [**ロールの作成**] を選択してください。

1. **kb\$1opensearch\$1role** など、ロールの名前を指定します。

1. **[クラスターのアクセス許可]** に、以下のアクセス許可を追加します。
   + `indices:data/read/msearch`
   + `indices:data/write/bulk*`
   + `indices:data/read/mget*`

1. **[インデックスの許可]** で、ベクトルインデックスの名前を指定します。**[新しいアクセス許可グループを作成]** を選択し、次に **[新しいアクショングループを作成]** を選択します。`KnowledgeBasesActionGroup`などのアクショングループに次のアクセス許可を追加します。アクショングループに次のアクセス許可を追加します。
   + `indices:admin/get`
   + `indices:data/read/msearch`
   + `indices:data/read/search`
   + `indices:data/write/index`
   + `indices:data/write/update`
   + `indices:data/write/delete`
   + `indices:data/write/delete/byquery`
   + `indices:data/write/bulk*`
   + `indices:admin/mapping/put`
   + `indices:data/read/mget*`  
![\[クラスターとインデックスのアクセス許可を追加するために OpenSearch ダッシュボードで作成するアクショングループ。\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/kb/kb-test-os-action-groups.png)

1. **[作成]** を選択して OpenSearch ロールを作成します。

アクセス許可が追加された OpenSearch ロールの例を次に示します。

![\[アクセス許可が追加された OpenSearch Dashboards の OpenSearch ロールの例。\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/kb/kb-test-os-dashboards-permissions.png)


**ナレッジベースサービスロールへのロールマッピングを作成するには**

1. マッピングする必要がある IAM ロールを特定します。
   + 独自のカスタム IAM ロールを作成した場合は、IAM コンソールからこのロールのロール ARN をコピーできます。
   + ナレッジベースにロールの作成を許可する場合は、ナレッジベースの作成時にロール ARN を書き留めて、このロール ARN をコピーできます。

1. 使用する OpenSearch ドメインで、OpenSearch ダッシュボードを開きます。URL のフォーマットは `domain-endpoint/_dashboards/` です。

1. ナビゲーションペインで、[**セキュリティ**] をクリックします。

1. **kb\$1opensearch\$1role** など、先ほど作成したロールをリストで検索して開きます。

1. **[マッピングされたユーザー]** タブで、**[マッピングを管理]** をクリックします。

1. **バックエンドロール**セクションで、ナレッジベースの AWS マネージド IAM ロールの ARN を入力します。独自のカスタムロールを作成したか、ナレッジベースにロールを作成させたかに応じて、IAM コンソールまたは Amazon Bedrock コンソールからロール ARN 情報をコピーし、OpenSearch コンソールに**バックエンドロール**の情報を入力します。次に例を示します。

   ```
   arn:aws:iam::<accountId>:role/service-role/<knowledge-base-service-role>
   ```

1. [**マップ**] をクリックします。

   ナレッジベースサービスロールが OpenSearch ロールに接続し、ドメインとインデックスで必要なオペレーションを実行できるようになりました。

# Amazon Bedrock ナレッジベースでデータソースに接続してナレッジベースを作成する
<a name="knowledge-base-create"></a>

データソースに接続してナレッジベースを作成するときは、以下を設定または指定します。
+ ナレッジベースを定義して識別する一般情報
+ ナレッジベースへのアクセス許可を持つサービスロール
+ ナレッジベースの設定 (データソースからデータを変換するときに使用する埋め込みモデル、埋め込みを保存するサービスのストレージ設定、およびオプションでマルチモーダルデータを保存する S3 の場所など)

**注記**  
ルートユーザーを使用してナレッジベースを作成することはできません。これらのステップを開始する前に、IAM ユーザーでログインします。

自分のユースケースに対応するセクションを展開してください。

## コンソールを使用する
<a name="knowledge-base-create-console"></a>

**ナレッジベースを設定するには**

1. Amazon Bedrock コンソールを使用するアクセス許可を持つ IAM ID AWS マネジメントコンソールを使用して にサインインします。Amazon Bedrock コンソール ([https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)) を開きます。

1. 左側のナビゲーションペインで **[ナレッジベース]** を選択します。

1. **[ナレッジベース]** セクションで、作成ボタンを選択し、ベクトルストアを含むナレッジベースの作成を選択します。

1. (オプション) ナレッジベースのデフォルトの名前を変更し、説明を入力します。

1. 他の必要なAWSサービスにアクセスするためのアクセス許可を Amazon Bedrock に付与する AWS Identity and Access Management(IAM) ロールを選択します。Amazon Bedrock にサービスロールを作成させることも、[Neptune Analytics 用に作成した独自のカスタムロール](kb-permissions.md#kb-permissions-neptune)の使用を選択することもできます。

1. ナレッジベースを接続するデータソースを選択します。

1. (オプション) ナレッジベースにタグを追加します。詳細については、「[Amazon Bedrock リソースにタグ付け](tagging.md)」を参照してください。

1. (オプション) ナレッジベースのアクティビティログを配信するサービスを設定します。

1. 次のセクションに進み、「[データソースをナレッジベースと接続する](data-source-connectors.md)」の手順に従ってデータソースを設定します。

1. **[埋め込みモデル]** セクションで、次の操作を行います。

   1. 埋め込みモデルを選択して、データをベクトル埋め込みに変換します。マルチモーダルデータ (イメージ、オーディオ、ビデオ) の場合は、Amazon Titan Multimodal Embeddings G1 や Cohere Embed v3 などのマルチモーダル埋め込みモデルを選択します。
**注記**  
Amazon Titan マルチモーダル埋め込み G1 を使用する場合は、S3 コンテンツバケットを指定する必要があり、デフォルトのパーサーのみを使用できます。このモデルは、イメージ検索のユースケース向けに最適化されています。マルチモーダルアプローチの選択に関する包括的なガイダンスについては、「」を参照してください[マルチモーダルコンテンツのナレッジベースを構築する](kb-multimodal.md)。

   1. (オプション) **[追加設定]** セクションを展開すると、次の設定オプションが表示されます (すべてのモデルがすべての設定をサポートしているわけではありません)。
      + **埋め込みタイプ** – データを浮動小数点 (float32) ベクトル埋め込み (より正確だがコストがかかる) またはバイナリベクトル埋め込み (精度は低下するがコストが低い) に変換するかどうか。バイナリベクトルをサポートする埋め込みモデルについては、「[サポートされている埋め込みモデル](knowledge-base-supported.md)」を参照してください。
      + **ベクトルディメンション** – 値を大きくすると精度は向上しますが、コストとレイテンシーが増加します。

1. **[ベクトルデータベース]** セクションで、次の操作を行います。

   1. ベクトルストアを選択して、クエリに使用するベクトル埋め込みを保存します。次のオプションがあります。
      + **新しいベクトルストアをクイック作成する** – Amazon Bedrock で使用できるベクトルストアのいずれかを選択します。オプションで、ベクトルストアのAWS KMSキー暗号化を設定することもできます。
**注記**  
このオプションを使用すると、Amazon Bedrock は各ベクトルストアのメタデータ配置を自動的に処理します。
        + **Amazon OpenSearch Serverless** – Amazon Bedrock ナレッジベースは、Amazon OpenSearch Serverless ベクトル検索コレクションとインデックスを作成し、必須フィールドを使用してそれを設定します。
        + **Amazon Aurora PostgreSQL Serverless** – Amazon Bedrock は Amazon Aurora PostgreSQL Serverless ベクトルストアを設定します。このプロセスでは、Amazon S3 バケットから非構造化テキストデータを取得し、テキストチャンクとベクトルに変換して、PostgreSQL データベースに保存します。詳細については、「[Amazon Bedrock 用の Aurora PostgreSQL ナレッジベースのクイック作成](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.quickcreatekb.html)」を参照してください。
        + **Amazon Neptune Analytics** – Amazon Bedrock は、検索拡張生成 (RAG) 手法をグラフと組み合わせて使用して生成 AI アプリケーションを強化し、エンドユーザーがより正確で包括的なレスポンスを得られるようにします。
        + **Amazon S3 Vectors** – Amazon Bedrock ナレッジベースは、データソースから生成された埋め込みを保存する S3 ベクトルバケットとベクトルインデックスを作成します。

          Amazon Bedrock と Amazon S3 Vectors の両方が利用可能なすべての AWS リージョンでAmazon S3のナレッジベースを作成できます。リージョンの可用性に関する情報については、「*Amazon S3 ユーザーガイド*」の「[Amazon S3 Vectors](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-vectors.html)」を参照してください。
**注記**  
Amazon Bedrock ナレッジベースで Amazon S3 Vectors を使用する場合、ベクトルごとに最大 1 KB のカスタムメタデータ (フィルタリング可能なメタデータとフィルタリング不可能なメタデータの両方を含む) と 35 のメタデータキーをアタッチできます。メタデータの制限の詳細については、[メタデータのサポート](knowledge-base-setup.md#metadata-support)「」の「」を参照してください[ナレッジベース用に作成したベクトルストアを使用するための前提条件](knowledge-base-setup.md)。
      + **作成したベクトルストアを選択する** – サポートされているベクトルストアを選択し、ベクトルインデックス内のベクトルフィールド名とメタデータフィールド名を識別します。詳細については、「[ナレッジベース用に作成したベクトルストアを使用するための前提条件](knowledge-base-setup.md)」を参照してください。
**注記**  
データソースが Confluence、Microsoft SharePoint、または Salesforce インスタンスの場合、サポートされているベクトルストアサービスは Amazon OpenSearch Serverless のみです。

   1. (オプション) **[追加設定]** セクションを展開し、関連する設定を変更します。

1. データソースに画像が含まれている場合は、パーサーが **[マルチモーダルストレージの保存先]** のデータから抽出するイメージを保存する Amazon S3 URI を指定します。画像はクエリ中に返すことができます。オプションで、デフォルトの代わりにカスタマーマネージドキーを選択してデータをAWS マネージドキー暗号化することもできます。
**注記**  
マルチモーダルデータは、Amazon S3 およびカスタムデータソースでのみサポートされています。
**注記**  
マルチモーダル埋め込みモデルを使用する場合:  
Amazon Titan マルチモーダル埋め込み G1 には S3 コンテンツバケットが必要で、デフォルトのパーサーを使用するイメージのみのデータセットで最適に動作します。
Cohere Embed v3 は、テキストデータセットと画像データセットの混在をサポートしており、任意のパーサー設定で使用できます。
イメージ検索のユースケースでは、トークンの制限により、Bedrock Data Automation (BDA) または基盤モデルパーサーを Titan G1 で使用しないようにします。
マルチモーダルストレージの送信先は、取得目的でファイルコピーを作成するため、追加のストレージ料金が発生する可能性があります。

1. **[次へ]** を選択して、ナレッジベースの詳細を確認します。次に進みナレッジベースを作成する前に、任意のセクションを編集できます。
**注記**  
ナレッジベースの作成にかかる時間は、特定の設定によって異なります。ナレッジベースの作成が完了すると、ナレッジベースのステータスは準備中または利用可能な状態に変更されます。  
ナレッジベースの準備ができて使用可能になったら、最初にデータソースの同期を行い、その後も必要に応じて同期を行いコンテンツを最新の状態に保ちます。コンソールでナレッジベースを選択し、データソースの概要セクションで **[同期]** を選択します。

## API を使用する
<a name="knowledge-base-create-api"></a>

ナレッジベースを作成するには、[Amazon Bedrock エージェントのビルドタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)を使用して、[CreateKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateKnowledgeBase.html) リクエストを送信します。

**注記**  
Amazon Bedrock にベクトルストアを作成および管理させたい場合は、コンソールを使用します。詳細については、このトピックの「**コンソールを使用する**」セクションを展開します。

以下のフィールドが必要です。


****  

| フィールド | 基本的な説明 | 
| --- | --- | 
| 名前 | ナレッジベースの名前 | 
| roleArn | [Amazon Bedrock ナレッジベースサービスロール](kb-permissions.md)の ARN | 
| knowledgeBaseConfiguration | ナレッジベースの設定が含まれます。詳細については、以下を参照してください。 | 
| storageConfiguration | (非構造化データソースに接続する場合にのみ必要です)。選択したデータソースサービスの設定が含まれます。 | 

次のフィールドはオプションです。


****  

| フィールド | ユースケース | 
| --- | --- | 
| 説明 | ナレッジベースの説明 | 
| clientToken | API リクエストが 1 回だけ完了するようにします。詳細については、「[べき等性の確保](https://docs.aws.amazon.com/ec2/latest/devguide/ec2-api-idempotency.html)」を参照してください。 | 
| タグ | タグをエイリアスに関連付ける場合に指定します。詳細については、「[Amazon Bedrock リソースにタグ付け](tagging.md)」を参照してください。 | 

[KnowledgeBaseConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_KnowledgeBaseConfiguration.html) オブジェクトにマッピングする `knowledgeBaseConfiguration` フィールドで、`type` フィールドに `VECTOR` を指定し、[VectorKnowledgeBaseConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_VectorKnowledgeBaseConfiguration.html) オブジェクトを含めます。オブジェクトには、以下のフィールドが含まれています。
+ `embeddingModelArn` – 使用する埋め込みモデルの ARN
+ `embeddingModelConfiguration` – 埋め込みモデルの設定 サポートされているモデルごとに指定できる値を確認するには、「[Amazon Bedrock ナレッジベースでサポートされているモデルとリージョン](knowledge-base-supported.md)」を参照してください。
+ (画像、図、グラフ、または表を含むマルチモーダルデータをナレッジベースに含める場合) `supplementalDataStorageConfiguration` – [SupplementalDataStorageLocation](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_SupplementalDataStorageLocation.html) オブジェクトにマッピングし、抽出されたデータを保存する S3 の場所を指定します。詳細については、「[データソースの解析オプション](kb-advanced-parsing.md)」を参照してください。

[StorageConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StorageConfiguration.html) オブジェクトにマッピングされる `storageConfiguration` フィールドで、`type` フィールドで接続するベクトルストアを指定し、そのベクトルストアに対応するフィールドを含めます。提供する必要がある情報の詳細については、[StorageConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StorageConfiguration.html) の各ベクトルストア設定タイプを参照してください。

以下は、Amazon OpenSearch Serverless コレクションに接続されたナレッジベースを作成するリクエストの例です。接続されたデータソースからのデータは Amazon Titan Text Embeddings V2 とのバイナリベクトル埋め込みに変換され、パーサーによって抽出されたマルチモーダルデータは *MyBucket* というバケットに保存されるように設定されています。

```
PUT /knowledgebases/ HTTP/1.1
Content-type: application/json

{
   "name": "MyKB",
   "description": "My knowledge base",
   "roleArn": "arn:aws:iam::111122223333:role/service-role/AmazonBedrockExecutionRoleForKnowledgeBase_123",
   "knowledgeBaseConfiguration": {
      "type": "VECTOR",
      "vectorKnowledgeBaseConfiguration": { 
         "embeddingModelArn": "arn:aws:bedrock:us-east-1::foundation-model/amazon.titan-embed-text-v2:0",
         "embeddingModelConfiguration": { 
            "bedrockEmbeddingModelConfiguration": { 
               "dimensions": 1024,
               "embeddingDataType": "BINARY"
            }
         },
         "supplementalDataStorageConfiguration": { 
            "storageLocations": [ 
               { 
                  "s3Location": { 
                     "uri": "arn:aws:s3:::MyBucket"
                  },
                  "type": "S3"
               }
            ]
         }
      }
   },
   "storageConfiguration": { 
      "opensearchServerlessConfiguration": { 
         "collectionArn": "arn:aws:aoss:us-east-1:111122223333:collection/abcdefghij1234567890",
         "fieldMapping": { 
            "metadataField": "metadata",
            "textField": "text",
            "vectorField": "vector"
         },
         "vectorIndexName": "MyVectorIndex"
      }
   }
}
```

**Topics**
+ [データソースをナレッジベースと接続する](data-source-connectors.md)
+ [データソースの取り込みをカスタマイズする](kb-data-source-customize-ingestion.md)
+ [ナレッジベースのセキュリティ設定を行います。](kb-create-security.md)

# データソースをナレッジベースと接続する
<a name="data-source-connectors"></a>

ナレッジベースの設定が完了したら、サポートされているデータソースをナレッジベースに接続します。

Amazon Bedrock ナレッジベースは、クエリエンジンを介した非構造化データソースまたは構造化データストアへの接続をサポートしています。各データソースへの接続方法については、各トピックを選択してください。

**マルチモーダルコンテンツのサポート**  
マルチモーダルコンテンツ (イメージ、オーディオ、ビデオファイル) は、Amazon S3 およびカスタムデータソースでのみサポートされています。他のデータソースタイプは、取り込み中にマルチモーダルファイルをスキップします。マルチモーダルコンテンツの使用に関する包括的なガイダンスについては、「」を参照してください[マルチモーダルコンテンツのナレッジベースを構築する](kb-multimodal.md)。

Amazon Bedrock コンソールを使用してデータソースに接続する方法については、このページの下部に掲載のデータソースタイプに対応するトピックを選択してください。

Amazon Bedrock API を使用してデータソースに接続するには、[Amazon Bedrock エージェントのランタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-rt)を使用して、[CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html) リクエストを送信します。

以下のフィールドが必要です。


****  

| フィールド | 基本的な説明 | 
| --- | --- | 
| knowledgeBaseId | ナレッジベースの ID。 | 
| 名前 | ナレッジベースの名前。 | 
| dataSourceConfiguration | type フィールドにデータソースサービスまたはタイプを指定し、対応するフィールドを含めます。サービス固有の設定の詳細については、このページの下部に掲載のトピックから、該当サービスのトピックを選択してください。 | 

次のフィールドはオプションです。


****  

| フィールド | ユースケース | 
| --- | --- | 
| 説明 | データソースの説明を入力します。 | 
| vectorIngestionConfiguration | 取り込みプロセスをカスタマイズするための設定が含まれています。詳細については、「[データソースの取り込みをカスタマイズする](kb-data-source-customize-ingestion.md)」を参照してください。 | 
| dataDeletionPolicy | ベクターストア内のベクター埋め込みを RETAIN するか DELETE するかを指定します。 | 
| serverSideEncryptionConfiguration | カスタマーマネージドキーでのデータ同期中に一時データを暗号化するには、kmsKeyArn フィールドにその ARN を指定します。 | 
| clientToken | API リクエストが 1 回だけ完了するようにします。詳細については、「[べき等性の確保](https://docs.aws.amazon.com/ec2/latest/devguide/ec2-api-idempotency.html)」を参照してください。 | 

サービスとその設定の詳細については、各トピックを選択してください。

**Topics**
+ [ナレッジベースに対応する Amazon S3 に接続する](s3-data-source-connector.md)
+ [ナレッジベースの Confluence に接続する](confluence-data-source-connector.md)
+ [ナレッジベースの Microsoft SharePoint に接続する](sharepoint-data-source-connector.md)
+ [ナレッジベースの Salesforce に接続する](salesforce-data-source-connector.md)
+ [ナレッジベースのウェブページをクロールする](webcrawl-data-source-connector.md)
+ [ナレッジベースをカスタムデータソースに接続する](custom-data-source-connector.md)

# ナレッジベースに対応する Amazon S3 に接続する
<a name="s3-data-source-connector"></a>

Amazon S3 は、データをオブジェクトとしてバケットに保存するオブジェクトストレージサービスです。Amazon Bedrock の [AWSマネジメントコンソールまたは CreateDataSource API を使用して、Amazon Bedrock](https://console.aws.amazon.com/bedrock/home) ナレッジベースの Amazon S3 バケットに接続できます (「Amazon Bedrock が[サポートする SDKsAWS CLI](https://docs.aws.amazon.com/bedrock/latest/APIReference/welcome.html)」を参照）。 [CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html) 

**マルチモーダルコンテンツのサポート**  
Amazon S3 データソースは、イメージ、オーディオ、ビデオファイルなどのマルチモーダルコンテンツをサポートしています。マルチモーダルコンテンツの使用に関する包括的なガイダンスについては、「」を参照してください[マルチモーダルコンテンツのナレッジベースを構築する](kb-multimodal.md)。

Amazon S3 コンソールまたは API を使用して、ファイルの小さなバッチを Amazon S3 バケットにアップロードできます。または、 [AWS DataSync](https://docs.aws.amazon.com/datasync/latest/userguide/create-s3-location.html)を使用して複数のファイルを S3 に継続的にアップロードし、オンプレミス、エッジ、その他のクラウド、またはAWSストレージからスケジュールに従ってファイルを転送することもできます。

現在、汎用 S3 バケットのみがサポートされています。

クロールできるファイル数とファイルあたりの MB に制限があります。「[Quotas for knowledge bases](https://docs.aws.amazon.com/bedrock/latest/userguide/quotas.html)」を参照してください。

**Topics**
+ [サポートされている機能](#supported-features-s3-connector)
+ [前提条件](#prerequisites-s3-connector)
+ [接続設定](#configuration-s3-connector)

## サポートされている機能
<a name="supported-features-s3-connector"></a>
+ ドキュメントメタデータフィールド
+ 包含プレフィックス
+ 追加、更新、削除されたコンテンツの増分同期

## 前提条件
<a name="prerequisites-s3-connector"></a>

**Amazon S3 で、以下を確認してください。**
+ Amazon S3 バケット URI、Amazon リソースネーム (ARN)、およびバケットの所有者の AWS アカウント ID を書き留めます。URI と ARN は、Amazon S3 コンソールのプロパティセクションにあります。バケットは Amazon Bedrock ナレッジベースと同じリージョンにある必要があります。バケットにアクセスするにはアクセス許可が必要です。

**AWSアカウントで、以下を確認してください**。
+ ナレッジベースの AWS Identity and Access Management (IAM) ロール/アクセス許可ポリシーに、データソースに接続するために必要なアクセス許可を含めます。このデータソースがナレッジベースIAMロールに追加するために必要なアクセス許可については、[「データソースへのアクセス許可](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-permissions.html#kb-permissions-access-ds)」を参照してください。

**注記**  
コンソールを使用する場合、ナレッジベースを作成するステップの一部として、必要なすべてのアクセス許可を持つIAMロールを作成できます。データソースやその他の設定を行うと、必要なすべてのアクセス許可を持つ IAM ロールが特定のナレッジベースに適用されます。

## 接続設定
<a name="configuration-s3-connector"></a>

Amazon S3 バケットに接続するには、Amazon Bedrock がデータにアクセスしてクロールできるように、必要な設定情報を提供する必要があります。また、[前提条件](#prerequisites-s3-connector) に従う必要があります。

このデータソースの設定例をこのセクションに示します。

包含フィルター、ドキュメントメタデータフィールド、増分同期、およびこれらの仕組みの詳細については、次を選択してください。

### ドキュメントメタデータフィールド
<a name="ds-s3-metadata-fields"></a>

Amazon S3 データソース内の各ファイルに対して、ドキュメントのメタデータフィールド/属性を指定し、データソースのインデックスを作成してベクトルストアに保存する際にそれらを埋め込みに含めるかどうかを指定する別ファイルを含めることができます。例えば、次の形式でファイルを作成し、*fileName.extension.metadata.json* という名前を付けて S3 バケットにアップロードできます。

```
{
  "metadataAttributes": {
    "company": {
      "value": {
        "type": "STRING",
        "stringValue": "BioPharm Innovations"
      },
      "includeForEmbedding": true
    },
    "created_date": {
      "value": {
        "type": "NUMBER",
        "numberValue": 20221205
      },
      "includeForEmbedding": true
    },
    "author": {
      "value": {
        "type": "STRING",
        "stringValue": "Lisa Thompson"
      },
      "includeForEmbedding": true
    },
    "origin": {
      "value": {
        "type": "STRING",
        "stringValue": "Overview"
      },
      "includeForEmbedding": true
    }
  }
}
```

メタデータファイルは、関連するソースドキュメントファイルと同じ名前を使用し、ファイル名の末尾に `.metadata.json` を追加する必要があります。メタデータファイルは、Amazon S3 バケットのソースファイルと同じフォルダまたは場所に保存する必要があります。ファイルは 10 KB の制限を超えることはできません。サポートされている属性/フィールドデータ型とメタデータフィールドに適用できるフィルタリング演算子の詳細については、「[メタデータとフィルタリング](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-test-config.html)」を参照してください。

### 包含プレフィックス
<a name="ds-s3-inclusion-exclusion"></a>

Amazon S3 パスプレフィックスである包含プレフィックスを指定できます。このプレフィックスでは、バケット全体ではなく、S3 ファイルまたはフォルダを使用して S3 データソースコネクタを作成できます。

### 増分同期
<a name="ds-s3-incremental-sync"></a>

データソースコネクタは、データソースがナレッジベースと同期するたびに、新規、変更、削除されたコンテンツをクロールします。 Amazon Bedrockは、データソースのメカニズムを使用してコンテンツの変更を追跡し、前回の同期以降に変更されたコンテンツをクロールできます。データソースをナレッジベースと初めて同期すると、デフォルトですべてのコンテンツがクロールされます。

データソースをナレッジベースと同期するには、[StartIngestionJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StartIngestionJob.html) API を使用するか、コンソールでナレッジベースを選択し、データソースの概要セクションで **[同期]** を選択します。

**重要**  
データソースから同期するすべてのデータは、データを取得する `bedrock:Retrieve` アクセス許可を持つすべてのユーザーが利用できるようになります。これには、データソースのアクセス許可が制御されているデータを含めることもできます。詳細については、「[Knowledge base permissions](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-permissions.html)」を参照してください。

------
#### [ Console ]

**Amazon S3 バケットをナレッジベースに接続する方法**

1. [Amazon Bedrock ナレッジベースでデータソースに接続してナレッジベースを作成する](knowledge-base-create.md) のステップを実行し、データソースとして **[Amazon S3]** を選択します。

1. データソースの名前を指定します。

1. Amazon S3 バケットが現在のAWSアカウントにあるか、別のAWSアカウントにあるかを指定します。バケットはナレッジベースと同じリージョンにある必要があります。

1. (オプション) Amazon S3 バケットが KMS キーで暗号化されている場合は、そのキーを含めます。詳細については、「[Amazon S3 のデータソースの AWS KMS キーを復号するアクセス許可](encryption-kb.md#encryption-kb-ds)」を参照してください。

1. (オプション) **[コンテンツの解析とチャンキング]** セクションで、データの解析とチャンキングの方法をカスタマイズできます。これらのカスタマイズの詳細については、次のリソースを参照してください。
   + 解析オプションの詳細については、「[データソースの解析オプション](kb-advanced-parsing.md)」を参照してください。
   + チャンキング戦略の詳細については、「[ナレッジベースのコンテンツのチャンキングの仕組み](kb-chunking.md)」を参照してください。
**警告**  
データソースに接続した後はチャンキング戦略を変更できません。
   + Lambda 関数を使用してデータのチャンキングとメタデータの処理をカスタマイズする方法の詳細については、「[カスタム変換 Lambda 関数を使用してデータの取り込み方法を定義する](kb-custom-transformation.md)」を参照してください。

1. **[詳細設定]** セクションでは、必要に応じて以下を設定できます。
   + **一時的なデータストレージ用の KMS キー。**– データをデフォルトAWS マネージドキーまたは独自の KMS キーを使用して埋め込みに変換しながら、一時的なデータを暗号化できます。詳細については、「[データインジェスト時の一時データストレージの暗号化](encryption-kb.md#encryption-kb-ingestion)」を参照してください。
   + **データ削除ポリシー** – デフォルトでベクトルストアに保存されているデータソースのベクトル埋め込みを削除したり、ベクトルストアデータを保持するように選択したりできます。

1. 埋め込みモデルとベクトルストアの選択を続行します。残りの手順を確認するには、「[Amazon Bedrock ナレッジベースでデータソースに接続してナレッジベースを作成する](knowledge-base-create.md)」に戻り、データソースを接続した後の手順から続行します。

------
#### [ API ]

以下は、Amazon Bedrock ナレッジベースの Amazon S3 に接続するための設定の例です。API と AWS CLIまたは Python などのサポートされている SDK を使用してデータソースを設定します。[CreateKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateKnowledgeBase.html) を呼び出した後、[CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html) を呼び出して、`dataSourceConfiguration` の接続情報を使用してデータソースを作成します。

オプションの `vectorIngestionConfiguration` フィールドを含めることで取り込みに適用できるカスタマイズの詳細については、「[データソースの取り込みをカスタマイズする](kb-data-source-customize-ingestion.md)」を参照してください。

**AWS Command Line Interface**

```
aws bedrock-agent create-data-source \
 --name "S3-connector" \
 --description "S3 data source connector for Amazon Bedrock to use content in S3" \
 --knowledge-base-id "your-knowledge-base-id" \
 --data-source-configuration file://s3-bedrock-connector-configuration.json \
 --data-deletion-policy "DELETE" \
 --vector-ingestion-configuration '{"chunkingConfiguration":{"chunkingStrategy":"FIXED_SIZE","fixedSizeChunkingConfiguration":{"maxTokens":100,"overlapPercentage":10}}}'
                    
s3-bedrock-connector-configuration.json
{
    "s3Configuration": {
	    "bucketArn": "arn:aws:s3:::bucket-name",
	    "bucketOwnerAccountId": "000000000000",
	    "inclusionPrefixes": [
	        "documents/"
	    ]
    },
    "type": "S3"	
}
```

------

# ナレッジベースの Confluence に接続する
<a name="confluence-data-source-connector"></a>

Atlassian Confluence は、プロジェクト計画、ソフトウェア開発、製品管理の共有、保存、作業を目的とした共同作業管理ツールです。[Amazon Bedrock 用の AWS マネジメントコンソール](https://console.aws.amazon.com/bedrock/home)または [CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html) API を使用して、Amazon Bedrock ナレッジベースの Confluence インスタンスに接続できます (「Amazon Bedrock [supported SDKs and AWS CLI](https://docs.aws.amazon.com/bedrock/latest/APIReference/welcome.html)」を参照)。

**注記**  
Confluence データソースコネクタはプレビューリリースの段階であり、変更される可能性があります。  
Confluence データソースは、テーブル、グラフ、図、その他の画像などのマルチモーダルデータはサポートしていません。

Amazon Bedrock は、Confluence Cloud インスタンスへの接続をサポートしています。現在、このデータソースで使用できるのは Amazon OpenSearch Serverless ベクトルストアのみです。

クロールできるファイル数とファイルあたりの MB に制限があります。「[Quotas for knowledge bases](https://docs.aws.amazon.com/bedrock/latest/userguide/quotas.html)」を参照してください。

**Topics**
+ [サポートされている機能](#supported-features-confluence-connector)
+ [前提条件](#prerequisites-confluence-connector)
+ [接続設定](#configuration-confluence-connector)

## サポートされている機能
<a name="supported-features-confluence-connector"></a>
+ メインドキュメントフィールドの自動検出
+ 包含/除外コンテンツフィルター
+ 追加、更新、削除されたコンテンツの増分同期
+ OAuth 2.0 認証、Confluence API トークンを使用した認証

## 前提条件
<a name="prerequisites-confluence-connector"></a>

**Confluence で以下を確認してください。**
+ Confluence インスタンスの URL をメモします。例えば、Confluence Cloud の場合は、*https://example.atlassian.net* です。Confluence Cloud の URL は、*.atlassian.net* で終わるベース URL である必要があります。
+ Amazon Bedrock が Confluence Cloud インスタンスに接続できるように、ユーザー名 (管理者アカウントの E メール) とパスワード (Confluence API トークン) を含む基本的な認証情報を設定します。Confluence API トークンの作成方法については、Atlassian ウェブサイトの「[Manage API tokens for your Atlassian account](https://support.atlassian.com/atlassian-account/docs/manage-api-tokens-for-your-atlassian-account/#Create-an-API-token)」を参照してください。
+ (オプション) アプリケーションキー、アプリケーションシークレット、アクセストークン、および更新トークンの認証情報を使用して OAuth 2.0 アプリケーションを設定します。詳細については、Atlassian ウェブサイトの「[OAuth 2.0 apps](https://developer.atlassian.com/cloud/confluence/oauth-2-3lo-apps/)」を参照してください。
+ OAuth 2.0 アプリが Confluence に接続するには、特定の読み取りアクセス許可またはスコープを有効にする必要があります。

  Confluence API:
  + offline\$1access
  + read:content:confluence – 詳細なコンテンツを表示する 
  + read:content-details:confluence – コンテンツの詳細を表示する 
  + read:space-details:confluence – スペースの詳細を表示する
  + read:audit-log:confluence – 監査レコードを表示する 
  + read:page:confluence – ページを表示する 
  + read:attachment:confluence – コンテンツ添付ファイルを表示およびダウンロードする 
  + read:blogpost:confluence – ブログ投稿を表示する 
  + read:custom-content:confluence – カスタムコンテンツを表示する 
  + read:comment:confluence – コメントを表示する 
  + read:template:confluence – コンテンツテンプレートを表示する 
  + read:label:confluence – ラベルを表示する 
  + read:watcher:confluence – コンテンツウォッチャーを表示する 
  + read:relation:confluence – エンティティ関係を表示する 
  + read:user:confluence – ユーザーの詳細を表示する 
  + read:configuration:confluence – Confluence 設定を表示する 
  + read:space:confluence – スペースの詳細を表示する 
  + read:space.property:confluence – スペースプロパティを表示する 
  + read:user.property:confluence – ユーザープロパティを表示する 
  + read:space.setting:confluence – スペース設定を表示する 
  + read:analytics.content:confluence – コンテンツの分析を表示する
  + read:content.property:confluence – コンテンツプロパティを表示する
  + read:content.metadata:confluence – コンテンツの概要を表示する 
  + read:inlinetask:confluence – タスクを表示する 
  + read:task:confluence – タスクを表示する 
  + read:whiteboard:confluence – ホワイトボードを表示する 
  + read:app-data:confluence – アプリデータを読み取る 
  + read:folder:confluence - フォルダを表示する
  + read:embed:confluence - スマートリンクデータを表示する

**AWS アカウントで、以下のことを確認してください。**
+ 認証の認証情報を[AWS Secrets Manager シークレット](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html)に保存し、シークレットの Amazon リソースネーム (ARN) を書き留めます。このページの**接続設定**の説明に従って、シークレットに入れる必要があるキーと値のペアを含めます。
+ ナレッジベースの AWS Identity and Access Management (IAM) ロール/アクセス許可ポリシーに、データソースに接続するために必要なアクセス許可を含めます。ナレッジベースの IAM ロールに追加する、このデータソースが必要なアクセス許可については、「[Permissions to access data sources](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-permissions.html#kb-permissions-access-ds)」を参照してください。

**注記**  
コンソールを使用する場合は、AWS Secrets Manager に移動してシークレットを追加するか、データソース設定手順の一部として既存のシークレットを使用できます。必要なすべてのアクセス許可を持つ IAM ロールは、ナレッジベースを作成するためのコンソール手順の一部として作成できます。データソースやその他の設定を行うと、必要なすべてのアクセス許可を持つ IAM ロールが特定のナレッジベースに適用されます。  
認証情報とシークレットは、定期的に更新またはローテーションすることをお勧めします。セキュリティに必要なアクセスレベルのみを提供してください。データソース間で認証情報とシークレットを再利用することはお勧めしません。

## 接続設定
<a name="configuration-confluence-connector"></a>

Confluence インスタンスに接続するには、Amazon Bedrock がデータにアクセスしてクロールできるように、必要な設定情報を提供する必要があります。また、[前提条件](#prerequisites-confluence-connector) に従う必要があります。

このデータソースの設定例をこのセクションに示します。

ドキュメントフィールドの自動検出、包含/除外フィルター、増分同期、シークレット認証情報、およびこれらの仕組みの詳細については、以下を選択してください。

### メインドキュメントフィールドの自動検出
<a name="ds-confluence-document-fields"></a>

データソースコネクタは、ドキュメントまたはコンテンツのすべてのメインメタデータフィールドを自動的に検出してクロールします。例えば、データソースコネクタは、ドキュメントの本文に相当する部分、ドキュメントタイトル、ドキュメントの作成日または変更日、またはドキュメントに適用される可能性のあるその他のコアフィールドをクロールできます。

**重要**  
コンテンツに機密情報が含まれている場合、Amazon Bedrock は機密情報を使用して応答できます。

メタデータフィールドにフィルタリング演算子を適用して、レスポンスの関連性をさらに高めることができます。例えば、ドキュメントの「epoch\$1modification\$1time」は、ドキュメントの最終更新日を 1970 年 1 月 1 日からの経過秒数で表します。「epoch\$1modification\$1time」にフィルターを適用して、その値が特定の数*より大きい*最新のデータだけを取得できます。メタデータフィールドに適用できるフィルタリング演算子の詳細については、「[メタデータとフィルタリング](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-test-config.html)」を参照してください。

### 包含/除外フィルター
<a name="ds-confluence-inclusion-exclusion"></a>

特定のコンテンツのクロールを含めることも除外することもできます。例えば、ファイル名に「private」が含まれているファイルのクロールをスキップするために、除外プレフィックス/正規表現パターンを指定することができます。特定のコンテンツエンティティまたはコンテンツタイプを含めるように、包含プレフィックス/正規表現パターンを指定することもできます。包含フィルターと除外フィルターを指定し、両方がドキュメントに一致する場合、除外フィルターが優先され、ドキュメントはクロールされません。

ファイル名に「private」を含む PDF ファイルを除外またはフィルタリングする正規表現パターンの例: 「*.\$1private.\$1\$1\$1.pdf*」

包含/除外フィルターは、次のコンテンツタイプに適用できます。
+ `Space`: 一意のスペースキー
+ `Page`: メインページのタイトル
+ `Blog`: メインブログのタイトル
+ `Comment`: 特定のページまたはブログに属するコメント。*Re: Page/Blog Title* を指定
+ `Attachment`: 拡張子付きの添付ファイル名

### 増分同期
<a name="ds-confluence-incremental-sync"></a>

データソースコネクタは、データソースがナレッジベースと同期するたびに、新規、変更、削除されたコンテンツをクロールします。Amazon Bedrock は、データソースの仕組みを使用して、コンテンツの変更を追跡し、前回の同期以降に変更されたコンテンツをクロールできます。データソースをナレッジベースと初めて同期すると、デフォルトですべてのコンテンツがクロールされます。

データソースをナレッジベースと同期するには、[StartIngestionJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StartIngestionJob.html) API を使用するか、コンソールでナレッジベースを選択し、データソースの概要セクションで **[同期]** を選択します。

**重要**  
データソースから同期するすべてのデータは、データを取得する `bedrock:Retrieve` アクセス許可を持つすべてのユーザーが利用できるようになります。これには、データソースのアクセス許可が制御されているデータを含めることもできます。詳細については、「[Knowledge base permissions](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-permissions.html)」を参照してください。

### シークレット認証情報
<a name="ds-confluence-secret-auth-credentials"></a>

(基本認証を使用する場合) AWS Secrets Manager の認証情報には、次のキーと値のペアを含める必要があります。
+ `username`: *Atlassian アカウントの管理者ユーザーの E メールアドレス*
+ `password`: *Confluence API トークン*

(OAuth 2.0 認証を使用する場合) AWS Secrets Manager の認証情報には、次のキーと値のペアを含める必要があります。
+ `confluenceAppKey`: *アプリキー*
+ `confluenceAppSecret`: *アプリシークレット*
+ `confluenceAccessToken`: *アプリアクセストークン*
+ `confluenceRefreshToken`: *アプリ更新トークン*

**注記**  
Confluence OAuth2.0 の**アクセス**トークンの有効期限は、デフォルトでは 60 分です。データソースの同期 (同期ジョブ) 中にアクセストークンの有効期限が切れた場合、Amazon Bedrock は、指定された**更新**トークンを使用してアクセストークンを再生成します。その際は、アクセストークンと更新トークンの両方が更新されます。現在の同期ジョブから次の同期ジョブまでトークンを最新の状態で維持するために、Amazon Bedrock にはナレッジベースの IAM ロールの一部であるシークレット認証情報の書き込み/保存のアクセス許可が必要です。

**注記**  
AWS Secrets Manager のシークレットは、ナレッジベースと同じリージョンを使用する必要があります。

------
#### [ Console ]

**Confluence インスタンスをナレッジベースに接続する**

1. [Amazon Bedrock ナレッジベースでデータソースに接続してナレッジベースを作成する](knowledge-base-create.md) の手順に従って、データソースとして **Confluence** を選択します。

1. データソース名と説明 (オプション) を入力します。

1. Confluence インスタンスの URL を入力します。例えば、Confluence Cloud の場合は、*https://example.atlassian.net* です。Confluence Cloud の URL は、*.atlassian.net* で終わるベース URL である必要があります。

1. **[詳細設定]** セクションでは、必要に応じて以下を設定できます。
   + **一時的なデータストレージ用の KMS キー。**– データを埋め込みに変換するとともに、デフォルト AWS マネージドキー または独自の KMS キーを使用して一時的なデータを暗号化できます。詳細については、「[データインジェスト時の一時データストレージの暗号化](encryption-kb.md#encryption-kb-ingestion)」を参照してください。
   + **データ削除ポリシー** – デフォルトでベクトルストアに保存されているデータソースのベクトル埋め込みを削除したり、ベクトルストアデータを保持するように選択したりできます。

1. Confluence インスタンスに接続するための認証情報を入力します。
   + 基本的な認証の場合、AWS Secrets Manager に移動してシークレット認証情報を追加するか、作成したシークレットに既存の Amazon リソースネーム (ARN) を使用します。シークレットには、ユーザー名として Atlassian アカウントの管理者ユーザーの E メールアドレスと、パスワードの代わりに Confluence API トークンが含まれている必要があります。Confluence API トークンの作成方法については、Atlassian ウェブサイトの「[Manage API tokens for your Atlassian account](https://support.atlassian.com/atlassian-account/docs/manage-api-tokens-for-your-atlassian-account/#Create-an-API-token)」を参照してください。
   + OAuth 2.0 認証の場合、AWS Secrets Manager に移動してシークレット認証情報を追加するか、作成したシークレットに既存の Amazon リソースネーム (ARN) を使用します。シークレットには、Confluence アプリケーションキー、アプリケーションシークレット、アクセストークン、および更新トークンが含まれている必要があります。詳細については、Atlassian ウェブサイトの「[OAuth 2.0 apps](https://developer.atlassian.com/cloud/confluence/oauth-2-3lo-apps/)」を参照してください。

1. (オプション) **[コンテンツの解析とチャンキング]** セクションで、データの解析とチャンキングの方法をカスタマイズできます。これらのカスタマイズの詳細については、次のリソースを参照してください。
   + 解析オプションの詳細については、「[データソースの解析オプション](kb-advanced-parsing.md)」を参照してください。
   + チャンキング戦略の詳細については、「[ナレッジベースのコンテンツのチャンキングの仕組み](kb-chunking.md)」を参照してください。
**警告**  
データソースに接続した後はチャンキング戦略を変更できません。
   + Lambda 関数を使用してデータのチャンキングとメタデータの処理をカスタマイズする方法の詳細については、「[カスタム変換 Lambda 関数を使用してデータの取り込み方法を定義する](kb-custom-transformation.md)」を参照してください。

1. フィルター/正規表現パターンの使用を選択して、特定のコンテンツを含めるか除外します。指定しない場合、標準コンテンツはすべてクロールされます。

1. 埋め込みモデルとベクトルストアの選択を続行します。残りの手順を確認するには、「[Amazon Bedrock ナレッジベースでデータソースに接続してナレッジベースを作成する](knowledge-base-create.md)」に戻り、データソースを接続した後の手順から続行します。

------
#### [ API ]

以下は、Amazon Bedrock ナレッジベースの Confluence Cloud に接続するための設定の例です。データソースは、AWS CLI または Python などのサポートされている SDK で API を使用して設定します。[CreateKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateKnowledgeBase.html) を呼び出した後、[CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html) を呼び出して、`dataSourceConfiguration` の接続情報を使用してデータソースを作成します。

オプションの `vectorIngestionConfiguration` フィールドを含めることで取り込みに適用できるカスタマイズの詳細については、「[データソースの取り込みをカスタマイズする](kb-data-source-customize-ingestion.md)」を参照してください。

**AWS Command Line Interface**

```
aws bedrock create-data-source \
 --name "Confluence Cloud/SaaS connector" \
 --description "Confluence Cloud/SaaS data source connector for Amazon Bedrock to use content in Confluence" \
 --knowledge-base-id "your-knowledge-base-id" \
 --data-source-configuration file://confluence-bedrock-connector-configuration.json \
 --data-deletion-policy "DELETE" \
 --vector-ingestion-configuration '{"chunkingConfiguration":[{"chunkingStrategy":"FIXED_SIZE","fixedSizeChunkingConfiguration":[{"maxTokens":"100","overlapPercentage":"10"}]}]}'

confluence-bedrock-connector-configuration.json
{
    "confluenceConfiguration": {
        "sourceConfiguration": {
            "hostUrl": "https://example.atlassian.net",
            "hostType": "SAAS",
            "authType": "OAUTH2_CLIENT_CREDENTIALS",
            "credentialsSecretArn": "arn:aws::secretsmanager:your-region:secret:AmazonBedrock-Confluence"
        },
        "crawlerConfiguration": {
            "filterConfiguration": {
                "type": "PATTERN",
                "patternObjectFilter": {
                    "filters": [
                        {
                            "objectType": "Attachment",
                            "inclusionFilters": [
                                ".*\\.pdf"
                            ],
                            "exclusionFilters": [
                                ".*private.*\\.pdf"
                            ]
                        }
                    ]
                }
            }
        }
    },
    "type": "CONFLUENCE"
}
```

------

# ナレッジベースの Microsoft SharePoint に接続する
<a name="sharepoint-data-source-connector"></a>

Microsoft SharePoint は、ドキュメント、ウェブページ、ウェブサイト、リストなどの作業をするための共同のウェブベースサービスです。Amazon Bedrock の [AWS マネジメントコンソールまたは CreateDataSource API を使用して、Amazon Bedrock ](https://console.aws.amazon.com/bedrock/home)ナレッジベースの SharePoint インスタンスに接続できます (Amazon Bedrock が[サポートする SDKsと AWS CLI](https://docs.aws.amazon.com/bedrock/latest/APIReference/welcome.html) を参照）。 [CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html) 

**注記**  
SharePoint データソースコネクタはプレビューリリースの段階であり、変更される可能性があります。  
Microsoft SharePoint データソースは、テーブル、グラフ、図、その他の画像などのマルチモーダルデータはサポートしていません。

Amazon Bedrock は、SharePoint オンラインインスタンスへの接続をサポートしています。OneNote ドキュメントのクロールは現在サポートされていません。現在、このデータソースで使用できるのは Amazon OpenSearch Serverless ベクトルストアのみです。

クロールできるファイル数とファイルあたりの MB に制限があります。「[Quotas for knowledge bases](https://docs.aws.amazon.com/bedrock/latest/userguide/quotas.html)」を参照してください。

**Topics**
+ [サポートされている機能](#supported-features-sharepoint-connector)
+ [前提条件](#prerequisites-sharepoint-connector)
+ [接続設定](#configuration-sharepoint-connector)

## サポートされている機能
<a name="supported-features-sharepoint-connector"></a>
+ メインドキュメントフィールドの自動検出
+ 包含/除外コンテンツフィルター
+ 追加、更新、削除されたコンテンツの増分同期
+ SharePoint アプリ専用認証

## 前提条件
<a name="prerequisites-sharepoint-connector"></a>

### SharePoint (オンライン)
<a name="prerequisites-sharepoint-connector-online"></a>

**SharePoint (オンライン) で、SharePoint アプリ専用の認証を使用するための次の手順を実行します。**
+ SharePoint オンラインサイトの URL (複数可) を控える。例: *https://yourdomain.sharepoint.com/sites/mysite*。URL は *https* で始まり、*sharepoint.com* を含む必要があります。サイト URL は、*sharepoint.com/* や *sites/mysite/home.aspx* ではなく、実際の SharePoint サイトである必要があります。
+ SharePoint オンラインインスタンス の URL (複数可) のドメイン名を控える。
+ Microsoft 365 のテナント ID をコピーします。テナント ID は、Microsoft Entra ポータルのプロパティにあります。詳細については、「[Microsoft 365 テナント ID を見つける](https://learn.microsoft.com/en-us/sharepoint/find-your-office-365-tenant-id)」を参照してください。
**注記**  
アプリケーションの例については、Microsoft Learn ウェブサイトの 「[Microsoft Entra ID でクライアント アプリケーションを登録する](https://learn.microsoft.com/en-us/azure/healthcare-apis/register-application)」(旧称 Azure Active Directory) を参照してください。
+ SharePoint アプリ専用の認証情報を設定します。
+ SharePoint アプリ専用にアクセス許可を付与するときに、クライアント ID とクライアントシークレット値をコピーします。詳細については、「[SharePoint アプリ専用のアクセスを許可する](https://learn.microsoft.com/en-us/sharepoint/dev/solution-guidance/security-apponly-azureacs)」を参照してください。
**注記**  
SharePoint アプリ専用の API アクセス許可を設定する必要はありません。ただし、SharePoint 側でアプリアクセス許可を設定する必要があります。必要なアプリアクセス許可の詳細については、「[SharePoint アプリ専用のアクセスを許可する](https://learn.microsoft.com/en-us/sharepoint/dev/solution-guidance/security-apponly-azureacs)」に関する Microsoft ドキュメントを参照してください。

### AWS アカウント
<a name="prerequisites-sharepoint-connector-account"></a>

** AWS アカウントで、以下を確認してください**。
+ 認証の認証情報を[AWS Secrets Manager シークレット](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html)に保存し、シークレットの Amazon リソースネーム (ARN) を書き留めます。このページの**接続設定**の説明に従って、シークレットに入れる必要があるキーと値のペアを含めます。
+ ナレッジベースの AWS Identity and Access Management (IAM) ロール/アクセス許可ポリシーに、データソースに接続するために必要なアクセス許可を含めます。このデータソースがナレッジベース IAM ロールに追加するために必要なアクセス許可については、[「データソースへのアクセス許可](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-permissions.html#kb-permissions-access-ds)」を参照してください。

**注記**  
コンソールを使用する場合は、 に移動 AWS Secrets Manager してシークレットを追加するか、データソース設定ステップの一部として既存のシークレットを使用できます。必要なすべてのアクセス許可を持つ IAM ロールは、ナレッジベースを作成するためのコンソールステップの一部として作成できます。データソースやその他の設定を行うと、必要なすべてのアクセス許可を持つ IAM ロールが特定のナレッジベースに適用されます。  
認証情報とシークレットは、定期的に更新またはローテーションすることをお勧めします。セキュリティに必要なアクセスレベルのみを提供してください。データソース間で認証情報とシークレットを再利用することはお勧めしません。

## 接続設定
<a name="configuration-sharepoint-connector"></a>

SharePoint インスタンスに接続するには、Amazon Bedrock がデータにアクセスしてクロールできるように、必要な設定情報を提供する必要があります。また、[前提条件](#prerequisites-sharepoint-connector) に従う必要があります。

このデータソースの設定例をこのセクションに示します。

ドキュメントフィールドの自動検出、包含/除外フィルター、増分同期、シークレット認証情報、およびこれらの仕組みの詳細については、以下を選択してください。

### メインドキュメントフィールドの自動検出
<a name="ds-sharepoint-document-fields"></a>

データソースコネクタは、ドキュメントまたはコンテンツのすべてのメインメタデータフィールドを自動的に検出してクロールします。例えば、データソースコネクタは、ドキュメントの本文に相当する部分、ドキュメントタイトル、ドキュメントの作成日または変更日、またはドキュメントに適用される可能性のあるその他のコアフィールドをクロールできます。

**重要**  
コンテンツに機密情報が含まれている場合、 Amazon Bedrock は機密情報を使用して応答できます。

メタデータフィールドにフィルタリング演算子を適用して、レスポンスの関連性をさらに高めることができます。例えば、ドキュメントの「epoch\$1modification\$1time」は、ドキュメントの最終更新日を 1970 年 1 月 1 日からの経過秒数で表します。「epoch\$1modification\$1time」にフィルターを適用して、その値が特定の数*より大きい*最新のデータだけを取得できます。メタデータフィールドに適用できるフィルタリング演算子の詳細については、「[メタデータとフィルタリング](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-test-config.html)」を参照してください。

### 包含/除外フィルター
<a name="ds-sharepoint-inclusion-exclusion"></a>

特定のコンテンツのクロールを含めることも除外することもできます。例えば、ファイル名に「private」が含まれているファイルのクロールをスキップするために、除外プレフィックス/正規表現パターンを指定することができます。特定のコンテンツエンティティまたはコンテンツタイプを含めるように、包含プレフィックス/正規表現パターンを指定することもできます。包含フィルターと除外フィルターを指定し、両方がドキュメントに一致する場合、除外フィルターが優先され、ドキュメントはクロールされません。

ファイル名に「private」を含む PDF ファイルを除外またはフィルタリングする正規表現パターンの例: 「*.\$1private.\$1\$1\$1.pdf*」

包含/除外フィルターは、次のコンテンツタイプに適用できます。
+ `Page`: メインページのタイトル
+ `Event`: イベント名
+ `File`: 添付ファイルとすべてのドキュメントファイルの拡張子を含むファイル名

OneNote ドキュメントのクロールは現在サポートされていません。

### 増分同期
<a name="ds-sharepoint-incremental-sync"></a>

データソースコネクタは、データソースがナレッジベースと同期するたびに、新規、変更、削除されたコンテンツをクロールします。 Amazon Bedrock は、データソースのメカニズムを使用してコンテンツの変更を追跡し、前回の同期以降に変更されたコンテンツをクロールできます。データソースをナレッジベースと初めて同期すると、デフォルトですべてのコンテンツがクロールされます。

データソースをナレッジベースと同期するには、[StartIngestionJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StartIngestionJob.html) API を使用するか、コンソールでナレッジベースを選択し、データソースの概要セクションで **[同期]** を選択します。

**重要**  
データソースから同期するすべてのデータは、データを取得する `bedrock:Retrieve` アクセス許可を持つすべてのユーザーが利用できるようになります。これには、データソースのアクセス許可が制御されているデータを含めることもできます。詳細については、「[Knowledge base permissions](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-permissions.html)」を参照してください。

### シークレット認証情報
<a name="ds-sharepoint-secret-auth-credentials"></a>

SharePoint App-Only 認証を使用する場合、 のシークレット認証情報には、次のキーと値のペアが含まれている AWS Secrets Manager 必要があります。
+ `clientId`: *Microsoft Entra SharePoint アプリケーションに関連付けられたクライアント ID*
+ `clientSecret`: *Microsoft Entra SharePoint アプリケーションに関連付けられたクライアントシークレット*
+ `sharePointClientId`: *SharePoint アプリをアプリ専用認証に登録するときに生成されるクライアント ID*
+ `sharePointClientSecret`: *SharePoint アプリをアプリ専用認証に登録するときに生成されるクライアントシークレット*

**注記**  
のシークレット AWS Secrets Manager は、ナレッジベースの同じリージョンを使用する必要があります。

------
#### [ Console ]

**SharePoint インスタンスをナレッジベースに接続する**<a name="connect-sharepoint-console"></a>

1. [Amazon Bedrock ナレッジベースでデータソースに接続してナレッジベースを作成する](knowledge-base-create.md) の手順に従って、**SharePoint** をデータソースとして選択します。

1. データソース名と説明 (オプション) を入力します。

1. SharePoint サイトの URL (複数可) を入力します。例えば、SharePoint オンラインの場合は、*https://yourdomain.sharepoint.com/sites/mysite* です。URL は *https* で始まり、*sharepoint.com* を含む必要があります。サイト URL は、*sharepoint.com/* や *sites/mysite/home.aspx* ではなく、実際の SharePoint サイトである必要があります。

1. SharePoint インスタンスのドメイン名を入力します。

1. **[詳細設定]** セクションでは、必要に応じて以下を設定できます。
   + **一時的なデータストレージ用の KMS キー。**– デフォルト AWS マネージドキー または独自の KMS キーを使用して、データを埋め込みに変換しながら、一時的なデータを暗号化できます。詳細については、「[データインジェスト時の一時データストレージの暗号化](encryption-kb.md#encryption-kb-ingestion)」を参照してください。
   + **データ削除ポリシー** – デフォルトでベクトルストアに保存されているデータソースのベクトル埋め込みを削除したり、ベクトルストアデータを保持するように選択したりできます。

1. SharePoint インスタンスに接続するための認証情報を入力します。SharePoint アプリ専用認証

   1. テナント ID を指定します。テナント ID は Azure Active Directory ポータルの [プロパティ] で確認できます。

   1.  AWS Secrets Manager シークレット認証情報を追加するか、作成したシークレットに既存の Amazon リソースネーム (ARN) を使用します。シークレットには、テナントレベルまたはサイトレベルでアプリ専用を登録したときに生成された SharePoint クライアント ID と SharePoint クライアントシークレット、および Entra にアプリを登録したときに生成された Entra クライアント ID と Entra クライアントシークレットが含まれている必要があります。

1. (オプション) **[コンテンツの解析とチャンキング]** セクションで、データの解析とチャンキングの方法をカスタマイズできます。これらのカスタマイズの詳細については、次のリソースを参照してください。
   + 解析オプションの詳細については、「[データソースの解析オプション](kb-advanced-parsing.md)」を参照してください。
   + チャンキング戦略の詳細については、「[ナレッジベースのコンテンツのチャンキングの仕組み](kb-chunking.md)」を参照してください。
**警告**  
データソースに接続した後はチャンキング戦略を変更できません。
   + Lambda 関数を使用してデータのチャンキングとメタデータの処理をカスタマイズする方法の詳細については、「[カスタム変換 Lambda 関数を使用してデータの取り込み方法を定義する](kb-custom-transformation.md)」を参照してください。

1. フィルター/正規表現パターンの使用を選択して、特定のコンテンツを含めるか除外します。指定しない場合、標準コンテンツはすべてクロールされます。

1. 埋め込みモデルとベクトルストアの選択を続行します。残りの手順を確認するには、「[Amazon Bedrock ナレッジベースでデータソースに接続してナレッジベースを作成する](knowledge-base-create.md)」に戻り、データソースを接続した後の手順から続行します。

------
#### [ API ]

以下は、Amazon Bedrock ナレッジベースの SharePoint オンラインに接続するための設定の例です。または Python などの AWS CLI サポートされている SDK で API を使用してデータソースを設定します。[CreateKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateKnowledgeBase.html) を呼び出した後、[CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html) を呼び出して、`dataSourceConfiguration` の接続情報を使用してデータソースを作成します。

オプションの `vectorIngestionConfiguration` フィールドを含めることで取り込みに適用できるカスタマイズの詳細については、「[データソースの取り込みをカスタマイズする](kb-data-source-customize-ingestion.md)」を参照してください。

**AWS Command Line Interface**

```
aws bedrock-agent create-data-source \
 --name "SharePoint Online connector" \
 --description "SharePoint Online data source connector for Amazon Bedrock to use content in SharePoint" \
 --knowledge-base-id "your-knowledge-base-id" \
 --data-source-configuration file://sharepoint-bedrock-connector-configuration.json \
 --data-deletion-policy "DELETE"
```

**`sharepoint-bedrock-connector-configuration.json` の内容**

```
{
    "sharePointConfiguration": {
        "sourceConfiguration": {
            "tenantId": "888d0b57-69f1-4fb8-957f-e1f0bedf64de",
            "hostType": "ONLINE",
            "domain": "yourdomain",
            "siteUrls": [
                "https://yourdomain.sharepoint.com/sites/mysite"
            ],
            "authType": "OAUTH2_SHAREPOINT_APP_ONLY_CLIENT_CREDENTIALS",
            "credentialsSecretArn": "arn:aws::secretsmanager:your-region:secret:AmazonBedrock-SharePoint"
        },
        "crawlerConfiguration": {
            "filterConfiguration": {
                "type": "PATTERN",
                "patternObjectFilter": {
                    "filters": [
                        {
                            "objectType": "File",
                            "inclusionFilters": [
                                ".*\\.pdf"
                            ],
                            "exclusionFilters": [
                                ".*private.*\\.pdf"
                            ]
                        }
                    ]
                }
            }
        }
    },
    "type": "SHAREPOINT"
}
```

------

**重要**  
OAuth2.0 認証はお勧めしません。SharePoint アプリ専用認証を使用することをお勧めします。

## OAuth2.0 の使用
<a name="sharepoint-connector-oauth"></a>

OAuth 2.0 を使用すると、ナレッジベースと統合された SharePoint コネクタの SharePoint リソースへのアクセスを認証および認可できます。

### 前提条件
<a name="sharepoint-connector-oauth-prereq"></a>

**SharePoint では、OAuth 2.0 認証の場合、以下を確認してください**。
+ SharePoint オンラインサイトの URL (複数可) を控える。例: *https://yourdomain.sharepoint.com/sites/mysite*。URL は *https* で始まり、*sharepoint.com* を含む必要があります。サイト URL は、*sharepoint.com/* や *sites/mysite/home.aspx* ではなく、実際の SharePoint サイトである必要があります。
+ SharePoint オンラインインスタンス の URL (複数可) のドメイン名を控える。
+ Microsoft 365 のテナント ID をコピーします。テナント ID は Microsoft Entra ポータルのプロパティまたは OAuth アプリケーションで確認できます。

  管理者の SharePoint アカウントのユーザー名とパスワードを控え、アプリケーションを登録する際にクライアント ID とクライアントシークレットの値をコピーします。
**注記**  
アプリケーションの例については、Microsoft Learn ウェブサイトの 「[Microsoft Entra ID でクライアント アプリケーションを登録する](https://learn.microsoft.com/en-us/azure/healthcare-apis/register-application)」(旧称 Azure Active Directory) を参照してください。
+ アプリケーションを登録する際に SharePoint に接続するには、特定の読み取りアクセス許可が必要です。
  + SharePoint: AllSites.Read (委任) - すべてのサイトコレクションの項目を読み取る
+ 管理者ユーザーを使用して、Azure ポータルで**セキュリティのデフォルト**を無効にする必要がある場合があります。Azure Portal でのセキュリティのデフォルト設定の管理の詳細については、[セキュリティのデフォルトを有効または無効にする方法に関する Microsoft のドキュメント](https://learn.microsoft.com/en-us/microsoft-365/business-premium/m365bp-conditional-access?view=o365-worldwide&tabs=secdefaults#security-defaults-1)を参照してください。
+ Amazon Bedrock が SharePoint コンテンツのクロールをブロックされないように、SharePoint アカウントの多要素認証 (MFA) をオフにする必要があるかもしれません。

前提条件を満たすには、「[AWS アカウント](#prerequisites-sharepoint-connector-account)」の手順が完了していることを確認してください。

### シークレット認証情報
<a name="sharepoint-secret-auth-credentials-oauth"></a>

OAuth2.0 の接続設定は、「[接続設定](#configuration-sharepoint-connector)」で説明されているように、メインドキュメントフィールド、インクルージョン/除外フィルター、増分同期の自動検出と同じ手順を実行できます。

**OAuth 2.0 認証では、 のシークレット認証情報にこれらのキーと値のペアが含まれている AWS Secrets Manager 必要があります**。
+ `username`: *SharePoint 管理者ユーザー名*
+ `password`: *SharePoint 管理者パスワード*
+ `clientId`: *OAuth アプリクライアント ID*
+ `clientSecret`: *OAuth アプリクライアントシークレット*

### SharePoint インスタンスをナレッジベースに接続する
<a name="sharepoint-connector-oauth-using"></a>

OAuth2.0 を使用するときに SharePoint インスタンスをナレッジベースに接続する場合
+ (コンソール) コンソールで、「[SharePoint インスタンスをナレッジベースに接続する](https://docs.aws.amazon.com/bedrock/latest/userguide/sharepoint-data-source-connector.html#connect-sharepoint-console)」で説明しているのと同じ手順に従います。SharePoint インスタンスに接続するための認証情報を入力する場合
  + テナント ID を指定します。テナント ID は Azure Active Directory ポータルの [プロパティ] で確認できます。
  +  AWS Secrets Manager シークレット認証情報を追加するか、作成したシークレットに既存の Amazon リソースネーム (ARN) を使用します。シークレットには、SharePoint 管理者のユーザー名とパスワード、登録済みのアプリクライアント ID とクライアントシークレットを含める必要があります。アプリケーションの例については、Microsoft Learn ウェブサイトの 「[Microsoft Entra ID でクライアント アプリケーションを登録する](https://learn.microsoft.com/en-us/azure/healthcare-apis/register-application)」(旧称 Azure Active Directory) を参照してください。
+ (API) 以下は、`CreateDataSource` API を使用して OAuth2.0 の接続情報を含むデータソースを作成する例です。

  ```
  aws bedrock-agent create-data-source \
   --name "SharePoint Online connector" \
   --description "SharePoint Online data source connector for Amazon Bedrock to use content in SharePoint" \
   --knowledge-base-id "your-knowledge-base-id" \
   --data-source-configuration file://sharepoint-bedrock-connector-configuration.json \
   --data-deletion-policy "DELETE"
  ```

  **`sharepoint-bedrock-connector-configuration.json` の内容**

  ```
  {
      "sharePointConfiguration": {
          "sourceConfiguration": {
              "tenantId": "888d0b57-69f1-4fb8-957f-e1f0bedf64de",
              "hostType": "ONLINE",
              "domain": "yourdomain",
              "siteUrls": [
                  "https://yourdomain.sharepoint.com/sites/mysite"
              ],
              "authType": "OAUTH2_CLIENT_CREDENTIALS",
              "credentialsSecretArn": "arn:aws::secretsmanager:your-region:secret:AmazonBedrock-SharePoint"
          },
          "crawlerConfiguration": {
              "filterConfiguration": {
                  "type": "PATTERN",
                  "patternObjectFilter": {
                      "filters": [
                          {
                              "objectType": "File",
                              "inclusionFilters": [
                                  ".*\\.pdf"
                              ],
                              "exclusionFilters": [
                                  ".*private.*\\.pdf"
                              ]
                          }
                      ]
                  }
              }
          }
      },
      "type": "SHAREPOINT"
  }
  ```

# ナレッジベースの Salesforce に接続する
<a name="salesforce-data-source-connector"></a>

Salesforce は、サポート、営業、マーケティングの各チームを管理するための顧客関係管理 (CRM) ツールです。[Amazon Bedrock の AWS マネジメントコンソール](https://console.aws.amazon.com/bedrock/home)または [CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html) API を使用して、Amazon Bedrock ナレッジベースの Salesforce インスタンスに接続できます (Amazon Bedrock で[サポートされている SDK と AWS CLI](https://docs.aws.amazon.com/bedrock/latest/APIReference/welcome.html) を参照)。

**注記**  
Salesforce データソースコネクタはプレビューリリースの段階であり、変更される可能性があります。  
Salesforce データソースは、テーブル、グラフ、図、その他の画像などのマルチモーダルデータはサポートしていません。

現在、このデータソースで使用できるのは Amazon OpenSearch Serverless ベクトルストアのみです。

クロールできるファイル数とファイルあたりの MB に制限があります。「[Quotas for knowledge bases](https://docs.aws.amazon.com/bedrock/latest/userguide/quotas.html)」を参照してください。

**Topics**
+ [サポートされている機能](#supported-features-salesforce-connector)
+ [前提条件](#prerequisites-salesforce-connector)
+ [接続設定](#configuration-salesforce-connector)

## サポートされている機能
<a name="supported-features-salesforce-connector"></a>
+ メインドキュメントフィールドの自動検出
+ 包含/除外コンテンツフィルター
+ 追加、更新、削除されたコンテンツの増分同期
+ OAuth 2.0 認証

## 前提条件
<a name="prerequisites-salesforce-connector"></a>

**Salesforce で、次の作業を行ったことを確認してください。**
+ Salesforce インスタンス URL を書き留めます。例えば、*https://company.salesforce.com/* です。インスタンスは Salesforce 接続アプリケーションを実行している必要があります。
+ Salesforce 接続アプリケーションを作成し、クライアント認証情報を設定します。次に、選択したアプリで、OAuth 設定からコンシューマーキー (クライアント ID) とコンシューマーシークレット (クライアントシークレット) をコピーします。詳細については、「[接続されたアプリケーションの作成](https://help.salesforce.com/s/articleView?id=sf.connected_app_create.htm&type=5)」および「[OAuth 2.0 クライアント認証情報用の接続されたアプリケーションの設定](https://help.salesforce.com/s/articleView?id=sf.connected_app_client_credentials_setup.htm&type=5)」の Salesforce ドキュメントを参照してください。
**注記**  
Salesforce Connected Apps の場合、クライアント認証情報フローの [として実行] フィールドで、クライアント認証情報のユーザー名またはエイリアスを検索して選択します。

**AWS アカウントで、以下のことを確認してください。**
+ 認証の認証情報を[AWS Secrets Manager シークレット](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html)に保存し、シークレットの Amazon リソースネーム (ARN) を書き留めます。このページの**接続設定**の説明に従って、シークレットに入れる必要があるキーと値のペアを含めます。
+ ナレッジベースの AWS Identity and Access Management (IAM) ロール/アクセス許可ポリシーに、データソースに接続するために必要なアクセス許可を含めます。ナレッジベースの IAM ロールに追加する、このデータソースが必要なアクセス許可については、「[Permissions to access data sources](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-permissions.html#kb-permissions-access-ds)」を参照してください。

**注記**  
コンソールを使用する場合は、AWS Secrets Manager に移動してシークレットを追加するか、データソース設定手順の一部として既存のシークレットを使用できます。必要なすべてのアクセス許可を持つ IAM ロールは、ナレッジベースを作成するためのコンソール手順の一部として作成できます。データソースやその他の設定を行うと、必要なすべてのアクセス許可を持つ IAM ロールが特定のナレッジベースに適用されます。  
認証情報とシークレットは、定期的に更新またはローテーションすることをお勧めします。セキュリティに必要なアクセスレベルのみを提供してください。データソース間で認証情報とシークレットを再利用することはお勧めしません。

## 接続設定
<a name="configuration-salesforce-connector"></a>

Salesforce インスタンスに接続するには、Amazon Bedrock がデータにアクセスしてクロールできるように、必要な設定情報を提供する必要があります。また、[前提条件](#prerequisites-salesforce-connector) に従う必要があります。

このデータソースの設定例をこのセクションに示します。

ドキュメントフィールドの自動検出、包含/除外フィルター、増分同期、シークレット認証情報、およびこれらの仕組みの詳細については、以下を選択してください。

### メインドキュメントフィールドの自動検出
<a name="ds-salesforce-document-fields"></a>

データソースコネクタは、ドキュメントまたはコンテンツのすべてのメインメタデータフィールドを自動的に検出してクロールします。例えば、データソースコネクタは、ドキュメントの本文に相当する部分、ドキュメントタイトル、ドキュメントの作成日または変更日、またはドキュメントに適用される可能性のあるその他のコアフィールドをクロールできます。

**重要**  
コンテンツに機密情報が含まれている場合、Amazon Bedrock は機密情報を使用して応答できます。

メタデータフィールドにフィルタリング演算子を適用して、レスポンスの関連性をさらに高めることができます。例えば、ドキュメントの「epoch\$1modification\$1time」は、ドキュメントの最終更新日を 1970 年 1 月 1 日からの経過秒数で表します。「epoch\$1modification\$1time」にフィルターを適用して、その値が特定の数*より大きい*最新のデータだけを取得できます。メタデータフィールドに適用できるフィルタリング演算子の詳細については、「[メタデータとフィルタリング](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-test-config.html)」を参照してください。

### 包含/除外フィルター
<a name="ds-salesforce-inclusion-exclusion"></a>

特定のコンテンツのクロールを含めることも除外することもできます。例えば、ファイル名に「private」が含まれているファイルのクロールをスキップするために、除外プレフィックス/正規表現パターンを指定することができます。特定のコンテンツエンティティまたはコンテンツタイプを含めるように、包含プレフィックス/正規表現パターンを指定することもできます。包含フィルターと除外フィルターを指定し、両方がドキュメントに一致する場合、除外フィルターが優先され、ドキュメントはクロールされません。

キャンペーン名に「private」を含むキャンペーンを除外する正規表現パターンの例: *「.\$1private.\$1」*

包含/除外フィルターは、次のコンテンツタイプに適用できます。
+ `Account`: アカウント番号/識別子
+ `Attachment`: 拡張子付きの添付ファイル名
+ `Campaign`: キャンペーン名と関連する識別子
+ `ContentVersion`: ドキュメントバージョンと関連する識別子
+ `Partner`: 関連付けられた識別子を含むパートナー情報フィールド
+ `Pricebook2`: 製品/料金リスト名
+ `Case`: 顧客の問い合わせ/発行番号、および関連する識別子を含むその他の情報フィールド (注意: 個人情報を含めることができ、除外に使用できます)
+ `Contact`: 顧客情報フィールド (注意: 個人情報を含めることができ、除外に使用できます)
+ `Contract`: 契約名と関連する識別子
+ `Document`: 拡張子を持つファイル名
+ `Idea`: アイデア情報フィールドと関連する識別子
+ `Lead`: 潜在的な新しい顧客情報フィールド (注意: 個人情報を含めることができ、除外に使用できます)
+ `Opportunity`: 保留中の販売/取引情報フィールドおよび関連する識別子
+ `Product2`: 製品情報フィールドと関連する識別子
+ `Solution`: 顧客の問い合わせ/問題のソリューション名と関連する識別子
+ `Task`: タスク情報フィールドと関連する識別子
+ `FeedItem`: Chatter フィード投稿の識別子
+ `FeedComment`: コメントが属する Chatter フィード投稿の識別子
+ `Knowledge__kav`: ナレッジ記事のタイトル
+ `User`: 組織内のユーザーエイリアス
+ `CollaborationGroup`: Chatter グループ名 (一意)

### 増分同期
<a name="ds-salesforce-incremental-sync"></a>

データソースコネクタは、データソースがナレッジベースと同期するたびに、新規、変更、削除されたコンテンツをクロールします。Amazon Bedrock は、データソースの仕組みを使用して、コンテンツの変更を追跡し、前回の同期以降に変更されたコンテンツをクロールできます。データソースをナレッジベースと初めて同期すると、デフォルトですべてのコンテンツがクロールされます。

データソースをナレッジベースと同期するには、[StartIngestionJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StartIngestionJob.html) API を使用するか、コンソールでナレッジベースを選択し、データソースの概要セクションで **[同期]** を選択します。

**重要**  
データソースから同期するすべてのデータは、データを取得する `bedrock:Retrieve` アクセス許可を持つすべてのユーザーが利用できるようになります。これには、データソースのアクセス許可が制御されているデータを含めることもできます。詳細については、「[Knowledge base permissions](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-permissions.html)」を参照してください。

### シークレット認証情報
<a name="ds-salesforce-secret-auth-credentials"></a>

(OAuth 2.0 認証の場合) AWS Secrets Manager のシークレット認証情報には、次のキーと値のペアを含める必要があります。
+ `consumerKey`: *アプリクライアント ID*
+ `consumerSecret`: *アプリケーションクライアントシークレット*
+ `authenticationUrl`: *Salesforce インスタンス URL または認証トークンをリクエストする URL*

**注記**  
AWS Secrets Manager のシークレットは、ナレッジベースと同じリージョンを使用する必要があります。

------
#### [ Console ]

**Salesforce インスタンスをナレッジベースに接続する**

1. [Amazon Bedrock ナレッジベースでデータソースに接続してナレッジベースを作成する](knowledge-base-create.md) の手順に従って、データソースとして **Salesforce** を選択します。

1. データソース名と説明 (オプション) を入力します。

1. Salesforce インスタンス URL を指定します。例えば、*https://company.salesforce.com/* です。インスタンスは Salesforce 接続アプリケーションを実行している必要があります。

1. **[詳細設定]** セクションでは、必要に応じて以下を設定できます。
   + **一時的なデータストレージ用の KMS キー。**– データを埋め込みに変換するとともに、デフォルト AWS マネージドキー または独自の KMS キーを使用して一時的なデータを暗号化できます。詳細については、「[データインジェスト時の一時データストレージの暗号化](encryption-kb.md#encryption-kb-ingestion)」を参照してください。
   + **データ削除ポリシー** – デフォルトでベクトルストアに保存されているデータソースのベクトル埋め込みを削除したり、ベクトルストアデータを保持するように選択したりできます。

1. Salesforce インスタンスに接続するための認証情報を指定します。

   1. OAuth 2.0 認証の場合、AWS Secrets Manager に移動してシークレット認証情報を追加するか、作成したシークレットに既存の Amazon リソースネーム (ARN) を使用します。シークレットには、Salesforce Connected App コンシューマーキー (クライアント ID)、コンシューマーシークレット (クライアントシークレット)、および Salesforce インスタンス URL または認証トークンをリクエストする URL が含まれている必要があります。詳細については、「[接続されたアプリケーションの作成](https://help.salesforce.com/s/articleView?id=sf.connected_app_create.htm&type=5)」および「[OAuth 2.0 クライアント認証情報用の接続されたアプリケーションの設定](https://help.salesforce.com/s/articleView?id=sf.connected_app_client_credentials_setup.htm&type=5)」の Salesforce ドキュメントを参照してください。

1. (オプション) **[コンテンツの解析とチャンキング]** セクションで、データの解析とチャンキングの方法をカスタマイズできます。これらのカスタマイズの詳細については、次のリソースを参照してください。
   + 解析オプションの詳細については、「[データソースの解析オプション](kb-advanced-parsing.md)」を参照してください。
   + チャンキング戦略の詳細については、「[ナレッジベースのコンテンツのチャンキングの仕組み](kb-chunking.md)」を参照してください。
**警告**  
データソースに接続した後はチャンキング戦略を変更できません。
   + Lambda 関数を使用してデータのチャンキングとメタデータの処理をカスタマイズする方法の詳細については、「[カスタム変換 Lambda 関数を使用してデータの取り込み方法を定義する](kb-custom-transformation.md)」を参照してください。

1. フィルター/正規表現パターンの使用を選択して、特定のコンテンツを含めるか除外します。指定しない場合、標準コンテンツはすべてクロールされます。

1. 埋め込みモデルとベクトルストアの選択を続行します。残りの手順を確認するには、「[Amazon Bedrock ナレッジベースでデータソースに接続してナレッジベースを作成する](knowledge-base-create.md)」に戻り、データソースを接続した後の手順から続行します。

------
#### [ API ]

以下は、Amazon Bedrock ナレッジベースの Salesforce に接続するための設定の例です。データソースは、AWS CLI または Python などのサポートされている SDK で API を使用して設定します。[CreateKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateKnowledgeBase.html) を呼び出した後、[CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html) を呼び出して、`dataSourceConfiguration` の接続情報を使用してデータソースを作成します。

オプションの `vectorIngestionConfiguration` フィールドを含めることで取り込みに適用できるカスタマイズの詳細については、「[データソースの取り込みをカスタマイズする](kb-data-source-customize-ingestion.md)」を参照してください。

**AWS Command Line Interface**

```
aws bedrock create-data-source \
 --name "Salesforce connector" \
 --description "Salesforce data source connector for Amazon Bedrock to use content in Salesforce" \
 --knowledge-base-id "your-knowledge-base-id" \
 --data-source-configuration file://salesforce-bedrock-connector-configuration.json \
 --data-deletion-policy "DELETE" \
 --vector-ingestion-configuration '{"chunkingConfiguration":[{"chunkingStrategy":"FIXED_SIZE","fixedSizeChunkingConfiguration":[{"maxTokens":"100","overlapPercentage":"10"}]}]}'

salesforce-bedrock-connector-configuration.json
{
    "salesforceConfiguration": {
        "sourceConfiguration": {
            "hostUrl": "https://company.salesforce.com/",
            "authType": "OAUTH2_CLIENT_CREDENTIALS",
            "credentialsSecretArn": "arn:aws::secretsmanager:your-region:secret:AmazonBedrock-Salesforce"
        },
        "crawlerConfiguration": {
            "filterConfiguration": {
                "type": "PATTERN",
                "patternObjectFilter": {
                    "filters": [
                        {
                            "objectType": "Campaign",
                            "inclusionFilters": [
                                ".*public.*"
                            ],
                            "exclusionFilters": [
                                ".*private.*"
                            ]
                        }
                    ]
                }
            }
        }
    },
    "type": "SALESFORCE"
}
```

------

# ナレッジベースのウェブページをクロールする
<a name="webcrawl-data-source-connector"></a>

Amazon Bedrock が提供するウェブクローラーは、Amazon Bedrock ナレッジベースで使用するために選択した URL に接続してクロールします。選択した URL に設定した範囲または制限に従って、ウェブサイトのページをクロールすることができます。[Amazon Bedrock の AWS マネジメントコンソール](https://console.aws.amazon.com/bedrock/home)、または [CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html) API を使用してウェブサイトのページをクロールできます (Amazon Bedrock [supported SDKs and AWS CLI](https://docs.aws.amazon.com/bedrock/latest/APIReference/welcome.html) を参照)。現在、このデータソースで使用できるのは Amazon OpenSearch Serverless ベクトルストアのみです。

**注記**  
ウェブクローラーデータソースコネクタはプレビューリリース段階であり、変更される可能性があります。

クロールするウェブサイトを選択するときは、[Amazon 適正利用規約](https://aws.amazon.com/aup/)およびその他の Amazon 利用規約のすべてに準拠する必要があります。自分のウェブページ、またはクロールを許可され、robots.txt 設定を優先する必要があるウェブページのインデックスを作成するためにのみ、ウェブクローラーを使用する必要があることに留意してください。

ウェブクローラーは、[RFC 9309](https://www.rfc-editor.org/rfc/rfc9309.html) に従って robots.txt を尊重します

クロールできるウェブページコンテンツアイテムの数とコンテンツアイテムあたりの MB には制限があります。「[Quotas for knowledge bases](https://docs.aws.amazon.com/bedrock/latest/userguide/quotas.html)」を参照してください。

**Topics**
+ [サポートされている機能](#supported-features-webcrawl-connector)
+ [前提条件](#prerequisites-webcrawl-connector)
+ [接続設定](#configuration-webcrawl-connector)

## サポートされている機能
<a name="supported-features-webcrawl-connector"></a>

ウェブクローラーは、シード URL から始まる HTML ページに接続してクロールし、同じ上位のプライマリドメインとパスの下にあるすべての子リンクを巡回します。HTML ページのいずれかがサポートされているドキュメントを参照している場合、それらのドキュメントが同じ上位のプライマリドメイン内にあるかどうかにかかわらず、ウェブクローラーはそれらのドキュメントを取得します。クロール設定を変更することで、クロール動作を変更できます - 「[接続設定](#configuration-webcrawl-connector)」を参照する。

以下がサポートされています。
+ 複数のソース URL を選択してクロールし、ホストのみをクロールするかサブドメインも含めるように URL の範囲を設定します。
+ ソース URL の一部である静的ウェブページをクロールします。
+ カスタムユーザーエージェントのサフィックスを指定して、独自のクローラーのルールを設定します。
+ フィルターパターンに一致する特定の URL を含めるか除外します。
+ 「許可」や「拒否」などの標準の robots.txt ディレクティブを尊重します。
+ クロールする URL の範囲を制限し、オプションでフィルターパターンに一致する URL を除外します。
+ URL のクローリング速度とクローリングするページの最大数を制限します。
+ Amazon CloudWatch でクロールされた URL のステータスの表示

## 前提条件
<a name="prerequisites-webcrawl-connector"></a>

**ウェブクローラーを使用するには、以下を確認してください**。
+ ソース URL をクロールする権限があることを確認します。
+ ソース URL に対応する robots.txt へのパスが URL のクロールをブロックしていないことを確認します。ウェブクローラーは、robots.txt の基準に準拠しています。ウェブサイトに robots.txt が見つからない場合は、デフォルトで `disallow`。ウェブクローラーは、[RFC 9309](https://www.rfc-editor.org/rfc/rfc9309.html) に従って robots.txt を尊重します。カスタムユーザーエージェントのサフィックスを指定して、独自のクローラーのルールを設定することもできます。詳細については、このページの [接続設定](#configuration-webcrawl-connector) 手順の「ウェブクローラー URL アクセス」を参照してください。
+ [CloudWatch Logs 配信を有効](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-bases-logging.html)にし、ウェブクローラーログの例に従って、ウェブコンテンツを取り込むためのデータインジェストジョブのステータスと、特定の URL を取得できないかどうかを表示します。

**注記**  
クロールするウェブサイトを選択するときは、[Amazon 適正利用規約](https://aws.amazon.com/aup/)およびその他の Amazon 利用規約のすべてに準拠する必要があります。自分のウェブページ、またはクロールすることを許可されているウェブページをインデックスするためにのみ、ウェブクローラーを使用することに留意してください。

## 接続設定
<a name="configuration-webcrawl-connector"></a>

URL のクロール、包含/除外フィルター、URL アクセス、増分同期、およびこれらの動作の同期スコープの詳細については、以下を選択してください。

### URL をクロールするための同期範囲
<a name="ds-sync-scope"></a>

各ページ URL とシード URL の特定の関係に基づいて、クロールする URL の範囲を制限することができます。クローリングを高速化するために、シード URL のホストと初期 URL パスと同じものを持つ URL に制限できます。より広い範囲をクロールする場合は、同じホストを持つ URL をクロールするか、シード URL の任意のサブドメイン内をクロールするかを選択できます。

以下のオプションから選択できます。
+ デフォルト: 同じホストに属し、同じ初期 URL パスを持つウェブページのクロールに制限します。例えば、シード URL が「https://aws.amazon.com/bedrock/」の場合、「https://aws.amazon.com/bedrock/agents/」のように、このパスと、このパスから拡張されたウェブページのみがクロールされます。例えば、「https://aws.amazon.com/ec2/」のような 兄弟 URL はクロールされません。
+ ホストのみ: 同じホストに属するウェブページにクローリングを制限します。例えば、シード URL が「https://aws.amazon.com/bedrock/」の場合、「https://aws.amazon.com/ec2」のように「https://aws.amazon.com」を含むウェブページもクロールされます。
+ サブドメイン: シード URL と同じプライマリドメインを持つウェブページのクロールを含めます。例えば、シード URL が「https://aws.amazon.com/bedrock/」の場合、「https://www.amazon.com」のように「amazon.com」(サブドメイン) を含むウェブページもクロールされます。

**注記**  
過剰になりうるウェブページをクローリングしていないことを確認してください。フィルターや範囲の制限なしで wikipedia.org などの大規模なウェブサイトをクロールすることはお勧めしません。大規模なウェブサイトのクローリングには非常に時間がかかります。  
[サポートされているファイルタイプ](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-ds.html)は、範囲に関係なく、またファイルタイプに除外パターンがない場合にクロールされます。

ウェブクローラーは静的ウェブサイトをサポートしています。

URL のクローリング速度を制限して、クローリング速度のスロットリングを制御することもできます。1 分あたりにウェブサイトホストごとにクロールされる URL の最大数を設定します。さらに、クロールするウェブページの総数の最大数 (最大 25,000) を設定することもできます。ソース URL のウェブページの合計数が設定した最大値を超えると、データソースの同期/取り込みジョブは失敗することに注意してください。

### 包含/除外フィルター
<a name="ds-inclusion-exclusion"></a>

適用範囲に従って、特定の URL を含めることも除外することもできます。[サポートされているファイルタイプ](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-ds.html)は、範囲に関係なく、またファイルタイプに除外パターンがない場合にクロールされます。包含フィルターと除外フィルターを指定し、両方が URL に一致する場合、除外フィルターが優先され、ウェブコンテンツはクロールされません。

**重要**  
[破壊的なバックトラック](https://docs.aws.amazon.com/codeguru/detector-library/python/catastrophic-backtracking-regex/)と先読みにつながる問題のある正規表現パターンフィルターは拒否されます。

「.pdf」または PDF ウェブページのアタッチメントで終わる URL を除外する正規表現フィルターパターンの例: *".\$1\$1.pdf\$1"*

### ウェブクローラー URL アクセス
<a name="ds-webcrawl-identity-crawling"></a>

ウェブクローラー を使用して、クロールが許可されているウェブサイトのページをクロールすることができます。

クロールするウェブサイトを選択するときは、[Amazon 適正利用規約](https://aws.amazon.com/aup/)およびその他の Amazon 利用規約のすべてに準拠する必要があります。自分のウェブページ、またはクロールすることを許可されているウェブページをインデックスするためにのみ、ウェブクローラーを使用することに留意してください。

ウェブクローラーは、[RFC 9309](https://www.rfc-editor.org/rfc/rfc9309.html) に従って robots.txt を尊重します

特定のユーザーエージェントボットを指定して、ユーザーエージェントがソース URL をクロールすることを「許可」または「拒否」できます。ウェブサイトの robots.txt ファイルを変更して、ウェブクローラーがウェブサイトをクロールする方法を制御できます。クローラーはまず `bedrockbot-UUID ` ルールを探し、次に robots.txt ファイル内の一般的な `bedrockbot` ルールを探します。

ボット保護システムでクローラーを許可リストに登録するために使用できる User-Agent サフィックスを追加することもできます。ユーザーエージェントの文字列を偽装できないようにするために、このサフィックスを `robots.txt` ファイルに追加する必要はありません。例えば、すべてのウェブサイトコンテンツをウェブクローラーがクロールできるようにして、他のロボットのクローリングを禁止するには、次のディレクティブを使用します。

```
User-agent: bedrockbot-UUID # Amazon Bedrock Web Crawler
Allow: / # allow access to all pages
User-agent: * # any (other) robot
Disallow: / # disallow access to any pages
```

### 増分同期
<a name="ds-incremental-sync"></a>

ウェブクローラーを実行するたびに、ソース URL から到達可能で、範囲とフィルターに一致するすべての URL のコンテンツを取得します。すべてのコンテンツの初回同期後に増分同期を行う場合、Amazon Bedrock はナレッジベースを新規および変更されたコンテンツで更新し、存在しない古いコンテンツを削除します。時折、クローラーはコンテンツがウェブサイトから削除されたかどうかを判断できないことがあります。この場合、ナレッジベースの古いコンテンツを保存する側に回ることになります。

データソースをナレッジベースと同期するには、[StartIngestionJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StartIngestionJob.html) API を使用するか、コンソールでナレッジベースを選択し、データソースの概要セクションで **[同期]** を選択します。

**重要**  
データソースから同期するすべてのデータは、データを取得する `bedrock:Retrieve` アクセス許可を持つすべてのユーザーが利用できるようになります。これには、データソースのアクセス許可が制御されているデータを含めることもできます。詳細については、「[Knowledge base permissions](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-permissions.html)」を参照してください。

------
#### [ Console ]

**ウェブクローラーデータソースをナレッジベースに接続する**

1. [Amazon Bedrock ナレッジベースでデータソースに接続してナレッジベースを作成する](knowledge-base-create.md) の手順に従って、データソースとして **[ウェブクローラー]** を選択します。

1. データソース名と説明 (オプション) を入力します。

1. クロールする URL の**ソース URL** を指定します。**ソース URL の追加**を選択すると、最大 9 つの URL を追加できます。ソース URL を提供することで、そのドメインをクロールする権限があることを確認することになります。

1. **[詳細設定]** セクションでは、必要に応じて以下を設定できます。
   + **一時的なデータストレージ用の KMS キー。**– データを埋め込みに変換するとともに、デフォルト AWS マネージドキー または独自の KMS キーを使用して一時的なデータを暗号化できます。詳細については、「[データインジェスト時の一時データストレージの暗号化](encryption-kb.md#encryption-kb-ingestion)」を参照してください。
   + **データ削除ポリシー** – デフォルトでベクトルストアに保存されているデータソースのベクトル埋め込みを削除したり、ベクトルストアデータを保持するように選択したりできます。

1. (オプション) ウェブサーバーにアクセスするときにクローラーまたはボットを識別する **bedrock-UUID-** のユーザーエージェントサフィックスを指定します。

1. **[同期の範囲]** セクションで以下を設定します。

   1. ソース URL をクローリングする **[ウェブサイトのドメイン範囲]** を選択します。
      + デフォルト: 同じホストに属し、同じ初期 URL パスを持つウェブページのクロールに制限します。例えば、シード URL が「https://aws.amazon.com/bedrock/」の場合、「https://aws.amazon.com/bedrock/agents/」のように、このパスと、このパスから拡張されたウェブページのみがクロールされます。例えば、「https://aws.amazon.com/ec2/」のような 兄弟 URL はクロールされません。
      + ホストのみ: 同じホストに属するウェブページにクローリングを制限します。例えば、シード URL が「https://aws.amazon.com/bedrock/」の場合、「https://aws.amazon.com/ec2」のように「https://aws.amazon.com」を含むウェブページもクロールされます。
      + サブドメイン: シード URL と同じプライマリドメインを持つウェブページのクロールを含めます。例えば、シード URL が「https://aws.amazon.com/bedrock/」の場合、「https://www.amazon.com」のように「amazon.com」(サブドメイン) を含むウェブページもクロールされます。
**注記**  
過剰になりうるウェブページをクローリングしていないことを確認してください。フィルターや範囲の制限なしで wikipedia.org などの大規模なウェブサイトをクロールすることはお勧めしません。大規模なウェブサイトのクローリングには非常に時間がかかります。  
[サポートされているファイルタイプ](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-ds.html)は、範囲に関係なく、またファイルタイプに除外パターンがない場合にクロールされます。

   1. **クローリング速度の最大スロットリング** を入力します。ホストごとに 1 分あたり 1～300 URL を取り込みます。クローリング速度が高いほど負荷は増加しますが、所要時間は短くなります。

   1. **データソース同期の最大ページ数**を 1～25000 の間で入力します。ソース URL からクロールされるウェブページの最大数を制限します。ウェブページがこの数を超えると、データソースの同期に失敗し、ウェブページは取り込まれません。

   1. **URL 正規表現**パターン (オプション) では、ボックスに正規表現パターンを入力して、**包含パターン**または**除外パターン**を追加できます。**[新しいパターンを追加する]** を選択すると、包含および除外フィルターパターンをそれぞれ最大 25 個追加できます。包含パターンと除外パターンは、適用範囲に従ってクロールされます。競合がある場合、除外パターンが優先されます。

1. (オプション) **[コンテンツの解析とチャンキング]** セクションで、データの解析とチャンキングの方法をカスタマイズできます。これらのカスタマイズの詳細については、次のリソースを参照してください。
   + 解析オプションの詳細については、「[データソースの解析オプション](kb-advanced-parsing.md)」を参照してください。
   + チャンキング戦略の詳細については、「[ナレッジベースのコンテンツのチャンキングの仕組み](kb-chunking.md)」を参照してください。
**警告**  
データソースに接続した後はチャンキング戦略を変更できません。
   + Lambda 関数を使用してデータのチャンキングとメタデータの処理をカスタマイズする方法の詳細については、「[カスタム変換 Lambda 関数を使用してデータの取り込み方法を定義する](kb-custom-transformation.md)」を参照してください。

1. 埋め込みモデルとベクトルストアの選択を続行します。残りの手順を確認するには、「[Amazon Bedrock ナレッジベースでデータソースに接続してナレッジベースを作成する](knowledge-base-create.md)」に戻り、データソースを接続した後の手順から続行します。

------
#### [ API ]

ウェブクローラーを使用してナレッジベースをデータソースに接続するには、[Amazon Bedrock エージェントのビルドタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)で [CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html) リクエストを送信し、[DataSourceConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DataSourceConfiguration.html) の `type` フィールドに `WEB` を指定して、`webConfiguration` フィールドを含めます。以下は、Amazon Bedrock ナレッジベースのウェブクローラーの設定例です。

```
{
    "webConfiguration": {
        "sourceConfiguration": {
            "urlConfiguration": {
                "seedUrls": [{
                    "url": "https://www.examplesite.com"
                }]
            }
        },
        "crawlerConfiguration": {
            "crawlerLimits": {
                "rateLimit": 50,
                "maxPages": 100
            },
            "scope": "HOST_ONLY",
            "inclusionFilters": [
                "https://www\.examplesite\.com/.*\.html"
            ],
            "exclusionFilters": [
                "https://www\.examplesite\.com/contact-us\.html"
            ],
            "userAgent": "CustomUserAgent"
        }
    },
    "type": "WEB"
}
```

オプションの `vectorIngestionConfiguration` フィールドを含めることで取り込みに適用できるカスタマイズの詳細については、「[データソースの取り込みをカスタマイズする](kb-data-source-customize-ingestion.md)」を参照してください。

------

# ナレッジベースをカスタムデータソースに接続する
<a name="custom-data-source-connector"></a>

サポートされているデータソースサービスを選択する代わりに、カスタムデータソースに接続すると、次の利点が得られます。
+ ナレッジベースからアクセス可能にするデータ型を柔軟に選択して制御できる。
+ `KnowledgeBaseDocuments` API オペレーションを使用して、変更を同期せずにドキュメントの取り込みまたは削除を直接実行できる。
+ Amazon Bedrock コンソールまたは API を使用して、データソース内のドキュメントを直接表示できる。
+ ドキュメントを のデータソースに直接アップロードAWS マネジメントコンソールしたり、インラインで追加したりできます。
+ データソース内のドキュメントを追加または更新するときに、メタデータを各ドキュメントに直接追加できる。データソースから情報を取得するときにメタデータを使用してフィルタリングする方法の詳細については、「[クエリとレスポンスの生成を設定してカスタマイズする](kb-test-config.md)」の「**メタデータとフィルタリング**」タブを参照してください。

**マルチモーダルコンテンツのサポート**  
カスタムデータソースは、最大 10MB の base64 エンコードされたイメージ、オーディオ、ビデオファイルを含むマルチモーダルコンテンツをサポートします。マルチモーダルコンテンツの使用に関する包括的なガイダンスについては、「」を参照してください[マルチモーダルコンテンツのナレッジベースを構築する](kb-multimodal.md)。

ナレッジベースをカスタムデータソースに接続するには、[Amazon Bedrock エージェントのビルドタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)を使用して [CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html) リクエストを送信します。接続先ナレッジベースの `knowledgeBaseId` を指定し、データソースに `name` を指定して、`dataSourceConfiguration` の `type` フィールドを `CUSTOM` として指定します。このデータソースを作成する最小限の例を次に示します。

```
PUT /knowledgebases/KB12345678/datasources/ HTTP/1.1
Content-type: application/json

{
    "name": "MyCustomDataSource",
    "dataSourceConfiguration": {
        "type": "CUSTOM"
    }
}
```

次のいずれかのオプションフィールドを含めて、データソースを設定することができます。


****  

| フィールド | ユースケース | 
| --- | --- | 
| 説明 | データソースの説明を入力します。 | 
| clientToken | API リクエストが 1 回だけ完了するようにします。詳細については、「[べき等性の確保](https://docs.aws.amazon.com/ec2/latest/devguide/ec2-api-idempotency.html)」を参照してください。 | 
| serverSideEncryptionConfiguration | データを埋め込みに変換する際の一時データストレージのカスタム KMS キーを指定します。詳細については、[データインジェスト時の一時データストレージの暗号化](encryption-kb.md#encryption-kb-ingestion)を参照してください。 | 
| dataDeletionPolicy | データソースを削除する場合に、ベクトルストア内のデータソースのベクトル埋め込みをどのように処理するかを設定します。ベクトルストア内のデータを保持するには RETAIN を指定し、削除するにはデフォルトオプションの DELETE を指定します。 | 
| vectorIngestionConfiguration | データソースの取り込みのオプションを設定します。詳細については、以下を参照してください。 | 

`vectorIngestionConfiguration` フィールドは、次のフィールドを含む [VectorIngestionConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_VectorIngestionConfiguration.html) オブジェクトにマッピングされます。
+ chunkingConfiguration – データソース内のドキュメントのチャンキングに使用する戦略を設定します。チャンキング戦略の詳細については、「[ナレッジベースのコンテンツのチャンキングの仕組み](kb-chunking.md)」を参照してください。
+ parsingConfiguration – データソースの解析に使用する戦略を設定します。解析オプションの詳細については、「[データソースの解析オプション](kb-advanced-parsing.md)」を参照してください。
+ customTransformationConfiguration – データの変換方法をカスタマイズし、Lambda 関数を適用してさらに詳細なカスタマイズを行います。Lambda 関数を使用してデータのチャンキングとメタデータの処理をカスタマイズする方法の詳細については、「[カスタム変換 Lambda 関数を使用してデータの取り込み方法を定義する](kb-custom-transformation.md)」を参照してください。

カスタムデータソースを設定したら、カスタムデータソースにドキュメントを追加してナレッジベースに直接取り込むことができます。他のデータソースとは異なり、カスタムデータソースを同期する必要はありません。ドキュメントを直接取り込む方法については、「[変更をナレッジベースに直接取り込む](kb-direct-ingestion.md)」を参照してください。

# データソースの取り込みをカスタマイズする
<a name="kb-data-source-customize-ingestion"></a>

でデータソースを接続するとき、 AWS マネジメントコンソール または [CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html) リクエストを送信するときに `vectorIngestionConfiguration`フィールドの値を変更することで、ベクトル取り込みをカスタマイズできます。

次のトピックを選択して、データソースへの接続時に取り込みをカスタマイズするための構成を含める方法を確認してください。

**Topics**
+ [解析に使用するツールを選択する](#kb-data-source-customize-parsing)
+ [チャンキング戦略を選択する](#kb-data-source-customize-chunking)
+ [取り込み時に Lambda 関数を使用する](#kb-data-source-customize-lambda)

## 解析に使用するツールを選択する
<a name="kb-data-source-customize-parsing"></a>

データ内のドキュメントを解析する方法をカスタマイズできます。Amazon Bedrock ナレッジベースでデータを解析するためのオプションについては、「[データソースの解析オプション](kb-advanced-parsing.md)」を参照してください。

**警告**  
データソースに接続後は解析戦略を変更できません。別の解析戦略を使用するには、新しいデータソースを追加します。  
ナレッジベースの作成後に、マルチモーダルデータ (画像、図、グラフ、テーブルなど) を保存するための S3 の場所を追加することはできません。マルチモーダルデータを含め、それをサポートするパーサーを使用する場合は、新しいナレッジベースを作成する必要があります。

解析戦略の選択に関連するステップは、 AWS マネジメントコンソール と Amazon Bedrock API のどちらを使用するか、および選択した解析方法によって異なります。マルチモーダルデータをサポートする解析方法を選択する場合は、ドキュメントから抽出されたマルチモーダルデータを保存する S3 URI を指定する必要があります。このデータはナレッジベースクエリで返すことができます。
+ で AWS マネジメントコンソール、次の操作を行います。

  1. ナレッジベースの設定中にデータソースへ接続する際、または既存のナレッジベースに新しいデータソースを追加する際に、解析戦略を選択します。

  1. (解析戦略として Amazon Bedrock Data Automation または基盤モデルを選択した場合) 埋め込みモデルを選択してベクトルストアを設定するときに、**[マルチモーダルストレージの保存先]** セクションでドキュメントから抽出されたマルチモーダルデータを保存する S3 URI を指定します。必要に応じて、このステップでカスタマーマネージドキーを使用して S3 データを暗号化することもできます。
+ Amazon Bedrock API で、次を行います。

  1. (解析戦略として Amazon Bedrock Data Automation または基盤モデルを使用する予定の場合) [CreateKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateKnowledgeBase.html) リクエストの [VectorKnowledgeBaseConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_VectorKnowledgeBaseConfiguration.html) に [SupplementalDataStorageLocation](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_SupplementalDataStorageLocation.html) を含めます。

  1. [CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html) リクエストの [VectorIngestionConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_VectorIngestionConfiguration.html) の `parsingConfiguration` フィールドに [ParsingConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_ParsingConfiguration.html) を含めます。
**注記**  
この設定を省略すると、Amazon Bedrock ナレッジベースでは Amazon Bedrock のデフォルトパーサーが使用されます。

API で解析戦略を指定する方法の詳細については、使用する解析戦略に対応するセクションを展開してください。

### Amazon Bedrock のデフォルトパーサー
<a name="w2aac28c10c23c15c17c11c13b1"></a>

デフォルトパーサーを使用するには、`VectorIngestionConfiguration` 内に `parsingConfiguration` フィールドを含めないでください。

### Amazon Bedrock Data Automation パーサー (プレビュー)
<a name="w2aac28c10c23c15c17c11c13b3"></a>

Amazon Bedrock Data Automation パーサーを使用するには、次の形式のように、`ParsingConfiguration` の `parsingStrategy` フィールドに `BEDROCK_DATA_AUTOMATION` を指定し、`bedrockDataAutomationConfiguration` フィールドに [BedrockDataAutomationConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_BedrockDataAutomationConfiguration.html) を含めます。

```
{
    "parsingStrategy": "BEDROCK_DATA_AUTOMATION",
    "bedrockDataAutomationConfiguration": {
        "parsingModality": "string"
    }
}
```

### 基盤モデル
<a name="w2aac28c10c23c15c17c11c13b5"></a>

基盤モデルをパーサーとして使用するには、次の形式のように、`ParsingConfiguration` の `parsingStrategy` フィールドに `BEDROCK_FOUNDATION_MODEL` を指定し、`bedrockFoundationModelConfiguration` フィールドに [BedrockFoundationModelConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_BedrockFoundationModelConfiguration.html) を含めます。

```
{
    "parsingStrategy": "BEDROCK_FOUNDATION_MODEL",
    "bedrockFoundationModelConfiguration": {
        "modelArn": "string",
        "parsingModality": "string",
        "parsingPrompt": {
            "parsingPromptText": "string"
        }
    }
}
```

## チャンキング戦略を選択する
<a name="kb-data-source-customize-chunking"></a>

データ内のドキュメントをチャンク分割して保存および取得する方法をカスタマイズできます。Amazon Bedrock ナレッジベースでデータをチャンク分割するオプションについては、「[ナレッジベースのコンテンツのチャンキングの仕組み](kb-chunking.md)」を参照してください。

**警告**  
データソースに接続した後はチャンキング戦略を変更できません。

 AWS マネジメントコンソール で、データソースに接続するときにチャンキング戦略を選択します。Amazon Bedrock API を使用する場合は、[VectorIngestionConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_VectorIngestionConfiguration.html) の `chunkingConfiguration` フィールドに [ChunkingConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_ChunkingConfiguration.html) を含めます。

**注記**  
この構成を省略すると、Amazon Bedrock は文の境界を維持したまま、約 300 個のトークンからなる複数のチャンクにコンテンツを分割します。

使用する解析戦略に対応するセクションを展開してください。

### チャンキングなし
<a name="w2aac28c10c23c15c17c13c13b1"></a>

データソース内の各ドキュメントを 1 つのソースチャンクとして扱うには、次の形式のように、`ChunkingConfiguration` の `chunkingStrategy` フィールドに `NONE` を指定します。

```
{
    "chunkingStrategy": "NONE"
}
```

### 固定サイズのチャンキング
<a name="w2aac28c10c23c15c17c13c13b3"></a>

データソース内の各ドキュメントをほぼ同じサイズのチャンクに分割するには、次の形式のように、`ChunkingConfiguration` の `chunkingStrategy` フィールドに `FIXED_SIZE` を指定し、`fixedSizeChunkingConfiguration` フィールドに [FixedSizeChunkingConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_FixedSizeChunkingConfiguration.html) を含めます。

```
{
    "chunkingStrategy": "FIXED_SIZE",
    "fixedSizeChunkingConfiguration": {
        "maxTokens": number,
        "overlapPercentage": number
    }
}
```

### 階層的チャンキング
<a name="w2aac28c10c23c15c17c13c13b5"></a>

データソース内の各ドキュメントを 2 つのレベル (最初のレイヤーから派生した小さなチャンクが 2 番目のレイヤーに含まれる) に分割するには、次の形式のように、`ChunkingConfiguration` の `chunkingStrategy` フィールドに `HIERARCHICAL` を指定し、`hierarchicalChunkingConfiguration` フィールドを含めます。

```
{
    "chunkingStrategy": "HIERARCHICAL",
    "hierarchicalChunkingConfiguration": {
        "levelConfigurations": [{
            "maxTokens": number
        }],
        "overlapTokens": number
    }
}
```

### セマンティックチャンキング
<a name="w2aac28c10c23c15c17c13c13b7"></a>

データソース内の各ドキュメントを、構文構造よりもセマンティックな意味を優先するチャンクに分割するには、次の形式のように、`ChunkingConfiguration` の `chunkingStrategy` フィールドに `SEMANTIC` を指定し、`semanticChunkingConfiguration` フィールドを含めます。

```
{
    "chunkingStrategy": "SEMANTIC",
    "semanticChunkingConfiguration": {
        "breakpointPercentileThreshold": number,
        "bufferSize": number,
        "maxTokens": number
    }
}
```

## 取り込み時に Lambda 関数を使用する
<a name="kb-data-source-customize-lambda"></a>

Lambda 関数を使用すると、データからのソースチャンクがベクトルストアに書き込まれる方法を、次の方法で後処理できます。
+ カスタムチャンキング戦略を提供するチャンキングロジックを含めます。
+ チャンクレベルのメタデータを指定するロジックを含めます。

取り込み用のカスタム Lambda 関数の記述については、「[カスタム変換 Lambda 関数を使用してデータの取り込み方法を定義する](kb-custom-transformation.md)」を参照してください。 AWS マネジメントコンソール で、データソースに接続するときに Lambda 関数を選択します。Amazon Bedrock API では、次の形式のように、[VectorIngestionConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_VectorIngestionConfiguration.html) の `CustomTransformationConfiguration` フィールドに [CustomTransformationConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CustomTransformationConfiguration.html) を含め、Lambda の ARN を指定します。

```
{
    "transformations": [{
        "transformationFunction": {
            "transformationLambdaConfiguration": {
                "lambdaArn": "string"
            }
        },
        "stepToApply": "POST_CHUNKING"
    }],
    "intermediateStorage": {
        "s3Location": {
            "uri": "string"
        }
    }
}
```

また、Lambda 関数を適用した後に出力を保存する S3 の場所も指定します。

Amazon Bedrock が提供するチャンキングオプションのいずれかを適用した後、`chunkingConfiguration` フィールドを追加して Lambda 関数を適用できます。

# ナレッジベースのセキュリティ設定を行います。
<a name="kb-create-security"></a>

ナレッジベースを作成したら、次のセキュリティ設定をセットアップする必要がある場合があります。

**Topics**
+ [ナレッジベースのデータアクセスポリシーを設定する](#kb-create-security-data)
+ [Amazon OpenSearch Serverless ナレッジベースのネットワークアクセスポリシーを設定する](#kb-create-security-network)

## ナレッジベースのデータアクセスポリシーを設定する
<a name="kb-create-security-data"></a>

[カスタムロール](kb-permissions.md)を使用している場合は、新しく作成したナレッジベースのセキュリティを設定します。Amazon Bedrock にサービスロールを作成させる場合は、このステップをスキップできます。設定するデータベースに対応するタブの手順に従います。

------
#### [ Amazon OpenSearch Serverless ]

Amazon OpenSearch Serverless コレクションへのアクセスをナレッジベースサービスロールに制限するには、データアクセスポリシーを作成します。これは以下の方法で実行できます。
+ Amazon OpenSearch Service デベロッパーガイドの「[Creating data access policies (console)](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-data-access.html#serverless-data-access-console)」の手順に従って、Amazon OpenSearch Service コンソールを使用します。
+ [OpenSearch Serverless エンドポイント](https://docs.aws.amazon.com/general/latest/gr/opensearch-service.html#opensearch-service-regions)で [CreateAccessPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_CreateAccessPolicy.html) リクエストを送信して AWSAPI を使用します。AWS CLI例については、[「データアクセスポリシーの作成 (AWS CLI)](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-data-access.html#serverless-data-access-cli)」を参照してください。

次のデータアクセスポリシーを使用して、Amazon OpenSearch Serverless コレクションとサービスロールを指定します。

```
[
    {
        "Description": "${data access policy description}",
        "Rules": [
          {
            "Resource": [
              "index/${collection_name}/*"
            ],
            "Permission": [
                "aoss:DescribeIndex",
                "aoss:ReadDocument",
                "aoss:WriteDocument"
            ],
            "ResourceType": "index"
          }
        ],
        "Principal": [
            "arn:aws:iam::${account-id}:role/${kb-service-role}"
        ]
    }
]
```

------
#### [ Pinecone, Redis エンタープライズクラウド or MongoDB Atlas ]

Pinecone、Redis Enterprise Cloud、MongoDB Atlas ベクトルインデックスを統合するには、ナレッジベースサービスロールに次のアイデンティティベースのポリシーをアタッチして、ベクトルインデックスのAWS Secrets Managerシークレットにアクセスできるようにします。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Effect": "Allow",
        "Action": [
            "bedrock:AssociateThirdPartyKnowledgeBase"
        ],
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "bedrock:ThirdPartyKnowledgeBaseCredentialsSecretArn": "arn:aws:secretsmanager:us-east-1:123456789012:secret:${secret-id}"
            }
        }
    }]
}
```

------

------

## Amazon OpenSearch Serverless ナレッジベースのネットワークアクセスポリシーを設定する
<a name="kb-create-security-network"></a>

ナレッジベースにプライベート Amazon OpenSearch Serverless コレクションを使用する場合は、AWS PrivateLinkVPC エンドポイントを介してのみアクセスできます。[Amazon OpenSearch Serverless ベクトルコレクションを設定する](knowledge-base-setup.md)ときにプライベート Amazon OpenSearch Serverless コレクションを作成することも、ネットワークアクセスポリシーを設定するときに既存の Amazon OpenSearch Serverless コレクション (Amazon Bedrock コンソールが作成したコレクションを含む) をプライベートにすることもできます。

Amazon OpenSearch Service デベロッパーガイドの以下のリソースは、プライベート Amazon OpenSearch Serverless コレクションに必要な設定を理解するのに役立ちます。
+ プライベート Amazon OpenSearch Serverless コレクションの VPC エンドポイントの設定の詳細については、「[Access Amazon OpenSearch Serverless using an interface endpoint (AWS PrivateLink)](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-vpc.html)」を参照してください。
+ Amazon OpenSearch Serverless のネットワークアクセスポリシーの詳細については、「[Network access for Amazon OpenSearch Serverless](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-network.html)」を参照してください。

Amazon Bedrock ナレッジベースがプライベート Amazon OpenSearch Serverless コレクションにアクセスできるようにするには、Amazon OpenSearch Serverless コレクションのネットワークアクセスポリシーを編集して、Amazon Bedrock をソースサービスとして許可する必要があります。任意の方法のタブを選択し、その手順に従います。

------
#### [ Console ]

1. [https://console.aws.amazon.com/aos/](https://console.aws.amazon.com/aos/) で Amazon OpenSearch Service コンソールを開きます。

1. 左側のナビゲーションペインで **[コレクション]** を選択します。次に、コレクションを選択します。

1. **[ネットワーク]** セクションで、**[関連ポリシー]** を選択します。

1. **[編集]** を選択します。

1. **[ポリシーの定義方法を選択]** で、次のいずれかを実行します。
   + **[ポリシーの定義方法を選択]** を **[ビジュアルエディタ]** のままにして、**[ルール 1]** セクションで以下の設定を行います。

     1. (オプション) **[ルール名]** フィールドに、ネットワークアクセスルールの名前を入力します。

     1. **[次からコレクションにアクセス:]** で、**[プライベート (推奨)]** を選択します。

     1. **[AWS サービスプライベートアクセス]** を選択します。テキストボックスに「**bedrock.amazonaws.com**」と入力します。

     1. **[OpenSearch Dashboards へのアクセスを有効にする]** の選択を解除します。
   + **[JSON]** を選択して、以下のポリシーを **[JSON エディタ]**に貼り付けます。

     ```
     [
         {                                        
             "AllowFromPublic": false,
             "Description":"${network access policy description}",
             "Rules":[
                 {
                     "ResourceType": "collection",
                     "Resource":[
                         "collection/${collection-id}"
                     ]
                 }
             ],
             "SourceServices":[
                 "bedrock.amazonaws.com"
             ]
         }
     ]
     ```

1. **[更新]** を選択します。

------
#### [ API ]

Amazon OpenSearch Serverless コレクションのネットワークアクセスポリシーを編集するには、次の手順を実行します。

1. [OpenSearch Serverless エンドポイント](https://docs.aws.amazon.com/general/latest/gr/opensearch-service.html#opensearch-service-regions) を使用して [GetSecurityPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_GetSecurityPolicy.html) リクエストを送信します。ポリシーの `name` を指定し、`type` を `network` として指定します。レスポンス内の `policyVersion` を書き留めます。

1. [OpenSearch Serverless エンドポイント](https://docs.aws.amazon.com/general/latest/gr/opensearch-service.html#opensearch-service-regions) を使用して [UpdateSecurityPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_UpdateSecurityPolicy.html) リクエストを送信します。少なくとも、以下のフィールドを指定します。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/kb-create-security.html)

   ```
   [
       {                                        
           "AllowFromPublic": false,
           "Description":"${network access policy description}",
           "Rules":[
               {
                   "ResourceType": "collection",
                   "Resource":[
                       "collection/${collection-id}"
                   ]
               }
           ],
           "SourceServices":[
               "bedrock.amazonaws.com"
           ]
       }
   ]
   ```

AWS CLI例については、[「データアクセスポリシーの作成 (AWS CLI)](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-data-access.html#serverless-data-access-cli)」を参照してください。

------
+ 「[Creating network policies (console)](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-network.html#serverless-network-console)」の手順に従って、Amazon OpenSearch Service コンソールを使用します。ネットワークポリシーを作成する代わりに、コレクションの詳細の **[ネットワーク]** サブセクションの **[関連付けポリシー]** に注意してください。

# Amazon Bedrock ナレッジベースとデータを同期する
<a name="kb-data-source-sync-ingest"></a>

ナレッジベースを作成したら、データを取り込むか同期して、クエリできるようにします。取り込み時には、指定したベクトル埋め込みモデルと設定に基づいて、データソースの未加工データがベクトル埋め込みに変換されます。

取り込みの開始前に、データソースが次の条件を満たしていることを確認してください。
+ データソースの接続情報が設定されている。データソースリポジトリのデータをクローリングするようにデータソースコネクタを設定する場合は、[サポート対象のデータソースコネクタ](https://docs.aws.amazon.com/bedrock/latest/userguide/data-source-connectors.html)をご確認ください。データソースの設定は、ナレッジベースの作成過程で行います。
+ 選択したベクトル埋め込みモデルとベクトルストアが設定されている。[サポート対象のベクトル埋め込みモデル](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-supported.html)と[ナレッジベース用のベクトルストア](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-setup.html)をご確認ください。ベクトル埋め込みの設定は、ナレッジベースの作成過程で行います。
+ ファイルがサポート対象の形式である。詳細については、「[Support document formats](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-ds.html#kb-ds-supported-doc-formats-limits)」を参照してください。
+ ファイルのサイズが、「AWS 全般のリファレンス」の「[Amazon Bedrock エンドポイントとクォータ](https://docs.aws.amazon.com/general/latest/gr/bedrock.html)」で指定されている**取り込みジョブのファイルサイズ**を超えていない。
+ データソースにメタデータファイルが含まれている場合は、メタデータファイルが無視されないように、次の条件を確認してください。
  + 各 `.metadata.json` ファイルが、関連付けられているソースファイルと同じファイル名と拡張子を共有している。
  + ナレッジベースのベクトルインデックスが Amazon OpenSearch Serverless ベクトルストア内にある場合は、ベクトルインデックスが `faiss` エンジンで設定されていることを確認してください。ベクトルインデックスが `nmslib` エンジンで設定されている場合は、次のいずれかを行う必要があります。
    + コンソールで[新しいナレッジベースを作成](knowledge-base-create.md)し、Amazon Bedrock が Amazon OpenSearch Serverless でベクトルインデックスを自動作成できるようにします。
    + ベクトルストアに[別のベクトルインデックスを作成](knowledge-base-setup.md)し、**[エンジン]** として `faiss` を選択します。次に、[新しいナレッジベースを作成](knowledge-base-create.md)し、新しいベクトルインデックスを指定します。
  + ナレッジベースのベクトルインデックスが Amazon Aurora データベースクラスター内にある場合は、カスタムメタデータフィールドを使用してすべてのメタデータを 1 つの列に保存し、この列にインデックスを作成することをお勧めします。カスタムメタデータフィールドを指定しない場合は、取り込みを開始する前に、インデックスのテーブルにメタデータファイル内の各メタデータプロパティの列が含まれていることを確認する必要があります。詳細については、「[ナレッジベース用に作成したベクトルストアを使用するための前提条件](knowledge-base-setup.md)」を参照してください。

データソースからファイルを追加、変更、または削除するたびに、ナレッジベースでファイルのインデックスが再作成されるように、データソースを同期する必要があります。同期は増分処理であるため、前回の同期以降に追加、変更、または削除されたドキュメントだけが処理されます。

データをナレッジベースに取り込み、最新のデータと同期する方法を確認するには、任意の方法のタブを選択してステップを実行してください。

------
#### [ Console ]

**データをナレッジベースに取り込み、最新のデータと同期するには**

1. Amazon Bedrock コンソール ([https://console.aws.amazon.com/bedrock/](https://console.aws.amazon.com/bedrock/)) を開きます。

1. 左側のナビゲーションペインの **[ナレッジベース]** でナレッジベースを選択します。

1. **[データソース]** セクションで **[同期]** を選択して、データの取り込み (データインジェスト) または最新データの同期を開始します。同期中のデータソースを停止するには、**[停止]** を選択します。停止できるのは、同期中のデータソースだけです。**[同期]** をもう一度選択すると、残りのデータを取り込むことができます。

1. データインジェストが正常に完了すると、緑色の成功バナーが表示されます。
**注記**  
データの同期が完了した後、Amazon Aurora (RDS) 以外のベクトルストアを使用している場合は、新たに同期されたデータのベクトル埋め込みがナレッジベースに反映され、クエリに使用可能になるまでに数分かかることがあります。

1. データソースを選択して、そのデータソースの **[同期履歴]** を表示することができます。**[警告を表示]** を選択すると、データインジェストジョブが失敗した理由を確認できます。

------
#### [ API ]

ナレッジベースにデータを取り込み、最新のデータと同期するには、[Amazon Bedrock エージェントのビルドタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)で [StartIngestionJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StartIngestionJob.html) リクエストを送信します。`knowledgeBaseId` と `dataSourceId` を指定してください。[StopIngestionJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StopIngestionJob.html) リクエストを送信することで、実行中のデータインジェストジョブを停止することもできます。`dataSourceId`、`ingestionJobId`、および `knowledgeBaseId` を指定します。停止できるのは、実行中のデータインジェストジョブのみです。準備ができたら、`StartIngestionJob` リクエストを再送信して、残りのデータを取り込むことができます。

レスポンスで返された `ingestionJobId` を使用して、[Amazon Bedrock エージェントのビルドタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)で [GetIngestionJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_GetIngestionJob.html) リクエストを送信し、取り込みジョブのステータスを追跡します。また、`knowledgeBaseId` と `dataSourceId` も指定します。
+ 取り込みジョブが完了すると、レスポンス内の `status` は `COMPLETE` になります。
**注記**  
データの取り込みが完了した後、Amazon Aurora (RDS) 以外のベクトルストアを使用している場合は、新たに取り込まれたデータのベクトル埋め込みがベクトルストアに反映され、クエリに使用可能になるまでに数分かかることがあります。
+ レスポンス内の `statistics` オブジェクトは、データソース内のドキュメントの取り込みが成功したかどうかに関する情報を返します。

また、[Amazon Bedrock エージェントのビルドタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)で [ListIngestionJobs](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_ListIngestionJobs.html) リクエストを送信することで、データソースのすべての取り込みジョブに関する情報を確認することもできます。`dataSourceId` と、データの取り込み先のナレッジベースの `knowledgeBaseId` を指定してください。
+ 検索するステータスを `filters` オブジェクトで指定して、結果をフィルタリングします。
+ `sortBy` オブジェクトを指定して、ジョブの開始時間またはジョブのステータスでソートします。昇順または降順で並べ替えることができます。
+ レスポンスで返す結果の最大数を `maxResults` フィールドで設定します。設定した数よりも結果の件数が多い場合は、`nextToken` が返されます。これを別の [ListIngestionJobs](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_ListIngestionJobs.html) リクエストで送信して、ジョブの次のバッチを確認できます。

------

# 変更をナレッジベースに直接取り込む
<a name="kb-direct-ingestion"></a>

Amazon Bedrock ナレッジベースを使用すると、データソースの変更と変更の同期を 1 ステップで行うことができます。この機能は、ナレッジベースが次のいずれかのタイプのデータソースに接続されている場合に利用できます。
+ Amazon S3
+ カスタム

直接取り込みを使用すると、ナレッジベースのファイルを 1 つのアクションで直接追加、更新、または削除でき、同期しなくてもナレッジベースはドキュメントにアクセスできます。直接取り込みでは、`KnowledgeBaseDocuments` API オペレーションを使用して、ナレッジベース用に設定されたベクトルストアに直接送信するドキュメントのインデックスを作成します。このオペレーションを使用して、ナレッジベース内のドキュメントを直接表示することもできます。ドキュメントを表示するために、接続されたデータソースに移動する必要はありません。

## データソースの同期との違い
<a name="kb-direct-ingestion-sync-diff"></a>

Amazon Bedrock ナレッジベースには、[データソースの同期](kb-data-source-sync-ingest.md)に関連する一連の `IngestionJob` API オペレーションも用意されています。[StartIngestionJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StartIngestionJob.html) リクエストを使用してデータソースを同期すると、Amazon Bedrock ナレッジベースは接続されたデータソース内の各ドキュメントをスキャンし、ナレッジベース用に設定されたベクトルストアにドキュメントのインデックスが既に作成されているかどうかを確認します。まだ作成されていない場合は、ベクトルストアにインデックスが作成されます。

[IngestKnowledgeBaseDocuments](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_IngestKnowledgeBaseDocuments.html) リクエストでは、ベクトルストアに直接インデックスを作成するドキュメントの配列を送信します。したがって、データソースにドキュメントを追加するステップはスキップします。この 2 つの API オペレーションセットのユースケースについては、以下の段落を参照してください。

**カスタムデータソースを使用する場合**  
同期したり、`IngestionJob` オペレーションを使用したりする必要はありません。`KnowledgeBaseDocuments` オペレーションを使用して、または AWS マネジメントコンソールで追加、変更、削除したドキュメントは、カスタムデータソースとナレッジベースの両方の一部になります。

**Amazon S3 データソースを使用する場合**  
2 つのオペレーションセットは、さまざまなユースケースで使用します。
+ ナレッジベースを S3 データソースに初めて接続したら、AWS マネジメントコンソールで、または Amazon Bedrock API を介して [StartIngestionJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StartIngestionJob.html) リクエストを送信することで、データソースを同期する必要があります。
+ 次の方法で、ナレッジベース用に設定されたベクトルストアにドキュメントのインデックスを作成するか、インデックスが作成されたドキュメントを削除します。

  1. S3 の場所にドキュメントを追加するか、そこからドキュメントを削除します。次に、AWS マネジメントコンソールでデータソースを同期するか、API で `StartIngestionJob` リクエストを送信します。同期と `StartIngestionJob` オペレーションの詳細については、「[Amazon Bedrock ナレッジベースとデータを同期する](kb-data-source-sync-ingest.md)」を参照してください。

  1. `IngestKnowledgeBaseDocuments` リクエストを使用して S3 ドキュメントをナレッジベースに直接取り込みます。ドキュメントを直接取り込む方法の詳細については、「[ドキュメントをナレッジベースに直接取り込む](kb-direct-ingestion-add.md)」を参照してください。
**警告**  
S3 データソースの場合、AWS マネジメントコンソールで、または `KnowledgeBaseDocuments` API オペレーションを使用してナレッジベースに直接インデックスを作成した変更は、S3 の場所に反映されません。これらの API オペレーションを使用すると、ナレッジベースに対する変更を 1 ステップですぐに反映することができます。ただし、フォローアップとして S3 の場所で同じ変更を行い、AWS マネジメントコンソールで、または `StartIngestionJob` を使用してデータソースを次回同期するときに上書きされないようにする必要があります。  
`IngestKnowledgeBaseDocuments` リクエストと `StartIngestionJob` リクエストを同時に送信しないでください。

トピックを選択し、データソース内のドキュメントの直接取り込みを実行する方法を確認してください。

**Topics**
+ [データソースの同期との違い](#kb-direct-ingestion-sync-diff)
+ [直接取り込みの前提条件](kb-direct-ingestion-prereq.md)
+ [ドキュメントをナレッジベースに直接取り込む](kb-direct-ingestion-add.md)
+ [データソース内のドキュメントに関する情報を表示する](kb-direct-ingestion-view.md)
+ [ナレッジベースからドキュメントを直接削除する](kb-direct-ingestion-delete.md)

# 直接取り込みの前提条件
<a name="kb-direct-ingestion-prereq"></a>

直接取り込みを使用するには、IAM ロールに `KnowledgeBaseDocs` API オペレーションを使用するためのアクセス許可が必要です。IAM ロールに [AmazonBedrockFullAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonBedrockFullAccess)AWS 管理ポリシーがアタッチされている場合は、このセクションをスキップできます。

以下のポリシーを IAM ロールにアタッチすることで、`Resource` フィールドで指定したナレッジベースへの直接取り込みを実行できるようになります。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "DirectIngestion",
            "Effect": "Allow",
            "Action": [
                "bedrock:StartIngestionJob",
                "bedrock:IngestKnowledgeBaseDocuments",
                "bedrock:GetKnowledgeBaseDocuments",
                "bedrock:ListKnowledgeBaseDocuments",
                "bedrock:DeleteKnowledgeBaseDocuments"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:knowledge-base/${KnowledgeBaseId}"
            ]
        }
    ]
}
```

------

アクセス許可をさらに制限するには、アクションを省略するか、アクセス許可をフィルタリングするためのリソースや条件キーを指定できます。アクション、リソース、条件キーの詳細については、「*サービス認可リファレンス*」の以下のトピックを参照してください。
+ [Amazon Bedrock で定義されるアクション](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-actions-as-permissions) – アクション、`Resource` フィールドで範囲を定義できるリソースタイプ、`Condition` フィールドでアクセス許可をフィルタリングできる条件キーについて説明しています。
+ [Amazon Bedrock で定義されるリソースタイプ](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-resources-for-iam-policies) – Amazon Bedrock のリソースタイプについて説明しています。
+ [Amazon Bedrock の条件キー](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-policy-keys) – Amazon Bedrock の条件キーについて説明しています。

# ドキュメントをナレッジベースに直接取り込む
<a name="kb-direct-ingestion-add"></a>

このトピックでは、ドキュメントをナレッジベースに直接取り込む方法について説明します。データソースによって直接取り込めるドキュメントのタイプに制限が適用されます。取り込むドキュメントの指定に使用できる方法の制限については、次の表を参照してください。


****  

| データソースタイプ | インラインで定義されたドキュメント | Amazon S3 の場所のドキュメント | 
| --- | --- | --- | 
| Amazon S3 | ![\[Red circular icon with an X symbol, indicating cancellation or denial.\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/icons/icon-no.png)なし | ![\[Green circular icon with a white checkmark symbol inside.\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/icons/icon-yes.png) あり | 
| カスタム | ![\[Green circular icon with a white checkmark symbol inside.\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/icons/icon-yes.png) あり | ![\[Green circular icon with a white checkmark symbol inside.\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/icons/icon-yes.png) あり | 

ユースケースに対応するセクションを展開します。

**注記**  
コンソールを使用すると、最大 10 個のドキュメントをナレッジベースに直接取り込むことができます。代わりに `IngestKnowledgeBaseDocuments` API を使用する場合は、最大 25 のドキュメントをナレッジベースに取り込むことができます。このクォータの詳細については、「*AWS 全般のリファレンス*」ガイドの「[Amazon Bedrock の サービスクォータ](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#limits_bedrock)」を参照してください。

## コンソールを使用する
<a name="kb-direct-ingestion-add-console"></a>

でドキュメントを直接追加または変更するには AWS マネジメントコンソール、次の手順を実行します。

1. Amazon Bedrock コンソールを使用するアクセス許可を持つ IAM ID AWS マネジメントコンソール を使用して にサインインします。Amazon Bedrock コンソール ([https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)) を開きます。

1. 左側のナビゲーションペインで **[ナレッジベース]** を選択します。

1. **[ナレッジベース]** セクションで、ドキュメントを取り込むナレッジベースを選択します。

1. **[データソース]** セクションで、ドキュメントを追加、変更、または削除するデータソースを選択します。

1. **[ドキュメント]** セクションで、**[ドキュメントを追加]** を選択します。次に、以下のいずれかを行います。
   + ドキュメントを直接追加または変更するには、**[ドキュメントを直接追加]** を選択します。次に、以下の操作を実行します。

     1. **[ドキュメント識別子]** フィールドで、ドキュメントの一意の名前を指定します。データソースに既に存在する名前を指定すると、ドキュメントが置き換えられます。

     1. ドキュメントをアップロードするには、**[アップロード]** を選択します。ドキュメントをインラインで定義するには、**[ドキュメントをインラインで追加]** を選択し、形式を選択して、ドキュメントのテキストをボックスに入力します。

     1. (オプション) メタデータをドキュメントに関連付けるには、**[メタデータを追加]** を選択し、キー、タイプ、値を入力します。
   + S3 の場所を指定してドキュメントを追加または変更するには、**[S3 ドキュメントを追加]** を選択します。次に、以下の操作を実行します。

     1. **[ドキュメント識別子]** フィールドで、ドキュメントの一意の名前を指定します。データソースに既に存在する名前を指定すると、ドキュメントが置き換えられます。

     1. ドキュメントの **S3 の場所**が現在のアカウントにあるか、別の AWS アカウントにあるかを指定します。次に、ドキュメントの S3 URI を指定します。

     1. (オプション) メタデータをドキュメントに関連付けるには、**[メタデータソース]** を選択します。メタデータの S3 URI を指定するか、**[メタデータを追加]** を選択してキー、タイプ、値を入力します。

1. ドキュメントと関連するメタデータを取り込むには、**[追加]** を選択します。

## API を使用する
<a name="kb-direct-ingestion-add-api"></a>

Amazon Bedrock API を使用してナレッジベースに直接ドキュメントを取り込むには、[Amazon Bedrock エージェントのビルドタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)を使用して [IngestKnowledgeBaseDocuments](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_IngestKnowledgeBaseDocuments.html) リクエストを送信し、ナレッジベース ID および接続されているデータソースの ID を指定します。

**注記**  
ナレッジベースに既に存在するドキュメント識別子または S3 の場所を指定すると、ドキュメントは新しいコンテンツで上書きされます。

リクエスト本文には、[KnowledgeBaseDocument](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_KnowledgeBaseDocument.html) オブジェクトの配列にマッピングされる 1 つのフィールド `documents` が含まれています。各オブジェクトは、データソースに追加してナレッジベースに取り込むドキュメントのコンテンツとオプションのメタデータを表します。[KnowledgeBaseDocument](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_KnowledgeBaseDocument.html) オブジェクトには、次のフィールドが含まれます。
+ content – 追加するドキュメントのコンテンツに関する情報を含む [DocumentContent](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DocumentContent.html) オブジェクトにマッピングします。
+ metadata – (オプション) 追加するドキュメントのメタデータに関する情報を含む [DocumentMetadata](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DocumentMetadata.html) オブジェクトにマッピングします。取得時にメタデータを使用する方法の詳細については、「[クエリとレスポンスの生成を設定してカスタマイズする](kb-test-config.md)」 の「**メタデータとフィルタリング**」セクションを参照してください。

トピックを選択すると、さまざまなデータソースタイプのドキュメントを取り込む方法や例を確認できます。

**Topics**
+ [カスタムデータソースに接続されたナレッジベースにドキュメントを取り込む](#kb-direct-ingestion-add-custom)
+ [Amazon S3 データソースに接続されたナレッジベースにドキュメントを取り込む](#kb-direct-ingestion-add-s3)
+ [リクエスト本文の例](#w2aac28c10c23c19c17c11b3c19)

### カスタムデータソースに接続されたナレッジベースにドキュメントを取り込む
<a name="kb-direct-ingestion-add-custom"></a>

指定した `dataSourceId` がカスタムデータソースに属している場合は、`documents` 配列内の各 [KnowledgeBaseDocument](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_KnowledgeBaseDocument.html) オブジェクトにコンテンツとメタデータを追加できます。

カスタムデータソースに追加されたドキュメントのコンテンツは、次の方法で定義できます。

#### ドキュメントをインラインで定義する
<a name="kb-direct-ingestion-add-custom-inline"></a>

次のタイプのドキュメントをインラインで定義できます。

------
#### [ Text ]

ドキュメントがテキストの場合、[DocumentContent](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DocumentContent.html) オブジェクトは次の形式になります。

```
{ 
    "custom": { 
        "customDocumentIdentifier": { 
            "id": "string"
        },
        "inlineContent": { 
            "textContent": { 
                "data": "string"
            },
            "type": "TEXT"
        },
        "sourceType": "IN_LINE"
    },
    "dataSourceType": "CUSTOM"
}
```

`id` フィールドにドキュメントの ID を、`data` フィールドにドキュメントのテキストを含めます。

------
#### [ Bytes ]

ドキュメントにテキスト以外の内容が含まれている場合は、Base64 文字列に変換します。[DocumentContent](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DocumentContent.html) オブジェクトは次の形式になります。

```
{ 
    "custom": { 
        "customDocumentIdentifier": { 
            "id": "string"
        },
        "inlineContent": { 
            "byteContent": { 
                "data": blob,
                "mimeType": "string"
            },
            "type": "BYTE"
        },
        "sourceType": "IN_LINE"
    },
    "dataSourceType": "CUSTOM"
}
```

`id` フィールドにドキュメントの ID、`data`フィールドに Base64 でエンコードされたドキュメント、`mimeType` フィールドに MIME タイプを含めます。

------

#### S3 からドキュメントを取り込む
<a name="w2aac28c10c23c19c17c11b3c15b7b3"></a>

S3 の場所からドキュメントを取り込む場合、`content` フィールドの [DocumentContent](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DocumentContent.html) オブジェクトは次の形式になります。

```
{ 
    "custom": { 
        "customDocumentIdentifier": { 
            "id": "string"
        },
        "s3Location": { 
            "bucketOwnerAccountId": "string",
            "uri": "string"
        },
        "sourceType": "S3"
    },
    "dataSourceType": "CUSTOM"
}
```

`id` フィールドにドキュメントの ID、`bucketOwnerAccountId` フィールドにドキュメントを含む S3 バケットの所有者、`uri` フィールドにドキュメントの S3 URI を含めます。

ドキュメントのメタデータは、次の方法で定義できます。

#### メタデータをインラインで定義する
<a name="w2aac28c10c23c19c17c11b3c15c11b1"></a>

メタデータをインラインで定義する場合、`metadata` フィールドの [DocumentMetadata](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DocumentMetadata.html) オブジェクトは次の形式になります。

```
{ 
    "inlineAttributes": [ 
        { 
            "key": "string",
            "value": { 
                "stringValue": "string",
                "booleanValue": boolean,
                "numberValue": number,
                "stringListValue": [ "string" ],
                "type": "STRING" | "BOOLEAN" | "NUMBER" | "STRING_LIST"
            }
        }
    ],
    "type": "IN_LINE_ATTRIBUTE"
}
```

追加する属性ごとに、`key` フィールドでキーを定義します。`type` フィールドに値のデータ型を指定し、データ型に対応するフィールドを含めます。例えば、文字列を含めると、属性は次の形式になります。

```
{ 
    "key": "string",
    "value": { 
        "stringValue": "string",
        "type": "STRING"
    }
}
```

#### S3 からメタデータを取り込む
<a name="w2aac28c10c23c19c17c11b3c15c11b3"></a>

S3 の場所の拡張子 `.metadata.json` を持つファイルからメタデータを取り込むこともできます。メタデータファイルの形式の詳細については、「[ナレッジベースに対応する Amazon S3 に接続する](s3-data-source-connector.md)」の「**ドキュメントメタデータフィールド**」セクションを参照してください。

メタデータが S3 ファイルからのものである場合、`metadata` フィールドの [DocumentMetadata](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DocumentMetadata.html) オブジェクトは次の形式になります。

```
{
    "s3Location": { 
        "bucketOwnerAccountId": "string",
        "uri": "string"
    },
        "type": "S3_LOCATION"
    }
 }
```

`bucketOwnerAccountId` フィールドにメタデータファイルを含む S3 バケットの所有者を含め、`uri` フィールドにメタデータファイルの S3 URI を含めます。

**警告**  
コンテンツをインラインで定義した場合は、メタデータをインラインで定義する必要があります。

### Amazon S3 データソースに接続されたナレッジベースにドキュメントを取り込む
<a name="kb-direct-ingestion-add-s3"></a>

指定した `dataSourceId` が S3 データソースに属している場合は、`documents` 配列内の各 [KnowledgeBaseDocument](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_KnowledgeBaseDocument.html) オブジェクトにコンテンツとメタデータを追加できます。

**注記**  
S3 データソースの場合、コンテンツとメタデータは S3 の場所からのみ追加できます。

S3 に追加する S3 ドキュメントのコンテンツは、次の形式で [DocumentContent](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DocumentContent.html) オブジェクトに追加する必要があります。

```
{ 
    "dataSourceType": "string",
    "s3": { 
        "s3Location": { 
            "uri": "string"
        }
    }
}
```

`bucketOwnerAccountId` フィールドにドキュメントを含む S3 バケットの所有者を含め、`uri` フィールドにドキュメントの S3 URI を含めます。

カスタムデータソースに追加されたドキュメントのメタデータは、次の形式で定義できます。

```
{
    "s3Location": { 
        "bucketOwnerAccountId": "string",
        "uri": "string"
    },
        "type": "S3_LOCATION"
    }
 }
```

**警告**  
S3 データソースに接続されたナレッジベースに直接取り込むドキュメントは、S3 バケット自体には追加されません。これらのドキュメントを S3 データソースに追加して、データソースを同期しても削除または上書きされないようにすることをお勧めします。

### リクエスト本文の例
<a name="w2aac28c10c23c19c17c11b3c19"></a>

以下のセクションで、`IngestKnowledgeBaseDocuments` を使用したさまざまなユースケースのリクエスト本文について説明します。

#### カスタムテキストドキュメントをカスタムデータソースに追加して取り込む
<a name="w2aac28c10c23c19c17c11b3c19b5b1"></a>

次の例は、カスタムデータソースに 1 つのテキストドキュメントを追加する方法を示しています。

```
PUT /knowledgebases/KB12345678/datasources/DS12345678/documents HTTP/1.1
Content-type: application/json

{
   "documents": [ 
      { 
         "content": { 
            "dataSourceType": "CUSTOM",
            "custom": { 
               "customDocumentIdentifier": { 
                  "id": "MyDocument"
               },
               "inlineContent": { 
                  "textContent": { 
                     "data": "Hello world!"
                  },
                  "type": "TEXT"
               },
               "sourceType": "IN_LINE"
            }
         }
     }
   ]
}
```

#### Base64 でエンコードされたドキュメントをカスタムデータソースに追加して取り込む
<a name="w2aac28c10c23c19c17c11b3c19b5b3"></a>

次の例は、カスタムデータソースに PDF ドキュメントを追加する方法を示しています。

```
PUT /knowledgebases/KB12345678/datasources/DS12345678/documents HTTP/1.1
Content-type: application/json

{
   "documents": [ 
      { 
         "content": { 
            "dataSourceType": "CUSTOM",
            "custom": { 
               "customDocumentIdentifier": { 
                  "id": "MyDocument"
               },
               "inlineContent": { 
                  "byteContent": { 
                     "data": "<Base64-encoded string>",
                     "mimeType": "application/pdf"
                  },
                  "type": "BYTE"
               },
               "sourceType": "IN_LINE"
            }
         }
     }
   ]
}
```

#### S3 の場所からカスタムデータソースに接続されたナレッジベースにドキュメントを追加して取り込む
<a name="w2aac28c10c23c19c17c11b3c19b5b5"></a>

次の例は、S3 の場所からカスタムデータソースに 1 つのテキストドキュメントを追加する方法を示しています。

```
PUT /knowledgebases/KB12345678/datasources/DS12345678/documents HTTP/1.1
Content-type: application/json

{
   "documents": [ 
      { 
         "content": { 
            "dataSourceType": "CUSTOM",
            "custom": { 
               "customDocumentIdentifier": { 
                  "id": "MyDocument"
               },
               "s3": {
                "s3Location": {
                    "uri": "amzn-s3-demo-bucket"
                }
               },
               "sourceType": "S3"
            }
         }
     }
   ]
}
```

#### カスタムデータソースに接続されたナレッジベースにインラインドキュメントを追加し、メタデータをインラインで含める
<a name="w2aac28c10c23c19c17c11b3c19b5b7"></a>

次の例は、2 つの属性を含むメタデータとともに、ドキュメントのカスタムデータソースにインラインを追加する方法を示しています。

```
PUT /knowledgebases/KB12345678/datasources/DS12345678/documents HTTP/1.1
Content-type: application/json

{
   "documents": [ 
      { 
         "content": { 
            "dataSourceType": "CUSTOM",
            "custom": { 
               "customDocumentIdentifier": { 
                  "id": "MyDocument"
               },
               "inlineContent": { 
                  "textContent": { 
                     "data": "Hello world!"
                  },
                  "type": "TEXT"
               },
               "sourceType": "IN_LINE"
            }
         },
         "metadata": {
            "inlineAttributes": [ 
               { 
                  "key": "genre",
                  "value": {
                     "stringValue": "pop",
                     "type": "STRING"
                  }
               },
               { 
                  "key": "year",
                  "value": { 
                     "numberValue": 1988,
                     "type": "NUMBER"
                  }
               }
            ],
            "type": "IN_LINE_ATTRIBUTE"
         }
     }
   ]
}
```

#### S3 データソースに接続されたナレッジベースにドキュメントを追加し、そのメタデータを含める
<a name="w2aac28c10c23c19c17c11b3c19b5b9"></a>

次の例は、メタデータとともにドキュメントを S3 データソースに追加する方法を示しています。メタデータは S3 を介してのみ含めることができます。

```
PUT /knowledgebases/KB12345678/datasources/DS12345678/documents HTTP/1.1
Content-type: application/json

{
    "documents": [ 
        { 
            "content": { 
                "dataSourceType": "S3",
                "s3": { 
                "s3Location": {
                    "uri": "amzn-s3-demo-bucket"
                }
            }
        },
        "metadata": {
            "s3Location": {
                "bucketOwnerId": "111122223333",
                "uri": "amzn-s3-demo-bucket"
            },
                "type": "S3_LOCATION"
            }
        }
    ]
}
```

# データソース内のドキュメントに関する情報を表示する
<a name="kb-direct-ingestion-view"></a>

以下のトピックでは、データソース内のドキュメントを表示する方法について説明します。ナレッジベースが Amazon S3 データソースに接続されている場合は、接続された S3 バケット内のドキュメントを表示できます。

**注記**  
S3 データソースに接続して新しいナレッジベースを作成した場合は、これらの API オペレーションをデータソースで使用する前に、まずデータソースを同期する必要があります。

自分のユースケースに対応する方法を展開してください。

## コンソールを使用する
<a name="kb-direct-ingestion-view-console"></a>

AWS マネジメントコンソールに取り込まれたデータソース内のドキュメントを表示するには、次の手順を実行します。

1. Amazon Bedrock コンソールを使用するためのアクセス許可を持つ IAM ID を使用して、AWS マネジメントコンソールにサインインします。Amazon Bedrock コンソール ([https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)) を開きます。

1. 左側のナビゲーションペインで **[ナレッジベース]** を選択します。

1. **[ナレッジベース]** セクションで、表示するドキュメントが含まれているナレッジベースを選択します。

1. **[データソース]** セクションで、表示するドキュメントが含まれているデータソースを選択します。

1. **[ドキュメント]** セクションに、データソース内のドキュメントが一覧表示されます。これらのドキュメントはナレッジベースにも取り込まれています。

## API を使用する
<a name="kb-direct-ingestion-view-api"></a>

Amazon Bedrock API を使用すると、ナレッジベースに取り込まれたデータソース内のドキュメントのサブセットまたはすべてを表示できます。自分のユースケースに関連するトピックを選択してください。

**Topics**
+ [ナレッジベース内のドキュメントのサブセットに関する情報を表示する](#kb-direct-ingestion-get)
+ [ナレッジベース内のすべてのドキュメントに関する情報を表示する](#kb-direct-ingestion-list)

### ナレッジベース内のドキュメントのサブセットに関する情報を表示する
<a name="kb-direct-ingestion-get"></a>

データソース内の特定のドキュメントに関する情報を表示するには、[Amazon Bedrock エージェントのビルドタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)を使用して [GetKnowledgeBaseDocuments](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_GetKnowledgeBaseDocuments.html) リクエストを送信し、データソースとそのデータソースが接続されているナレッジベースの ID を指定します。

情報を取得するドキュメントごとに、次のいずれかの形式で `documentIdentifiers` 配列に [DocumentIdentifier](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DocumentIdentifier.html) 項目を追加します。
+ データソースがカスタムデータソースの場合は、`id` フィールドでドキュメントの ID を指定します。

  ```
  { 
      "custom": { 
          "id": "string"
      },
      "dataSourceType": "CUSTOM"
  }
  ```
+ データソースが Amazon S3 の場合は、`uri` フィールドでドキュメントの S3 URI を指定します。

  ```
  {
      "dataSourceType": "S3",
      "s3": { 
          "uri": "string"
      }
  }
  ```

レスポンスは項目の配列を返します。各項目には、リクエストしたドキュメントに関する情報が含まれています。

### ナレッジベース内のすべてのドキュメントに関する情報を表示する
<a name="kb-direct-ingestion-list"></a>

データソース内のすべてのドキュメントに関する情報を表示するには、[Amazon Bedrock エージェントのビルドタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)を使用して [ListKnowledgeBaseDocuments](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_ListKnowledgeBaseDocuments.html) リクエストを送信し、データソースとそのデータソースが接続されているナレッジベースの ID を指定します。次のオプションもあります。
+ `maxResults` を指定して、返される結果の数を制限します。
+ 結果がレスポンスに収まらない場合、レスポンスの `nextToken` フィールドで値が返されます。この値を後続のリクエストの `nextToken` フィールドで使用して、結果の次のバッチを取得できます。

# ナレッジベースからドキュメントを直接削除する
<a name="kb-direct-ingestion-delete"></a>

ナレッジベースでドキュメントが不要になった場合は、直接削除できます。データソースとナレッジベースからドキュメントを削除する方法を確認するには、該当ユースケースに対応するセクションを展開します。

## コンソールを使用する
<a name="kb-direct-ingestion-delete-console"></a>

AWS マネジメントコンソール を使用してデータソースとナレッジベースからドキュメントを直接削除するには、次の手順を実行します。

1. Amazon Bedrock コンソールを使用するためのアクセス許可を持つ IAM ID を使用して、AWS マネジメントコンソールにサインインします。Amazon Bedrock コンソール ([https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)) を開きます。

1. 左側のナビゲーションペインで **[ナレッジベース]** を選択します。

1. **[ナレッジベース]** セクションで、ドキュメントを削除するナレッジベースを選択します。

1. **[データソース]** セクションで、ドキュメントを削除するデータソースを選択します。

1. **[ドキュメント]** セクションで、削除するドキュメントを選択します。**[ドキュメントを削除]** をクリックします。メッセージを確認して、確定します。

## API を使用する
<a name="kb-direct-ingestion-delete-api"></a>

Amazon Bedrock API を介してデータソースから特定のドキュメントを削除するには、[Amazon Bedrock エージェントのビルドタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)を使用して、[DeleteKnowledgeBaseDocuments](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DeleteKnowledgeBaseDocuments.html) リクエストを送信し、データソースの ID とそのデータソースが接続されているナレッジベースの ID を指定します。

削除するドキュメントごとに、`documentIdentifiers` 配列で [DocumentIdentifier](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DocumentIdentifier.html) 項目を以下のいずれかの形式で追加します。
+ データソースがカスタムデータソースの場合は、`id` フィールドでドキュメントの ID を指定します。

  ```
  { 
      "custom": { 
          "id": "string"
      },
      "dataSourceType": "CUSTOM"
  }
  ```
+ データソースが Amazon S3 の場合は、`uri` フィールドでドキュメントの S3 URI を指定します。

  ```
  {
      "dataSourceType": "S3",
      "s3": { 
          "uri": "string"
      }
  }
  ```

**警告**  
S3 データソースに接続されたナレッジベースから直接削除したドキュメントは、S3 バケット自体からは削除されません。これらのドキュメントを S3 バケットから削除して、データソースを同期しても再導入されないようにすることをお勧めします。

# Amazon Bedrock ナレッジベースのデータソース情報を表示する
<a name="kb-ds-info"></a>

ナレッジベースのデータソースについて、設定や同期履歴などの情報を表示できます。

ナレッジベースのデータソースも含め、ナレッジベースをモニタリングするには、「[Knowledge base logging using Amazon CloudWatch](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-bases-logging.html)」を参照してください。

任意の方法のタブを選択し、その手順に従います。

------
#### [ Console ]

**データソースに関する情報を表示するには**

1. Amazon Bedrock コンソールを使用するためのアクセス許可を持つ IAM ID を使用して、AWS マネジメントコンソールにサインインします。Amazon Bedrock コンソール ([https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)) を開きます。

1. 左側のナビゲーションペインで **[ナレッジベース]** を選択します。

1. **[データソース]** セクションで、詳細を表示するデータソースを選択します。

1. **[データソースの概要]** に、データソースの詳細情報が表示されます。

1. **[同期履歴]** には、データソースが同期された日時の詳細情報が表示されます。同期イベントが失敗した理由を確認するには、同期イベントを選択し、**[警告を表示]** を選択します。

------
#### [ API ]

データソースに関する情報を取得するには、[Amazon Bedrock エージェントのビルドタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)で [GetDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_GetDataSource.html) リクエストを送信し、`dataSourceId` と、そのデータソースが属するナレッジベースの `knowledgeBaseId` を指定してください。

ナレッジベースのデータソースに関する情報を一覧表示するには、[Amazon Bedrock エージェントのビルドタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt) で [ListDataSources](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_ListDataSources.html) リクエストを送信し、ナレッジベースの ID を指定します。
+ レスポンス応答で返す結果の最大数を設定するには、`maxResults` フィールドを使用します。
+ 設定した数よりも結果の件数が多い場合は、`nextToken` が返されます。この値を別の `ListDataSources` リクエストで使用して、結果の次のバッチを確認できます。

データソースの同期イベントに関する情報を取得するには、[Amazon Bedrock エージェントのビルドタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt) で [GetIngestionJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_GetIngestionJob.html) リクエストを送信します。`dataSourceId`、`knowledgeBaseId`、および `ingestionJobId` を指定します。

ナレッジベースのデータソースの同期履歴を一覧表示するには、[Amazon Bedrock エージェントのビルドタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt) で [ListIngestionJobs](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_ListIngestionJobs.html) リクエストを送信します。ナレッジベースとデータソースの ID を指定します。次の仕様を設定できます。
+ 検索するステータスを `filters` オブジェクトで指定して、結果をフィルタリングします。
+ `sortBy` オブジェクトを指定して、ジョブの開始時間またはジョブのステータスでソートします。昇順または降順で並べ替えることができます。
+ レスポンスで返す結果の最大数を `maxResults` フィールドで設定します。設定した数よりも結果の件数が多い場合は、`nextToken` が返されます。これを別の [ListIngestionJobs](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_ListIngestionJobs.html) リクエストで送信して、ジョブの次のバッチを確認できます。

------

# Amazon Bedrock ナレッジベースのデータソースを変更する
<a name="kb-ds-update"></a>

ナレッジベースのデータソースを更新できます (データソースの設定を変更するなど)。

データソースは、次の方法で更新できます。
+ データソースのファイルやコンテンツを追加、変更、または削除する。
+ データソースの設定や、データインジェスト中の一時的なデータの暗号化に使用する KMS キーを変更する。ソースやエンドポイントの設定の詳細を変更する場合は、必要なアクセス許可と Secrets Manager シークレット (該当する場合) を持つ IAM ロールを更新または新規作成する必要があります。
+ データソースの削除ポリシーを「Delete」または「Retain」に設定する。「Delete」の場合は、ナレッジベースまたはデータソースリソースの削除時に、データソースから取り込んでベクトル埋め込みに変換したデータをすべて削除できます。「Retain」の場合は、ナレッジベースまたはデータソースリソースの削除時に、データソースから取り込んでベクトル埋め込みに変換したデータをすべて残すことができます。ナレッジベースまたはデータソースリソースを削除しても、**ベクトルストア自体は削除されません**。

データソースからファイルを追加、変更、または削除するたびに、ナレッジベースでファイルのインデックスが再作成されるように、データソースを同期する必要があります。同期は増分処理であるため、前回の同期以降に追加、変更、または削除されたドキュメントだけが処理されます。取り込みの開始前に、データソースが次の条件を満たしていることを確認してください。
+ ファイルがサポート対象の形式である。詳細については、「[Support document formats](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-ds.html#kb-ds-supported-doc-formats-limits)」を参照してください。
+ ファイルのサイズが、「AWS 全般のリファレンス」の「[Amazon Bedrock エンドポイントとクォータ](https://docs.aws.amazon.com/general/latest/gr/bedrock.html)」で指定されている**取り込みジョブのファイルサイズ**を超えていない。
+ データソースにメタデータファイルが含まれている場合は、メタデータファイルが無視されないように、次の条件を確認してください。
  + 各 `.metadata.json` ファイルが、関連付けられているソースファイルと同じファイル名と拡張子を共有している。
  + ナレッジベースのベクトルインデックスが Amazon OpenSearch Serverless ベクトルストア内にある場合は、ベクトルインデックスが `faiss` エンジンで設定されていることを確認してください。ベクトルインデックスが `nmslib` エンジンで設定されている場合は、次のいずれかを行う必要があります。
    + コンソールで[新しいナレッジベースを作成](knowledge-base-create.md)し、Amazon Bedrock が Amazon OpenSearch Serverless でベクトルインデックスを自動作成できるようにします。
    + ベクトルストアに[別のベクトルインデックスを作成](knowledge-base-setup.md)し、**[エンジン]** として `faiss` を選択します。次に、[新しいナレッジベースを作成](knowledge-base-create.md)し、新しいベクトルインデックスを指定します。
  + ナレッジベースのベクトルインデックスが Amazon Aurora データベースクラスター内にある場合は、カスタムメタデータフィールドを使用してすべてのメタデータを 1 つの列に保存し、この列にインデックスを作成することをお勧めします。カスタムメタデータフィールドを指定しない場合は、取り込みを開始する前に、インデックスのテーブルにメタデータファイル内の各メタデータプロパティの列が含まれていることを確認する必要があります。詳細については、「[ナレッジベース用に作成したベクトルストアを使用するための前提条件](knowledge-base-setup.md)」を参照してください。

データソースを更新する方法については、任意の方法のタブを選択してステップを実行してください。

------
#### [ Console ]

**データソースを更新するには**

1. Amazon Bedrock コンソールを使用するためのアクセス許可を持つ IAM ID を使用して、AWS マネジメントコンソールにサインインします。Amazon Bedrock コンソール ([https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)) を開きます。

1. 左側のナビゲーションペインで **[ナレッジベース]** を選択します。

1. ナレッジベースの名前を選択します。

1. **[データソース]** セクションで、編集および同期の対象データソースの横にあるラジオボタンを選択します。

1. (オプション) **[編集]** を選択し、設定を変更して **[送信]** を選択します。ソースやエンドポイントの設定の詳細を変更する場合は、必要なアクセス許可と Secrets Manager シークレット (該当する場合) を持つ IAM ロールを更新または新規作成する必要があります。また、取り込んだ元データに基づくチャンキングの設定は変更できません。その場合は、データソースを再作成する必要があります。
**注記**  
チャンキングの設定は変更できません。その場合は、データソースを再作成する必要があります。

1. (オプション) 詳細設定の一部として、データソースのデータ削除ポリシーを編集することができます。

   データ削除ポリシーの設定では、次のいずれかを選択できます。
   + 削除: ナレッジベースまたはデータソースリソースの削除時に、ベクトル埋め込みに変換されたデータソースからすべてのデータを削除します。**ベクトルストア自体は削除されず**、データのみが削除されます。このフラグは、AWS アカウントが削除された場合は無視されます。
   + 保持: ナレッジベースまたはデータソースリソースの削除時に、ベクトル埋め込みに変換されたデータソースからすべてのデータを保持します。ナレッジベースまたはデータソースリソースを削除しても、**ベクトルストア自体は削除されません**。

1. **[同期]** を選択します。

1. 同期が完了すると緑色のバナーが表示され、**[ステータス]** が **[準備完了]** になります。

------
#### [ API ]

**データソースを更新するには**

1. (オプション) [Amazon Bedrock エージェントのビルドタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)で [UpdateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_UpdateDataSource.html) リクエストを送信し、設定を適宜変更します。変更しないものについては同じ設定を指定してください。ソースやエンドポイントの設定の詳細を変更する場合は、必要なアクセス許可と Secrets Manager シークレット (該当する場合) を持つ IAM ロールを更新または新規作成する必要があります。
**注記**  
`chunkingConfiguration` を変更することはできません。既存の `chunkingConfiguration` を使用してリクエストを送信するか、データソースを再作成してください。

1. (オプション) データソースの `dataDeletionPolicy` を変更します。`DELETE` の場合は、ナレッジベースまたはデータソースリソースの削除時に、データソースから取り込んでベクトル埋め込みに変換したデータをすべて削除できます。このフラグは、AWS アカウントが削除された場合は無視されます。`RETAIN` の場合は、ナレッジベースまたはデータソースリソースの削除時に、データソースから取り込んでベクトル埋め込みに変換したデータをすべて残すことができます。ナレッジベースまたはデータソースリソースを削除しても、**ベクトルストア自体は削除されません**。

1. [Amazon Bedrock エージェントのビルドタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)で [StartIngestionJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StartIngestionJob.html) リクエストを送信し、`dataSourceId` と `knowledgeBaseId` を指定します。

------

# Amazon Bedrock ナレッジベースからデータソースを削除する
<a name="kb-ds-delete"></a>

不要になったデータソースや、ナレッジベースで使わなくなったデータソースは、削除できます。

任意の方法のタブを選択し、その手順に従います。

------
#### [ Console ]

**データソースを削除するには**

1. Amazon Bedrock コンソールを使用するためのアクセス許可を持つ IAM ID を使用して、AWS マネジメントコンソールにサインインします。Amazon Bedrock コンソール ([https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)) を開きます。

1. 左側のナビゲーションペインで **[ナレッジベース]** を選択します。

1. **[データソース]** セクションで、削除対象のデータソースの横にあるラジオボタンを選択します。

1. **[削除]** を選択します。

1. データソースが正常に削除されると、緑色のバナーが表示されます。
**注記**  
データソースのデータ削除ポリシーは、「Delete」(データソースの削除時にすべてのデータを削除するが、**ベクトルストア自体は削除しない**) または「Retain」(データソースの削除時にすべてのデータを残す) のいずれかに設定されています。データソースまたはナレッジベースを削除しても、**ベクトルストア自体は削除されません**。データソースのデータ削除ポリシーが「Delete」に設定されている場合、設定やベクトルストアへのアクセスに問題があるせいで、データソースが削除プロセスを正常に完了できない可能性があります。「DELETE\$1UNSUCCESSFUL」ステータスを確認すると、データソースを正常に削除できなかった理由がわかります。

------
#### [ API ]

ナレッジベースからデータソースを削除するには、`dataSourceId` と `knowledgeBaseId` を指定して [DeleteDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DeletDataSource.html) リクエストを送信します。

**注記**  
データソースのデータ削除ポリシーは、`DELETE` (データソースの削除時にすべてのデータを削除するが、**ベクトルストア自体は削除しない**) または `RETAIN` (データソースの削除時にすべてのデータを残す) のいずれかに設定されています。データソースまたはナレッジベースを削除しても、**ベクトルストア自体は削除されません**。データソースのデータ削除ポリシーが `DELETE` に設定されている場合、設定やベクトルストアへのアクセスに問題があるせいで、データソースが削除プロセスを正常に完了できない可能性があります。データソースのステータスが `DELETE_UNSUCCESSFUL` の場合は、データソースを正常に削除できなかった理由を `failureReasons` で確認できます。

------

# マルチモーダルコンテンツのナレッジベースを構築する
<a name="kb-multimodal"></a>

Amazon Bedrock ナレッジベースは、イメージ、オーディオ、ビデオファイルなどのマルチモーダルコンテンツをサポートしています。イメージをクエリとして使用して検索したり、視覚的に類似したコンテンツを取得したり、従来のテキストドキュメントとともにマルチメディアファイルを処理したりできます。この機能を使用すると、組織全体に保存されているスタンドアロンイメージ、オーディオ録音、ビデオファイルなど、さまざまなデータ型からインサイトを抽出できます。

Amazon Bedrock ナレッジベースを使用すると、テキスト、ビジュアル、オーディオコンテンツにインデックスを作成して情報を取得できます。組織は、イメージを使用して製品カタログを検索したり、トレーニングビデオで特定の瞬間を検索したり、カスタマーサポートの通話録音から関連セグメントを取得したりできます。

**リージョナルな可用性**  
マルチモーダル処理アプローチは、リージョンごとに可用性が異なります。詳細については、「[リージョナルな可用性](kb-multimodal-choose-approach.md#kb-multimodal-processing-regions)」を参照してください。

## 特徴と機能
<a name="kb-multimodal-features"></a>

マルチモーダルナレッジベースには、次の主要な機能があります。

**イメージベースのクエリ**  
Nova マルチモーダル埋め込みを使用する場合、イメージを検索クエリとして送信して視覚的に類似したコンテンツを見つけます。製品マッチング、視覚的類似度検索、画像取得をサポートします。

**オーディオコンテンツの取得**  
テキストクエリを使用してオーディオファイルを検索します。タイムスタンプ参照を使用して、録画から特定のセグメントを取得します。音声文字起こしにより、会議、通話、ポッドキャストなど、音声コンテンツ全体でテキストベースの検索が可能になります。

**動画セグメントの抽出**  
テキストクエリを使用して、ビデオファイル内の特定の瞬間を見つけます。正確なタイムスタンプでビデオセグメントを取得します。

**クロスモーダル検索**  
テキストドキュメント、イメージ、オーディオ、ビデオなど、さまざまなデータ型を検索します。元の形式に関係なく、関連するコンテンツを取得します。

**タイムスタンプ付きのソース参照**  
取得結果には、オーディオとビデオの時間メタデータを含む元のファイルへの参照が含まれます。マルチメディアコンテンツ内の関連セグメントへの正確なナビゲーションを有効にします。

**柔軟な処理オプション**  
音声ベースのコンテンツの視覚的な類似性を得るにはネイティブマルチモーダル埋め込み、またはテキスト変換を選択します。コンテンツ特性とアプリケーション要件に基づいて処理アプローチを設定します。

## 仕組み
<a name="kb-multimodal-how-it-works"></a>

マルチモーダルナレッジベースは、さまざまなデータ型を適切に処理するマルチステージパイプラインを通じてコンテンツを処理および取得します。

****取り込みと処理****

1. **データソース接続:** ナレッジベースを、テキストドキュメント、イメージ、オーディオファイル、ビデオファイルを含む Amazon S3 バケットまたはカスタムデータソースに接続します。

1. **ファイルタイプの検出:** システムは各ファイルタイプを拡張機能で識別し、適切な処理パイプラインにルーティングします。

1. **コンテンツ処理:** 設定に応じて、ファイルは 2 つの方法のいずれかを使用して処理されます。
   + **Nova マルチモーダル埋め込み:** ビジュアルとオーディオの類似度マッチングのためにネイティブ形式を保持します。画像、オーディオ、ビデオは、テキストに変換せずに直接埋め込まれます。
   + **Bedrock Data Automation (BDA):** マルチメディアをテキスト表現に変換します。音声は自動音声認識 (ASR) を使用して文字起こしされ、ビデオはシーンの概要とトランスクリプトを抽出するように処理され、画像は OCR とビジュアルコンテンツ抽出されます。

1. **埋め込み生成:** 選択した埋め込みモデルを使用して、処理されたコンテンツがベクトル埋め込みに変換されます。これらの埋め込みはセマンティックな意味をキャプチャし、類似度ベースの取得を可能にします。

1. **ベクトルストレージ:** 埋め込みは、ファイル参照、タイムスタンプ (オーディオおよびビデオ用）、コンテンツタイプ情報などのメタデータとともに、設定されたベクトルデータベースに保存されます。

1. **マルチモーダルストレージ (オプション):** 設定されている場合、元のマルチメディアファイルは信頼できる取得のために専用のマルチモーダルストレージ先にコピーされ、ソースファイルが変更または削除された場合でも可用性が確保されます。

****クエリと取得****

1. **クエリ処理:** ユーザークエリ (テキストまたはイメージ) は、取り込み中に使用されるのと同じ埋め込みモデルを使用して埋め込みに変換されます。

1. **類似度検索:** クエリ埋め込みをベクトルデータベース内の保存済み埋め込みと比較し、最も関連性の高いコンテンツを特定します。

1. **結果の取得:** システムは、次のようなメタデータを含む一致するコンテンツを返します。
   + ソース URI (元のファイルの場所)
   + タイムスタンプメタデータ (オーディオセグメントとビデオセグメント用)
   + コンテンツタイプとモダリティ情報

1. **レスポンス生成 (オプション):** `RetrieveAndGenerate`リクエストの場合、取得したコンテンツは基盤モデルに渡され、コンテキストに関連するテキストレスポンスが生成されます。これは、BDA 処理を使用する場合、またはナレッジベースにテキストコンテンツが含まれている場合にサポートされます。

**重要**  
システムは、オーディオおよびビデオコンテンツのタイムスタンプメタデータを含む完全なファイルへの参照を返します。アプリケーションは、指定された開始タイムスタンプと終了タイムスタンプに基づいて、特定のセグメントを抽出して再生する必要があります。はこれを自動的に AWS マネジメントコンソール 処理します。

**Topics**
+ [特徴と機能](#kb-multimodal-features)
+ [仕組み](#kb-multimodal-how-it-works)
+ [マルチモーダル処理アプローチの選択](kb-multimodal-choose-approach.md)
+ [マルチモーダルナレッジベースの前提条件](kb-multimodal-prerequisites.md)
+ [マルチモーダルコンテンツのナレッジベースを作成する](kb-multimodal-create.md)
+ [データソースの追加と取り込みの開始](kb-multimodal-add-data-source-and-ingest.md)
+ [マルチモーダルナレッジベースのテストとクエリ](kb-multimodal-test-and-query.md)
+ [マルチモーダルナレッジベースのトラブルシューティング](kb-multimodal-troubleshooting.md)

# マルチモーダル処理アプローチの選択
<a name="kb-multimodal-choose-approach"></a>

Amazon Bedrock ナレッジベースには、マルチモーダルコンテンツを処理するための 2 つのアプローチがあります。視覚的類似性検索用の Nova Multimodal Embeddings と、マルチメディアコンテンツのテキストベースの処理用の Bedrock Data Automation (BDA) です。入力モダリティが画像ではあるが、オーディオやビデオではない場合、基盤モデルをパーサーとして使用することもできます。

このセクションでは、マルチモーダルコンテンツの処理アプローチとして Nova マルチモーダル埋め込みと BDA を使用する方法について説明します。各アプローチは、さまざまなユースケースとクエリパターンに合わせて最適化されています。

**Topics**
+ [マルチモーダル処理アプローチ](#kb-multimodal-processing-approach)
+ [リージョナルな可用性](#kb-multimodal-processing-regions)
+ [コンテンツタイプ別の選択基準](#kb-multimodal-selection-guidance)
+ [サポートされているファイルタイプとデータソース](#kb-multimodal-supported-files)
+ [機能と制限](#kb-multimodal-approach-details)

## マルチモーダル処理アプローチ
<a name="kb-multimodal-processing-approach"></a>

次の表は、マルチモーダルコンテンツを処理するための Nova マルチモーダル埋め込みと BDA の比較を示しています。


**処理アプローチの比較**  

| 特性 | Nova マルチモーダル埋め込み | Bedrock データオートメーション (BDA) | 
| --- | --- | --- | 
| 処理方法 | 中間テキスト変換なしで埋め込みを生成します | マルチメディアをテキストに変換し、埋め込みを作成します | 
| サポートされているクエリタイプ | テキストクエリまたはイメージクエリ | テキストクエリのみ | 
| 主なユースケース | 視覚的類似度検索、製品マッチング、画像検出 | 音声文字起こし、テキストベースの検索、コンテンツ分析 | 
| RAG 機能 | テキストコンテンツのみに制限 | フルRetrieveAndGenerateサポート | 
| ストレージの要件 | マルチモーダルストレージの宛先が必要 | マルチモーダルストレージの送信先はオプションですが、指定しない場合、テキストデータのみが BDA によって処理されます。テキスト以外の入力の場合は、マルチモーダルストレージの送信先を指定する必要があります。 | 

## リージョナルな可用性
<a name="kb-multimodal-processing-regions"></a>


**リージョナルな可用性**  

| Nova マルチモーダル埋め込み | Bedrock データオートメーション (BDA) | 
| --- | --- | 
| 米国東部 (バージニア北部) のみ |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/kb-multimodal-choose-approach.html)  | 

## コンテンツタイプ別の選択基準
<a name="kb-multimodal-selection-guidance"></a>

この決定マトリックスを使用して、コンテンツとユースケースの要件に基づいて適切な処理アプローチを選択します。

**注記**  
Amazon Nova マルチモーダル埋め込みモデルで BDA パーサーを使用する場合、埋め込みモデルはテキスト埋め込みモデルのように動作します。マルチモーダルコンテンツを使用する場合は、ユースケースに応じて最適な結果を得るために、いずれかの処理方法を使用します。


**コンテンツタイプ別の処理アプローチの推奨事項**  

| コンテンツタイプ | Nova マルチモーダル埋め込み | Bedrock データオートメーション (BDA) | 
| --- | --- | --- | 
| 製品カタログとイメージ | 推奨 - 視覚的類似度マッチングと画像ベースのクエリを有効にします | 制限あり - OCR を介してのみテキストを抽出します | 
| 会議の録音と通話 | 音声コンテンツを意味のある方法で処理できない | 推奨 - 完全な音声文字起こしと検索可能なテキストを提供します | 
| トレーニングビデオと教育ビデオ | 部分的 - ビジュアルコンテンツを処理しますが、音声を見逃します | 推奨 - 音声トランスクリプトとビジュアルの説明の両方をキャプチャします | 
| カスタマーサポートの記録 | 非推奨 - 音声コンテンツを効果的に処理できない | 推奨 - 完全な検索可能な会話トランスクリプトを作成します | 
| テクニカルダイアグラムとグラフ | 推奨 - 視覚的な類似性とパターンマッチングには優れていません | 制限あり - テキストラベルを抽出しますが、視覚的な関係を見逃します | 

## サポートされているファイルタイプとデータソース
<a name="kb-multimodal-supported-files"></a>

サポートされているファイルタイプは、選択した処理方法によって異なります。


**処理アプローチでサポートされるファイルタイプ**  

| ファイルタイプ | Nova マルチモーダル埋め込み | Bedrock データオートメーション (BDA) | 
| --- | --- | --- | 
| イメージ | .png、.jpg、.jpeg、.gif、.webp | .png、.jpg、.jpeg | 
|  音声 | .mp3、.ogg、.wav | .amr、.flac、.m4a、.mp3、.ogg、.wav | 
| 動画 | .mp4、.mov、.mkv、.webm、.flv、.mpeg、.mpg、.wmv、.3gp | .mp4、.mov | 
| ドキュメント | テキストとして処理されます | .pdf (および画像からのテキスト抽出) | 

****サポートされているデータソース****  
マルチモーダルコンテンツは、次のデータソースでサポートされています。
+ **Amazon S3:** すべてのマルチモーダルファイルタイプのフルサポート
+ **カスタムデータソース:** 最大 10MB の base64 エンコードされたインラインコンテンツのサポート

**重要**  
マルチモーダル取り出しは現在、Amazon S3 データソースでのみ使用できます。他のデータソース (Confluence、SharePoint、Salesforce、Web Crawler) は、取り込み中にマルチモーダルファイルを処理しません。これらのファイルはスキップされ、マルチモーダルクエリでは使用できません。

## 機能と制限
<a name="kb-multimodal-approach-details"></a>

**Nova マルチモーダル埋め込み**  
**主な機能:**  
+ ネイティブのマルチモーダル処理により、元のコンテンツ形式が保持され、視覚的類似性の最適なマッチングを実現
+ イメージベースのクエリを使用すると、ユーザーはイメージをアップロードし、視覚的に類似したコンテンツを見つけることができます。
+ 製品カタログ、ビジュアル検索、コンテンツ検出アプリケーションの優れたパフォーマンス
**機能制限:**  
+ 音声またはオーディオコンテンツを効果的に処理できない - 音声情報は検索できません
+ `RetrieveAndGenerate` テキストコンテンツのみに制限された および 再ランク付け機能
+ 専用のマルチモーダルストレージの宛先の設定が必要です

**Bedrock データオートメーション (BDA)**  
**主な機能:**  
+ 自動音声認識 (ASR) テクノロジーを使用した包括的な音声文字起こし
+ ビジュアルコンテンツ分析は、イメージとビデオシーンの説明テキストを生成します。
+ フル`RetrieveAndGenerate`サポートにより、すべてのコンテンツで完全な RAG 機能を実現
+ テキストベースの検索は、すべてのマルチメディアコンテンツタイプで一貫して機能します。
**機能制限:**  
+ Nova マルチモーダル埋め込みなしで使用した場合、イメージベースのクエリはサポートされません - すべての検索でテキスト入力を使用する必要があります
+ 視覚的類似度マッチングまたはimage-to-image検索を実行できない
+ コンテンツ変換要件により取り込み処理時間が長くなる
+ Nova マルチモーダル埋め込みと比較して、サポートするマルチメディアファイル形式が少ない

**音声コンテンツ処理**  
Nova マルチモーダル埋め込みでは、音声ファイルまたはビデオファイル内の音声コンテンツを効果的に処理できません。マルチメディアコンテンツにユーザーが検索する必要がある重要な話者情報が含まれている場合は、完全な文字起こしと検索可能性を確保するために BDA アプローチを選択します。

# マルチモーダルナレッジベースの前提条件
<a name="kb-multimodal-prerequisites"></a>

Amazon Bedrock マルチモーダルナレッジベースでは、イメージ、オーディオ、ビデオコンテンツを処理するために、標準ナレッジベース以外の追加セットアップが必要です。特定の前提条件は、選択した処理アプローチとストレージ設定によって異なります。

マルチモーダルナレッジベースを作成する前に、次の前提条件を満たす必要があります。

**Topics**
+ [前提条件](#kb-multimodal-prerequisites)
+ [マルチモーダルコンテンツのアクセス許可](#kb-multimodal-prerequisites-permissions)

## 前提条件
<a name="kb-multimodal-prerequisites"></a>

1. データが[サポートされているデータソースコネクタ](data-source-connectors.md)内にあることを確認します。マルチモーダルコンテンツは、Amazon S3 およびカスタムデータソースでのみサポートされています。

1. (オプション) [独自のサポートされているベクトルストアを設定します](knowledge-base-setup.md)。 AWS マネジメントコンソール を使用して自動的にベクトルストアを作成する場合は、このステップはスキップできます。

1. マルチモーダル処理の適切なアクセス許可を持つカスタム AWS Identity and Access Management (IAM) [サービスロール](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-role)を作成します。詳細については、「[マルチモーダルコンテンツのアクセス許可](#kb-multimodal-prerequisites-permissions)」を参照してください。
**注記**  
コンソールを使用している場合、Amazon Bedrock ナレッジベースによってアクセス許可が自動的に設定されます。

1. (オプション) [ナレッジベースリソースの暗号化](encryption-kb.md) のステップに従って、追加のセキュリティ設定を行います。

1. BDA で処理されたコンテンツで [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) API オペレーションを使用する場合は、「」の手順に従って、使用するリージョンで使用するモデルへのアクセスをリクエストします[Access Amazon Bedrock foundation models](model-access.md)。

## マルチモーダルコンテンツのアクセス許可
<a name="kb-multimodal-prerequisites-permissions"></a>

マルチモーダルナレッジベースには、標準のナレッジベースのアクセス許可を超える追加のアクセス許可が必要です。特定のアクセス許可は、選択した処理アプローチとストレージ設定によって異なります。

マルチモーダル処理アプローチに基づいて、次のアクセス許可を設定する必要があります。
+ **Nova Multimodal Embeddings アクセス許可:** Nova Multimodal Embeddings を使用して直接ビジュアルとオーディオの類似度を検索する場合に必要です。非同期モデル呼び出しとマルチモーダルストレージアクセスのアクセス許可が含まれます。
+ **Bedrock Data Automation (BDA) アクセス許可:** BDA を使用してマルチモーダルコンテンツをテキスト表現に変換するときに必要です。データ自動化の呼び出しとステータスモニタリングのアクセス許可が含まれます。
+ **カスタマーマネージド KMS キーのアクセス許可:** BDA 処理でカスタマーマネージド暗号化キーを使用する場合に必要です。キーオペレーションと権限作成のアクセス許可が含まれます。
+ **マルチモーダルストレージのアクセス許可:** マルチモーダルストレージの送信先を設定するときに必要です。ストレージバケットの標準 S3 アクセス許可が含まれます。

詳細な IAM ポリシーとstep-by-stepアクセス許可設定については、「」を参照してください[マルチモーダルコンテンツのアクセス許可](kb-permissions.md#kb-permissions-multimodal)。

### ストレージの要件
<a name="kb-multimodal-storage-requirements"></a>

**Nova マルチモーダル埋め込み**  
**必須:** マルチモーダルストレージの送信先を設定する必要があります。この送信先は、取得するマルチメディアファイルのコピーを保存し、ソースファイルが変更または削除された場合でも可用性を確保します。

**Bedrock データオートメーション (BDA)**  
**オプション:** マルチモーダルストレージバケットを設定して信頼性を高め、実行時にファイルを取得することもできます。ただし、BDA はコンテンツをテキストに変換するため、必須ではありません。  
マルチモーダルストレージバケットを設定せずに BDA パーサーを選択すると、テキスト解析のみが使用可能になります。BDA (画像、オーディオ、ビデオの処理) でマルチモーダル解析機能を活用するには、マルチモーダルストレージの送信先を設定する必要があります。

**マルチモーダルストレージの宛先設定**  
マルチモーダルストレージの送信先を設定するときは、次の点を考慮してください。
+ **別のバケットを使用する (推奨):** データソースとマルチモーダルストレージの宛先に異なる Amazon S3 バケットを設定します。これにより、最も簡単なセットアップが可能になり、潜在的な競合を回避できます。
+ **同じバケットを使用する場合:** どのコンテンツを取り込むかを制限する包含プレフィックスをデータソースに指定する必要があります。これにより、抽出されたメディアファイルの再取り込みを防ぐことができます。
+ **「aws/」プレフィックスを避ける:** データソースとマルチモーダルストレージの両方の宛先に同じバケットを使用する場合は、「aws/」で始まる包含プレフィックスを使用しないでください。このパスは抽出されたメディアストレージ用に予約されているためです。

# マルチモーダルコンテンツのナレッジベースを作成する
<a name="kb-multimodal-create"></a>

マルチモーダルナレッジベースは、 コンソールまたは API を使用して作成できます。マルチモーダル処理のニーズに基づいてアプローチを選択します。

**重要**  
マルチモーダルサポートは、非構造化データソースでナレッジベースを作成する場合にのみ使用できます。構造化データソースは、マルチモーダルコンテンツ処理をサポートしていません。

------
#### [ Console ]

**コンソールからマルチモーダルナレッジベースを作成するには**

1. Amazon Bedrock コンソールを使用するアクセス許可を持つ IAM ID AWS マネジメントコンソール を使用して にサインインします。Amazon Bedrock コンソール ([https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)) を開きます。

1. 左側のナビゲーションペインで **[ナレッジベース]** を選択します。

1. **[ナレッジベース]** セクションで **[作成]** を選択し、**[ベクトルストアを含むナレッジベース]** を選択します。

1. (オプション) **[ナレッジベースの詳細]** で、デフォルトの名前を変更し、ナレッジベースの説明を入力します。

1. **[IAM アクセス許可]** で、IAM ロールを選択します。このロールは、他の必要な AWS のサービスにアクセスするためのアクセス許可を Amazon Bedrock に付与します。Amazon Bedrock にサービスロールを作成させるか、独自のカスタムロールを使用することを選択できます。マルチモーダルアクセス許可については、「」を参照してください[マルチモーダルコンテンツのアクセス許可](kb-permissions.md#kb-permissions-multimodal)。

1. データソースとして **Amazon S3** を選択し、次**へ** を選択してデータソースを設定します。
**注記**  
ナレッジベースの作成中に最大 5 つの Amazon S3 データソースを追加できます。ナレッジベースの作成後にデータソースを追加できます。

1. マルチモーダルコンテンツを含むバケットの **S3 URI **を指定し、必要に応じて包含プレフィックスを設定します。包含プレフィックスは、取り込むコンテンツを制限するために使用できるフォルダパスです。

1. **チャンキングと解析の設定**で、解析戦略を選択します。
   + **Bedrock デフォルトパーサー:** テキストのみのコンテンツ処理に推奨されます。このパーサーは、マルチモーダルファイルを無視しながら、一般的なテキスト形式を処理します。Word、Excel、HTML、Markdown、TXT、CSV ファイルなどのテキストドキュメントをサポートします。
   + **Bedrock Data Automation (BDA):** マルチモーダルコンテンツを検索可能なテキスト表現に変換します。PDFs、画像、オーディオ、ビデオファイルを処理してテキストを抽出し、ビジュアルコンテンツの説明を生成し、オーディオとビデオコンテンツの文字起こしを作成します。
   + **基盤モデルパーサー:** 複雑なドキュメント構造の高度な解析機能を提供します。PDFs、画像、構造化ドキュメント、テーブル、視覚的に豊富なコンテンツを処理してテキストを抽出し、視覚的要素の説明を生成します。

1. **次**へ を選択し、埋め込みモデルとマルチモーダル処理アプローチを選択します。
   + **Amazon Nova マルチモーダル埋め込み V1.0:** **Amazon Nova 埋め込み V1.0** を選択して、視覚的およびオーディオの直接類似度検索を行います。コンテンツのセグメント化方法を制御するために、オーディオとビデオのチャンク期間 (1～30 秒、デフォルトは 5 秒) を設定します。
**注記**  
オーディオおよびビデオチャンキングパラメータは、データソースレベルではなく埋め込みモデルレベルで設定されます。非マルチモーダル埋め込みモデルにこの設定を指定すると、検証例外が発生します。コンテンツのセグメント化方法を制御するには、オーディオとビデオのチャンク期間 (デフォルト: 5 秒、範囲: 1～30 秒) を設定します。チャンクが短いほど正確なコンテンツの取得が可能になり、チャンクが長いほどセマンティックコンテキストが保持されます。
**重要**  
Amazon Nova 埋め込み v1.0 では、音声/ビデオデータ内の音声コンテンツの検索のサポートが制限されています。音声をサポートする必要がある場合は、Bedrock Data Automation をパーサーとして使用します。
   + **BDA を使用したテキスト埋め込み:** BDA 処理を使用するときにテキスト埋め込みモデル (Titan Text Embeddings v2 など) を選択します。テキスト埋め込みモデルは、取得をテキストのみのコンテンツに制限しますが、パーサーとして Amazon Bedrock Data Automation または Foundation Model を選択することで、マルチモーダル取得を有効にすることができます。
**注記**  
Nova マルチモーダル埋め込みで BDA パーサーを使用する場合、Amazon Bedrock ナレッジベースは最初に BDA 解析を行います。この場合、BDA はイメージ、オーディオ、ビデオをテキスト表現に変換するため、埋め込みモデルはイメージ、オーディオ、ビデオのネイティブマルチモーダル埋め込みを生成しません。

1. Nova マルチモーダル埋め込みを使用する場合は、処理されたファイルを取得用に保存する Amazon S3 バケットを指定して、**マルチモーダルストレージの送信先**を設定します。ナレッジベースは、簡単にアクセスできるように .bda が作成されたフォルダを持つ単一の Amazon S3 バケットに解析されたイメージを保存します。
**ライフサイクルポリシーの推奨事項**  
Nova マルチモーダル埋め込みを使用する場合、Amazon Bedrock はマルチモーダルストレージの宛先に一時的なデータを保存し、処理の完了後に削除を試みます。適切なクリーンアップを確保するために、一時的なデータパスにライフサイクルポリシーを適用することをお勧めします。詳細な手順については、「[Amazon S3 ライフサイクルポリシーによる一時的なデータの管理](kb-multimodal-troubleshooting.md#kb-multimodal-lifecycle-policy)」を参照してください。

1. **ベクトルデータベース**セクションで、ベクトルストアメソッドを選択し、選択した埋め込みモデルに基づいて適切なディメンションを設定します。

1. **Next** を選択し、ナレッジベース設定の詳細を確認し、Create **knowledge base **を選択します。

------
#### [ CLI ]

**を使用してマルチモーダルナレッジベースを作成するには AWS CLI**
+ Nova マルチモーダル埋め込みを使用してナレッジベースを作成します。[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateKnowledgeBase.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateKnowledgeBase.html) リクエストを送信します。

  ```
  aws bedrock-agent create-knowledge-base \
  --cli-input-json file://kb-nova-mme.json
  ```

  の内容 `kb-nova-mme.json` (プレースホルダー値を特定の設定に置き換えます）。

  ```
  {
      "knowledgeBaseConfiguration": {
          "vectorKnowledgeBaseConfiguration": {
              "embeddingModelArn": "arn:aws:bedrock:us-east-1::foundation-model/amazon.nova-2-multimodal-embeddings-v1:0",
              "supplementalDataStorageConfiguration": {
                  "storageLocations": [
                      {
                          "type": "S3",
                          "s3Location": {
                              "uri": "s3://<multimodal-storage-bucket>/"
                          }
                      }
                  ]
              }
          },
          "type": "VECTOR"
      },
      "storageConfiguration": {
          "opensearchServerlessConfiguration": {
              "collectionArn": "arn:aws:aoss:us-east-1:<account-id>:collection/<collection-id>",
              "vectorIndexName": "<index-name>",
              "fieldMapping": {
                  "vectorField": "<vector-field>",
                  "textField": "<text-field>",
                  "metadataField": "<metadata-field>"
              }
          },
          "type": "OPENSEARCH_SERVERLESS"
      },
      "name": "<knowledge-base-name>",
      "description": "Multimodal knowledge base with Nova Multimodal Embeddings"
  }
  ```

  次のプレースホルダーを置き換えます。
  + `<multimodal-storage-bucket>` - マルチモーダルファイルを保存するための S3 バケット
  + `<account-id>` - AWS アカウント ID
  + `<collection-id>` - OpenSearch Serverless コレクション ID
  + `<index-name>` - OpenSearch コレクションのベクトルインデックス名 (選択した埋め込みモデルに適したディメンションで設定)
  + `<vector-field>` - 埋め込みを保存するためのフィールド名
  + `<text-field>` - テキストコンテンツを保存するためのフィールド名
  + `<metadata-field>` - メタデータを保存するためのフィールド名

------

# データソースの追加と取り込みの開始
<a name="kb-multimodal-add-data-source-and-ingest"></a>

ナレッジベースを作成したら、マルチモーダルコンテンツを含むデータソースを追加し、コンテンツの処理とインデックス作成のための取り込みジョブを開始します。

**データソースの削除動作**  
削除ポリシーが RETAIN に設定されているデータソースを削除すると、取り込まれたコンテンツはベクトルデータベースに残り、取得に引き続き使用されます。コンテンツは、データソースを削除した後にナレッジベースを明示的に同期した場合にのみ削除されます。デフォルトの DELETE ポリシーを持つデータソースは、削除中にベクトルデータベースとサプリメンタルストレージからコンテンツを自動的に削除します。これにより、ソースファイルが変更または削除されてもナレッジベースは引き続き機能しますが、削除されたデータソースの RETAIN ポリシーが検索結果に寄与する可能性があることに注意してください。

## データソースを追加する
<a name="kb-multimodal-add-data-source"></a>

マルチモーダルコンテンツを含むデータソースをナレッジベースに追加します。

**重要**  
BDA データソースの場合: オーディオ/ビデオサポートの起動後に作成されたデータソースのみがオーディオファイルとビデオファイルを処理します。この機能の起動前に作成された既存の BDA データソースは、引き続きオーディオファイルとビデオファイルをスキップします。既存のナレッジベースのオーディオ/ビデオ処理を有効にするには、新しいデータソースを作成します。

------
#### [ Console ]

**コンソールからデータソースを追加するには**

1. ナレッジベースの詳細ページから、**データソースの追加**を選択します。

1. データソースタイプとして **Amazon S3** を選択します。

1. データソースの名前と説明を入力します。

1. バケット URI と包含プレフィックスを指定して、マルチモーダルファイルを含む Amazon S3 の場所を設定します。

1. **コンテンツの解析とチャンキング**で、解析とチャンキングの方法を設定します。
**注記**  
テキスト埋め込みモデルは、取得をテキストのみのコンテンツに制限しますが、Amazon Bedrock Data Automation (オーディオ、ビデオ、イメージの場合) または Foundation Model をパーサー (イメージの場合) として選択することで、テキストによるマルチモーダル取得を有効にすることができます。

   3 つの解析戦略から選択します。
   + **Bedrock デフォルトパーサー:** テキストのみの解析に推奨されます。このパーサーはマルチモーダルコンテンツを無視し、マルチモーダル埋め込みモデルで一般的に使用されます。
   + **Bedrock Data Automation as parser:** マルチモーダルコンテンツをテキストとして解析して保存し、PDFs、画像、オーディオ、ビデオファイルをサポートします。
   + **パーサーとしての基盤モデル:** イメージと構造化ドキュメントの高度な解析を提供し、PDFs、イメージ、テーブル、視覚的に豊富なドキュメントをサポートします。

1. **データソースの追加** を選択してデータソースを作成します。

------
#### [ CLI ]

**を使用してデータソースを追加するには AWS CLI**
+ マルチモーダルコンテンツのデータソースを作成します。[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html) リクエストを送信します。

  ```
  aws bedrock-agent create-data-source \
  --knowledge-base-id <knowledge-base-id> \
  --cli-input-json file://ds-multimodal.json
  ```

  Nova マルチモーダル埋め込み (特別な解析設定は不要) の場合は、次の`ds-multimodal.json`コンテンツを使用します。

  ```
  {
      "dataSourceConfiguration": {
          "type": "S3",
          "s3Configuration": {
              "bucketArn": "arn:aws:s3:::<data-source-bucket>",
              "inclusionPrefixes": ["<folder-path>"]
          }
      },
      "name": "multimodal_data_source",
      "description": "Data source with multimodal content",
      "dataDeletionPolicy": "RETAIN"
  }
  ```

  BDA 解析アプローチの場合は、次の設定を使用します。

  ```
  {
      "dataSourceConfiguration": {
          "type": "S3",
          "s3Configuration": {
              "bucketArn": "arn:aws:s3:::<data-source-bucket>",
              "inclusionPrefixes": ["<folder-path>"]
          }
      },
      "name": "multimodal_data_source_bda",
      "description": "Data source with BDA multimodal parsing",
      "dataDeletionPolicy": "RETAIN",
      "vectorIngestionConfiguration": {
          "parsingConfiguration": {
              "bedrockDataAutomationConfiguration": {
                  "parsingModality": "MULTIMODAL"
              }
          }
      }
  }
  ```

------

## 取り込みジョブを開始する
<a name="kb-multimodal-start-ingestion"></a>

データソースを追加したら、取り込みジョブを開始して、マルチモーダルコンテンツを処理してインデックスを作成します。

------
#### [ Console ]

**コンソールから取り込みを開始するには**

1. データソースの詳細ページで、**同期**を選択します。

1. データソースページで同期ステータスをモニタリングします。マルチモーダルファイルのサイズと数によっては、取り込みに数分かかる場合があります。

1. 同期が正常に完了すると、マルチモーダルコンテンツにクエリを実行する準備が整います。

------
#### [ CLI ]

**を使用して取り込みを開始するには AWS CLI**

1. 取り込みジョブを開始します。[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StartIngestionJob.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StartIngestionJob.html) リクエストを送信します。

   ```
   aws bedrock-agent start-ingestion-job \
   --knowledge-base-id <knowledge-base-id> \
   --data-source-id <data-source-id>
   ```

   プレースホルダーを以下に置き換えます。
   + `<knowledge-base-id>` - ナレッジベース作成の ID
   + `<data-source-id>` - データソース作成からの ID

1. を使用して取り込みジョブのステータスをモニタリングします[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_GetIngestionJob.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_GetIngestionJob.html)。

------

## データソースの削除後の再同期
<a name="kb-multimodal-resync-after-deletion"></a>

データソースを削除し、そのコンテンツをナレッジベースから削除する場合は、ナレッジベースを明示的に再同期する必要があります。

**削除されたデータソースコンテンツを削除するには**

1. コンソールまたは [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DeleteDataSource.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DeleteDataSource.html) API を使用してデータソースを削除します。

1. 残りのデータソースで新しい取り込みジョブを開始して、ベクトルデータベースを更新し、削除されたデータソースからコンテンツを削除します。

1. 削除されたデータソースからクエリが結果を返さないことを確認します。

**注記**  
再同期しない場合、削除されたデータソースのコンテンツは、データソースが存在しない場合でも検索結果に引き続き表示されます。

# マルチモーダルナレッジベースのテストとクエリ
<a name="kb-multimodal-test-and-query"></a>

マルチモーダルコンテンツを取り込んだら、コンソールまたは API を使用してナレッジベースをテストおよびクエリできます。使用可能なクエリタイプは、選択した処理アプローチによって異なります。

------
#### [ Console ]

**コンソールからナレッジベースをテストするには**

1. ナレッジベースの詳細ページから、**ナレッジベースのテスト**セクションにスクロールします。

1. クエリタイプを選択します。
   + **標準取得のみ:** 単一のナレッジベースのデータソースから情報をクエリおよび取得します。
   + **取得とレスポンスの生成:** 単一のナレッジベースをクエリし、基盤モデルを使用して取得した結果に基づいてレスポンスを生成します。
**注記**  
マルチモーダルコンテンツがある場合は、取得とレスポンスの生成に BDA パーサーを使用する必要があります。

1. 必要に応じて追加のオプションを設定します。
   + **ソースチャンク:** 返されるソースチャンクの最大数を指定します。
   + **検索タイプ:** 検索タイプを選択してクエリ戦略をカスタマイズする
   + **メタデータフィルター:** フィルターを適用して検索結果を絞り込む
   + **ガードレール:** 既存のガードレールを選択するか、新しいガードレールを作成します。

1. マルチモーダルコンテンツを検索するには、テキストクエリを入力するか、イメージをアップロードします (Nova マルチモーダル埋め込みのみ）。アタッチメントボタンを使用して、視覚的類似度検索用の画像をアップロードします。

1. 次のような結果を確認します。
   + 関連性スコアを持つコンテンツチャンクを取得しました
   + ソースファイルのリファレンスとタイムスタンプ (オーディオ/ビデオ用)
   + ファイルタイプと処理情報を含むメタデータ
   + マルチメディアコンテンツの場合、取得したタイムスタンプに基づく自動セグメント配置による再生コントロール

------
#### [ API ]

次の例は、Amazon Bedrock エージェントランタイム API を使用してマルチモーダルナレッジベースをプログラムでクエリする方法を示しています。

**テキストクエリの例**  
テキスト入力を使用して検索します。

```
aws bedrock-agent-runtime retrieve \
--knowledge-base-id <knowledge-base-id> \
--retrieval-query text="robot automation in manufacturing"
```

**イメージクエリの例 (Nova マルチモーダル埋め込みのみ)**  
アップロードされたイメージを使用して検索します。

```
{
    "knowledgeBaseId": "<knowledge-base-id>",
    "retrievalQuery": {
        "imageQuery": {
            "inlineContent": {
                "mimeType": "image/jpeg",
                "data": "<base64-encoded-image>"
            }
        }
    }
}
```

------

## サポートされているクエリタイプ
<a name="kb-multimodal-query-types"></a>

**テキストクエリ**  
Nova マルチモーダル埋め込みと BDA アプローチの両方でサポートされています。自然言語テキストを使用して検索し、すべてのメディアタイプに関連するコンテンツを検索します。

**イメージクエリ**  
Nova マルチモーダル埋め込みでのみサポートされます。イメージをアップロードして、ナレッジベースで視覚的に類似したコンテンツを見つけます。

## レスポンスメタデータについて
<a name="kb-multimodal-response-metadata"></a>

マルチモーダルクエリレスポンスには、マルチメディアコンテンツの追加メタデータが含まれます。

**ソース属性**  
信頼できるアクセスのための元のファイルの場所 (sourceUri) とマルチモーダルストレージの場所 (supplementalUri)

**一時メタデータ**  
オーディオセグメントとビデオセグメントのタイムスタンプを開始および終了し、関連するコンテンツへの正確なナビゲーションを可能にする

**コンテンツタイプ情報**  
アプリケーションがさまざまなコンテンツタイプを適切に処理できるように、ファイル形式、処理方法、モダリティインジケータ

**ベクトルデータベースメタデータ構造**  
マルチモーダルコンテンツが処理および保存されると、ベクトルデータベースで次のメタデータ構造が使用されます。
+ **テキストフィールド:** Nova マルチモーダル埋め込みで処理されたマルチメディアファイルの場合、コンテンツはテキストではなくネイティブマルチメディアとして埋め込まれるため、このフィールドには空の文字列が含まれます。
+ **メタデータフィールド:** ソースの詳細と関連するコンテンツ参照を含む構造化情報が含まれます。

  ```
  {
    "source": {
      "sourceType": "S3",
      "s3Location": {
        "uri": "s3://source-bucket/path/to/file.mp4"
      }
    },
    "relatedContent": [{
      "type": "S3",
      "s3Location": {
        "uri": "s3://multimodal-storage-bucket/processed/file.mp4"
      }
    }]
  }
  ```
+ **自動作成されたフィールド:** フィルタリングと識別のための追加フィールド:
  + `x-amz-bedrock-kb-source-uri`: フィルタリングオペレーションの元のソース URI
  + `x-amz-bedrock-kb-data-source-id`: コンテンツオリジンを追跡するためのデータソース識別子
  + `x-amz-bedrock-kb-chunk-start-time-in-millis`: オーディオセグメントとビデオセグメントのタイムスタンプをミリ秒単位で開始する
  + `x-amz-bedrock-kb-chunk-end-time-in-millis`: オーディオセグメントとビデオセグメントのタイムスタンプをミリ秒単位で終了する
  + `x-amz-bedrock-kb-source-file-mime-type`: ソースファイルの MIME タイプ
  + `x-amz-bedrock-kb-source-file-modality`: ソースファイルのモダリティ (テキスト、イメージ、オーディオ、ビデオ)

**重要**  
アプリケーションは、提供されたタイムスタンプを使用して、オーディオファイルとビデオファイルから特定のセグメントを抽出および再生する必要があります。ナレッジベースは、事前にセグメント化されたクリップではなく、完全なファイルへの参照を返します。

# マルチモーダルナレッジベースのトラブルシューティング
<a name="kb-multimodal-troubleshooting"></a>

このセクションでは、マルチモーダルナレッジベースを使用する際に発生する一般的な問題を解決するためのガイダンスを提供します。トラブルシューティング情報は、一般的な制限事項、一般的なエラーシナリオとその原因と解決策、パフォーマンス最適化の推奨事項別に整理されています。この情報を使用して、マルチモーダルコンテンツのセットアップ、取り込み、またはクエリ中の問題を診断し、解決します。

## 一般的な制限事項
<a name="kb-multimodal-general-limitations"></a>

マルチモーダルナレッジベースを使用する場合は、以下の現在の制限に注意してください。
+ **ファイルサイズ制限:** ビデオファイルあたり最大 1.5 GB、オーディオファイルあたり最大 1 GB (Nova マルチモーダル埋め込み）、またはファイルあたり最大 1.5 GB (BDA)
+ **取り込みジョブあたりのファイル:** ジョブあたり最大 15,000 ファイル (Nova マルチモーダル埋め込み) またはジョブあたり最大 1,000 ファイル (BDA)
+ **クエリ制限:** クエリごとに最大 1 つのイメージ
+ **データソースの制限:** Amazon S3 とカスタムデータソースのみがマルチモーダルコンテンツをサポート
+ **BDA チャンキングの制限:** Bedrock Data Automation で固定サイズのチャンキングを使用する場合、オーバーラップ率の設定はオーディオコンテンツとビデオコンテンツには適用されません。
+ **BDA 同時ジョブの制限:** デフォルトの制限は 20 の同時 BDA ジョブです。大規模な処理の場合は、サービスクォータの引き上げをリクエストすることを検討してください。
+ **リランク付けモデルの制限:** リランク付けモデルはマルチモーダルコンテンツではサポートされていません
+ **要約の制限:** テキスト以外のコンテンツを含む検索レスポンスの要約はサポートされていません
+ **クエリ入力の制限:** テキストとイメージの両方を含む入力は現在サポートされていません。テキストクエリまたはイメージクエリのいずれかを使用できますが、両方を同時に使用することはできません。
+ **ガードレールイメージコンテンツフィルター:** イメージコンテンツフィルターが設定されたガードレールでイメージクエリを使用する場合、入力イメージはガードレールに対して評価され、設定されたフィルターしきい値に違反するとブロックされる可能性があります。
+ **入力とタイプの不一致:** デフォルトでは、タイプが指定されていない場合、入力はテキストと見なされます。テキスト以外のモダリティを使用する場合は、正しいタイプを指定する必要があります

## 一般的なエラーと解決策
<a name="kb-multimodal-common-errors"></a>

マルチモーダルナレッジベースで問題が発生した場合は、以下の一般的なシナリオを確認してください。

**イメージクエリを使用する場合の 4xx エラー**  
**原因:** テキストのみの埋め込みモデルまたは BDA 処理されたナレッジベースでイメージクエリを使用しようとする。  
**解決策:** イメージクエリをサポートするナレッジベースを作成するときは、Amazon Nova マルチモーダル埋め込みを選択します。

**RAG がマルチモーダルコンテンツで 4xx エラーを返す**  
**原因:** マルチモーダルコンテンツと Amazon Nova マルチモーダル埋め込みモデルのみを含むナレッジベース`RetrieveAndGenerate`で を使用する。  
**解決策:** RAG 機能に BDA パーサーを使用するか、ナレッジベースにテキストコンテンツが含まれていることを確認します。

**マルチモーダルストレージの宛先で必要なエラー**  
**原因:** マルチモーダルストレージの送信先を設定せずに Nova マルチモーダル埋め込みを使用する。  
**解決策:** Nova マルチモーダル埋め込みを使用する場合は、マルチモーダルストレージの宛先を指定します。

**データソースとマルチモーダルストレージが同じ S3 バケットを使用する**  
**原因:** データソースとマルチモーダルストレージの送信先を、適切な包含プレフィックスなしで同じ Amazon S3 バケットを使用するように設定します。  
**解決策:** データソースとマルチモーダルストレージに別々のバケットを使用するか、抽出されたメディアファイルを再取り込みしないように包含プレフィックスを設定します。

**包含プレフィックスは「aws/」で始めることはできません**  
**原因:** データソースとマルチモーダルストレージの宛先が同じ Amazon S3 バケットを共有する場合、「aws/」で始まる包含プレフィックスを使用します。  
**解決策:** 別の包含プレフィックスを指定します。「aws/」パスは抽出されたメディアストレージ用に予約されており、処理されたコンテンツの再取り込みを避けるために包含プレフィックスとして使用することはできません。

**BDA 取り込みはマルチモーダルコンテンツをスキップします**  
**原因:** ナレッジベースがマルチモーダルストレージの宛先なしで作成され、BDA データソースがマルチモーダルコンテンツで追加されました。  
**解決策:** オーディオ、ビデオ、イメージファイルの BDA 処理を有効にするように設定されたマルチモーダルストレージ先を使用してナレッジベースを再作成します。

**マルチモーダル埋め込みモデルなしで作成されたナレッジベース**  
**原因:** ナレッジベースはテキストのみの埋め込みモデルで作成され、マルチモーダル機能が制限されました。  
**解決策:** Nova マルチモーダル埋め込みを使用して新しいナレッジベースを作成し、ネイティブのマルチモーダル処理と画像ベースのクエリを有効にします。

## Amazon S3 ライフサイクルポリシーによる一時的なデータの管理
<a name="kb-multimodal-lifecycle-policy"></a>

Nova マルチモーダル埋め込みを使用する場合、Amazon Bedrock はマルチモーダルストレージの宛先に一時的なデータを保存し、処理の完了後に削除を試みます。一時的なデータパスにライフサイクルポリシーを適用して、適切に期限切れであることを確認することをお勧めします。

------
#### [ Console ]

**コンソールを使用してライフサイクルルールを作成するには**

1. [Amazon S3 コンソール](https://console.aws.amazon.com/s3)を開きます。

1. ナレッジベース用に設定したマルチモーダルストレージの宛先に移動します。

1. **管理**タブを選択し、**ライフサイクルルールの作成**を選択します。

1. **ライフサイクルルール名**には、 と入力します**Transient Data Deletion**。

1. **フィルタータイプ**で、**1 つ以上のフィルターを使用してこのルールの範囲を制限する**を選択します。

1. **プレフィックス** に、ナレッジベースとデータソースの一時的なデータパスを入力します。

   次のプレフィックスのプレースホルダー値を実際の識別子に置き換えます。

   ```
   aws/bedrock/knowledge_bases/knowledge-base-id/data-source-id/transient_data
   ```
**重要**  
ライフサイクルポリシーをバケット全体または「aws/」プレフィックスに適用しないでください。マルチモーダルコンテンツが削除され、取得が失敗します。上記の特定の一時データパスのみを使用してください。

1. **ライフサイクルルールアクション**で、**オブジェクトの最新バージョンを期限切れ**にするを選択します。

1. **オブジェクト作成後の日数**には、 と入力します**1**。

1. **[‬ルールを作成]‭** を選択します。

------
#### [ AWS CLI ]

**を使用してライフサイクルルールを作成するには AWS CLI**

1. 次の内容`lifecycle-policy.json`で という名前の JSON ファイルを作成します。

   プレースホルダー値を実際の識別子に置き換えます。
   + *knowledge-base-id* - ナレッジベース識別子
   + *data-source-id* - データソース識別子

   ```
   {
       "Rules": [
           {
               "ID": "TransientDataDeletion",
               "Status": "Enabled",
               "Filter": {
                   "Prefix": "aws/bedrock/knowledge_bases/knowledge-base-id/data-source-id/transient_data"
               },
               "Expiration": {
                   "Days": 1
               }
           }
       ]
   }
   ```

1. ライフサイクルポリシーをバケットに適用します。*your-multimodal-storage-bucket* を実際のバケット名に置き換えます。

   ```
   aws s3api put-bucket-lifecycle-configuration \
       --bucket your-multimodal-storage-bucket \
       --lifecycle-configuration file://lifecycle-policy.json
   ```

1. ライフサイクルポリシーが適用されていることを確認します。

   ```
   aws s3api get-bucket-lifecycle-configuration \
       --bucket your-multimodal-storage-bucket
   ```

------

Amazon S3 ライフサイクルポリシーの詳細については、「Amazon *Amazon S3ユーザーガイド*」の[「オブジェクトのライフサイクルの管理](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html)」を参照してください。

## パフォーマンスに関する考慮事項
<a name="kb-multimodal-performance-considerations"></a>

マルチモーダルナレッジベースで最適なパフォーマンスを得るには、次の要素を考慮してください。
+ **処理時間:** コンテンツ変換により BDA 処理に時間がかかる
+ **クエリレイテンシー:** イメージクエリはテキストクエリよりもレイテンシーが高くなる可能性があります
+ **チャンキング時間:** オーディオ/ビデオチャンク時間が長いほど処理時間が長くなりますが、精度が向上する可能性があります

# 構造化データストアに接続してナレッジベースを構築する
<a name="knowledge-base-build-structured"></a>

Amazon Bedrock ナレッジベースを使用すると、事前定義されたスキーマに準拠したデータを含む構造化データストアに接続できます。構造化データの例には、テーブルとデータベースなどがあります。Amazon Bedrock ナレッジベースは、サポートされている構造化データストアからデータを抽出するのに適した言語に、ユーザークエリを変換できます。その後、変換されたクエリを使用して、クエリに関連するデータを取得し、適切なレスポンスを生成できます。これにより、既存の構造化データを別の形式に変換したり、独自の SQL クエリを生成したりすることなく、直接使用できます。

ナレッジベースの設定後は、[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) オペレーションを使用してナレッジベースからデータを取得するクエリを送信したり、[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) オペレーションを使用して取得したデータからレスポンスを生成したりできます。これらのオペレーションでは、ユーザーのクエリをナレッジベースに接続された構造化データストアに適したクエリに背後で変換します。

[GenerateQuery](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GenerateQuery.html) API オペレーションを使用して、データの取得に依存せずに、独立してクエリを変換することもできます。このオペレーションは、自然言語クエリを、クエリ対象のデータソースに適した SQL クエリに変換します。このオペレーションは単独で使用することも、ワークフローに挿入することもできます。

ナレッジベースを構造化データストアに接続するための前提条件とプロセスについて確認するには、各トピックを選択してください。

**Topics**
+ [構造化データストアを使用してナレッジベースを作成するためのクエリエンジンとアクセス許可を設定します](knowledge-base-prereq-structured.md)
+ [構造化データストアに接続してナレッジベースを作成する](knowledge-base-structured-create.md)
+ [構造化データストアを Amazon Bedrock ナレッジベースと同期する](kb-data-source-structured-sync-ingest.md)

# 構造化データストアを使用してナレッジベースを作成するためのクエリエンジンとアクセス許可を設定します
<a name="knowledge-base-prereq-structured"></a>

このトピックでは、ナレッジベースを構造化データストアに接続するときに必要なアクセス許可について説明します。Amazon Bedrock ナレッジベースを構造化データストアに接続する場合は、前提条件を満たす必要があります。一般的なアクセス許可要件を満たすには、「[ユーザーまたはロールがナレッジベースを作成および管理するためのアクセス許可を設定する](knowledge-base-prereq-permissions-general.md)」を参照してください。

**重要**  
任意の SQL クエリを実行すると、Text-to-SQL アプリケーションにとってセキュリティリスクになる可能性があります。制限されたロール、読み取り専用データベース、サンドボックスの使用など、必要に応じて予防措置を講じることをお勧めします。

Amazon Bedrock ナレッジベースは、データストアにクエリを実行するためのクエリエンジンとして Amazon Redshift を使用します。クエリエンジンは構造化データストアからメタデータにアクセスし、そのメタデータを使用して SQL クエリを生成します。Amazon Redshift は、SQL を使用してデータウェアハウス、データベース、データレイク全体の構造化データを分析するデータウェアハウスサービスです。

## Amazon Redshift クエリエンジンを作成する
<a name="kb-query-engine-setup-create"></a>

ユースケースに応じて Amazon Redshift Serverless または Amazon Redshift Provisioned を使用して、データウェアハウスのワークグループまたはクラスターに接続できます。Amazon Redshift エンジンがクエリできる基盤となるデータは、Amazon Redshift クラスターにネイティブに保存されるデータでも、デフォルト AWS Glue Data Catalog (Amazon S3 など) にあるデータでもかまいません。

クエリエンジンを既に作成している場合は、この前提条件をスキップできます。それ以外の場合は、次の手順を実行して Amazon Redshift Provisioned または Amazon Redshift Serverless のクエリエンジンを設定します。

**Amazon Redshift Provisioned でクエリエンジンを設定するには**

1. 「Amazon Redshift 入門ガイド」の「[ステップ 1: サンプルの Amazon Redshift クラスターを作成する](https://docs.aws.amazon.com/redshift/latest/gsg/new-user.html#rs-gsg-launch-sample-cluster)」に記載されている手順に従います。

1. クラスター ID を書き留めます。

1. (オプション) Amazon Redshift Provisioned クラスター の詳細については、「Amazon Redshift 管理ガイド」の「[Amazon Redshift でプロビジョニングされたクラスター](https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html)」を参照してください。

**Amazon Redshift Serverless でクエリエンジンを設定するには**

1. 「Amazon Redshift 入門ガイド」の「[Amazon Redshift Serverless によるデータウェアハウスの作成](https://docs.aws.amazon.com/redshift/latest/gsg/new-user-serverless.html#serverless-console-resource-creation)」の設定手順のみに従い、デフォルト設定で設定します。

1. ワークグループ ARN を書き留めます。

1. (オプション) Amazon Redshift Serverless ワークグループの詳細については、「Amazon Redshift 管理ガイド」の「[ワークグループと名前空間](https://docs.aws.amazon.com/redshift/latest/mgmt/serverless-workgroup-namespace.html)」を参照してください。

## Amazon Redshift クエリエンジンのアクセス許可を設定する
<a name="kb-query-engine-setup-redshift-permissions"></a>

選択した Amazon Redshift クエリエンジンに応じて、特定のアクセス許可を設定できます。設定するアクセス許可は、認証方法によって異なります。次の表は、さまざまなクエリエンジンに使用できる認証方法を示しています。


****  

| 認証方法 | Amazon Redshift Provisioned | Amazon Redshift Serverless | 
| --- | --- | --- | 
| IAM | ![\[Green circular icon with a white checkmark symbol inside.\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/icons/icon-yes.png) あり | ![\[Green circular icon with a white checkmark symbol inside.\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/icons/icon-yes.png) あり | 
| データベースユーザー名 | ![\[Green circular icon with a white checkmark symbol inside.\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/icons/icon-yes.png) あり | ![\[Red circular icon with an X symbol, indicating cancellation or denial.\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/icons/icon-no.png)なし | 
| AWS Secrets Manager | ![\[Green circular icon with a white checkmark symbol inside.\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/icons/icon-yes.png) あり | ![\[Green circular icon with a white checkmark symbol inside.\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/icons/icon-yes.png) あり | 

Amazon Bedrock ナレッジベースは、[サービスロール](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)を使用してナレッジベースを構造化データストアに接続し、これらのデータストアからデータを取得して、ユーザークエリとデータストアの構造に基づいて SQL クエリを生成します。

**注記**  
を使用してナレッジベース AWS マネジメントコンソール を作成する場合は、この前提条件をスキップできます。コンソールは、適切なアクセス許可を持つ Amazon Bedrock ナレッジベースサービスロールを作成します。

適切なアクセス許可を持つカスタム IAM サービスロールを作成するには、「[AWS のサービスにアクセス許可を委任するロールを作成する](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)」の手順に従い、[信頼関係](kb-permissions.md#kb-permissions-trust) で定義されている信頼関係をアタッチします。

次に、ナレッジベースが Amazon Redshift クエリエンジンとデータベースにアクセスするためのアクセス許可を追加します。ユースケースに該当するセクションを展開します。

### クエリエンジンは Amazon Redshift Provisioned である
<a name="w2aac28c10c27c13c11c15b1"></a>

カスタムサービスロールに次のポリシーをアタッチして、データにアクセスし、それを使用してクエリを生成できるようにします。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "RedshiftDataAPIStatementPermissions",
            "Effect": "Allow",
            "Action": [
                "redshift-data:GetStatementResult",
                "redshift-data:DescribeStatement",
                "redshift-data:CancelStatement"
            ],
            "Resource": [
                "*"
            ],
            "Condition": {
                "StringEquals": {
                    "redshift-data:statement-owner-iam-userid": "${aws:userid}"
                }
            }
        },
        {
            "Sid": "RedshiftDataAPIExecutePermissions",
            "Effect": "Allow",
            "Action": [
                "redshift-data:ExecuteStatement"
            ],
            "Resource": [
                "arn:aws:redshift:us-east-1:123456789012:cluster:${Cluster}"
            ]
        },
        {
            "Sid": "SqlWorkbenchAccess",
            "Effect": "Allow",
            "Action": [
                "sqlworkbench:GetSqlRecommendations",
                "sqlworkbench:PutSqlGenerationContext",
                "sqlworkbench:GetSqlGenerationContext",
                "sqlworkbench:DeleteSqlGenerationContext"
            ],
            "Resource": "*"
        },
        {
            "Sid": "GenerateQueryAccess",
            "Effect": "Allow",
            "Action": [
                "bedrock:GenerateQuery"
            ],
            "Resource": "*"
        }
    ]
}
```

------

また、サービスロールがクエリエンジンに対して認証できるようにするアクセス許可を追加する必要があります。セクションを展開すると、その方法のアクセス許可が表示されます。

------
#### [ IAM ]

サービスロールが IAM を使用して Amazon Redshift Provisioned クエリエンジンに対して認証できるようにするには、カスタムサービスロールに次のポリシーをアタッチします。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "GetCredentialsWithFederatedIAMCredentials",
            "Effect": "Allow",
            "Action": "redshift:GetClusterCredentialsWithIAM",
            "Resource": [
                "arn:aws:redshift:us-east-1:123456789012:dbname:Cluster/database"
            ]
        }
    ]
}
```

------

------
#### [ Database user ]

Amazon Redshift データベースユーザーとして認証するには、サービスロールに次のポリシーをアタッチします。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "GetCredentialsWithClusterCredentials",
            "Effect": "Allow",
            "Action": [
                "redshift:GetClusterCredentials"
            ],
            "Resource": [
                "arn:aws:redshift:us-east-1:123456789012:dbuser:${cluster}/${dbuser}",
                "arn:aws:redshift:us-east-1:123456789012:dbname:${cluster}/${database}"
            ]
        }
    ]
}
```

------

------
#### [ AWS Secrets Manager ]

サービスロールが AWS Secrets Manager シークレットを使用して Amazon Redshift でプロビジョニングされたクエリエンジンに対して認証できるようにするには、次の手順を実行します。
+ 次のポリシーをロールにアタッチします。

  ```
  {
      "Version": "2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "GetSecretPermissions",
              "Effect": "Allow",
              "Action": [
                  "secretsmanager:GetSecretValue"
              ],
              "Resource": [
                  "arn:aws:secretsmanager:${region}:${account}:secret:${secretName}"
              ]
          }
      ]
  }
  ```

------

### クエリエンジンが Amazon Redshift Serverless である
<a name="w2aac28c10c27c13c11c15b3"></a>

アタッチするアクセス許可は、認証方法によって異なります。セクションを展開して、方法のアクセス許可を表示します。

------
#### [ IAM ]

サービスロールが IAM を使用して Amazon Redshift Serverless クエリエンジンに対して認証できるようにするには、カスタムサービスロールに次のポリシーをアタッチします。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "RedshiftServerlessGetCredentials",
            "Effect": "Allow",
            "Action": "redshift-serverless:GetCredentials",
            "Resource": [
                "arn:aws:redshift-serverless:us-east-1:123456789012:workgroup/WorkgroupId"
            ]
        }
    ]
}
```

------

------
#### [ AWS Secrets Manager ]

サービスロールが AWS Secrets Manager シークレットを使用して Amazon Redshift でプロビジョニングされたクエリエンジンに対して認証できるようにするには、次の手順を実行します。
+ 次のポリシーをロールにアタッチします。

  ```
  {
      "Version": "2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "GetSecretPermissions",
              "Effect": "Allow",
              "Action": [
                  "secretsmanager:GetSecretValue"
              ],
              "Resource": [
                  "arn:aws:secretsmanager:${region}:${account}:secret:${secretName}"
              ]
          }
      ]
  }
  ```

------

## データストアへのアクセスをナレッジベースサービスロールに許可する
<a name="knowledge-base-prereq-structured-db-access"></a>

次の[サポートされている構造化データストア](knowledge-base-structured-create.md)のいずれかにデータが保存されていることを確認します。
+ Amazon Redshift
+ AWS Glue Data Catalog (AWS Lake Formation)

次の表は、データストアに応じて、クエリエンジンで使用できる認証方法をまとめたものです。


****  

| 認証方法 | Amazon Redshift | AWS Glue Data Catalog (AWS Lake Formation) | 
| --- | --- | --- | 
| IAM | ![\[Green circular icon with a white checkmark symbol inside.\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/icons/icon-yes.png) あり | ![\[Green circular icon with a white checkmark symbol inside.\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/icons/icon-yes.png) あり | 
| データベースユーザー名 | ![\[Green circular icon with a white checkmark symbol inside.\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/icons/icon-yes.png) あり | ![\[Red circular icon with an X symbol, indicating cancellation or denial.\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/icons/icon-no.png)なし | 
| AWS Secrets Manager | ![\[Green circular icon with a white checkmark symbol inside.\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/icons/icon-yes.png) あり | ![\[Red circular icon with an X symbol, indicating cancellation or denial.\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/icons/icon-no.png)なし | 

Amazon Bedrock ナレッジベースサービスロールがデータストアにアクセスし、それに基づいてクエリを生成するためのアクセス許可を設定する方法については、データストアがあるサービスに対応するセクションを展開します。

### Amazon Redshift
<a name="w2aac28c10c27c13c13c13b1"></a>

Amazon Bedrock ナレッジベースサービスロールに Amazon Redshift データベースへのアクセスを許可するには、[Amazon Redshift query editor v2](https://docs.aws.amazon.com/redshift/latest/mgmt/query-editor-v2.html) を使用して、次の SQL コマンドを実行します。

1. (IAM で認証し、ユーザーがデータベース用にまだ作成されていない場合) 次のコマンドを実行します。このコマンドでは、[CREATE USER](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_USER.html) を使用してデータベースユーザーを作成し、IAM による認証を許可します。*\$1\$1service-role\$1* を、作成したカスタム Amazon Bedrock ナレッジベースサービスロールの名前に置き換えます。

   ```
   CREATE USER "IAMR:${service-role}" WITH PASSWORD DISABLE;
   ```
**重要**  
コンソールで作成した Amazon Bedrock ナレッジベースサービスロールを使用し、このステップを実行する前に[データストアを同期](kb-data-source-structured-sync-ingest.md)すると、ユーザーは自動的に作成されますが、データストアへのアクセス許可がユーザーに付与されていないため、同期は失敗します。同期する前に、次のステップを実行する必要があります。

1. [GRANT](https://docs.aws.amazon.com/redshift/latest/dg/r_GRANT.html) コマンドを実行して、データベースから情報を取得するアクセス許可を ID に付与します。

------
#### [ IAM ]

   ```
   GRANT SELECT ON ALL TABLES IN SCHEMA ${schemaName} TO "IAMR:${serviceRole}";
   ```

------
#### [ Database user ]

   ```
   GRANT SELECT ON ALL TABLES IN SCHEMA ${schemaName} TO "${dbUser}";
   ```

------
#### [ AWS Secrets Manager username ]

   ```
   GRANT SELECT ON ALL TABLES IN SCHEMA ${schemaName} TO "${secretsUsername}";
   ```

------
**重要**  
`CREATE`、`UPDATE`、または `DELETE` アクセスを付与しないでください。これらのアクションを付与すると、データの意図しない変更につながる可能性があります。

   アクセス可能なテーブルをよりきめ細かく制御するには、`ALL TABLES` の特定のテーブル名を *\$1\$1schemaName\$1**\$1\$1tableName\$1* という表記に置き換えます。この表記の詳細については、「[データベース間でのクエリ](https://docs.aws.amazon.com/redshift/latest/dg/cross-database-overview.html)」の「**オブジェクトをクエリします**」セクションを参照してください。

------
#### [ IAM ]

   ```
   GRANT SELECT ON ${schemaName}.${tableName} TO "IAMR:${serviceRole}";
   ```

------
#### [ Database user ]

   ```
   GRANT SELECT ON ${schemaName}.${tableName} TO "${dbUser}";
   ```

------
#### [ AWS Secrets Manager username ]

   ```
   GRANT SELECT ON ${schemaName}.${tableName} TO "${secretsUsername}";
   ```

------

1. Redshift データベースで新しいスキーマを作成した場合は、次のコマンドを実行して、新しいスキーマに対する ID アクセス許可を付与します。

   ```
   GRANT USAGE ON SCHEMA ${schemaName} TO "IAMR:${serviceRole}";
   ```

### AWS Glue Data Catalog
<a name="w2aac28c10c27c13c13c13b3"></a>

Amazon Bedrock ナレッジベースサービスロールに AWS Glue Data Catalog データストアへのアクセスを許可するには、[Amazon Redshift クエリエディタ v2](https://docs.aws.amazon.com/redshift/latest/mgmt/query-editor-v2.html) を使用して、次の SQL コマンドを実行します。

1. 次のコマンドを実行します。このコマンドは [CREATE USER](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_USER.html) を使用してデータベースユーザーを作成し、IAM による認証を許可します。*\$1\$1service-role\$1* を、作成したカスタム Amazon Bedrock ナレッジベースサービスロールの名前に置き換えます。

   ```
   CREATE USER "IAMR:${service-role}" WITH PASSWORD DISABLE;
   ```
**重要**  
コンソールで作成した Amazon Bedrock ナレッジベースサービスロールを使用し、このステップを実行する前に[データストアを同期](kb-data-source-structured-sync-ingest.md)すると、ユーザーは自動的に作成されますが、データストアへのアクセス許可がユーザーに付与されていないため、同期は失敗します。同期する前に、次のステップを実行する必要があります。

1. 次の [GRANT](https://docs.aws.amazon.com/redshift/latest/dg/r_GRANT.html) コマンドを実行して、データベースから情報を取得するアクセス許可をサービスロールに付与します。

   ```
   GRANT USAGE ON DATABASE awsdatacatalog TO "IAMR:${serviceRole}";
   ```
**重要**  
`CREATE`、`UPDATE`、または `DELETE` アクセスを付与しないでください。これらのアクションを付与すると、データの意図しない変更につながる可能性があります。

1.  AWS Glue Data Catalog データベースへのアクセスを許可するには、サービスロールに次のアクセス許可をアタッチします。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "VisualEditor0",
               "Effect": "Allow",
               "Action": [
                   "glue:GetDatabases",
                   "glue:GetDatabase",
                   "glue:GetTables",
                   "glue:GetTable",
                   "glue:GetPartitions",
                   "glue:GetPartition",
                   "glue:SearchTables"
               ],
               "Resource": [
                   "arn:aws:glue:us-east-1:123456789012:table/${DatabaseName}/${TableName}",
                   "arn:aws:glue:us-east-1:123456789012:database/${DatabaseName}",
                   "arn:aws:glue:us-east-1:123456789012:catalog"
               ]
           }
       ]
   }
   ```

------

1. 以下を実行して AWS Lake Formation 、 (Lake Formation とその Amazon Redshift との関係の詳細については、[「Redshift のデータソース](https://docs.aws.amazon.com/redshift/latest/dg/copy-parameters-data-source.html)」を参照) を通じてサービスロールにアクセス許可を付与します。

   1. にサインインし AWS マネジメントコンソール、[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/) で Lake Formation コンソールを開きます。

   1. 左側のナビゲーションペインで **[データのアクセス許可]**を選択します。

   1. Amazon Bedrock ナレッジベースに使用しているサービスロールにアクセス許可を付与します。

   1. データベースとテーブルの **Describe** アクセス許可と **Select** アクセス許可を付与します。

1. 使用するデータソースによっては AWS Glue Data Catalog、そのデータソースにアクセスするためのアクセス許可を追加する必要がある場合があります (詳細については、[AWS Glue 「他の への依存関係 AWS のサービス](https://docs.aws.amazon.com/glue/latest/dg/dependency-on-other-services.html)」を参照してください）。例えば、データソースが Amazon S3 の場所にある場合は、上記のポリシーに次のステートメントを追加する必要があります。

   ```
   {
       "Sid": "Statement1",
       "Effect": "Allow",
       "Action": [
           "s3:ListBucket",
           "s3:GetObject"
       ],
       "Resource": [
           "arn:aws:s3:::${BucketName}",
           "arn:aws:s3:::${BucketName}/*"
       ]
   }
   ```

1. (オプション) AWS KMS を使用して Amazon S3 または のデータを暗号化する場合は AWS Glue Data Catalog、KMS キーのデータを復号化するためのアクセス許可をロールに追加する必要があります。

   ```
   {
       "Action": [
           "kms:Decrypt"
       ],
       "Resource": [
           "arn:aws:kms:${Region}:${Account}:key/{KmsId}",
           "arn:aws:kms:${Region}:${Account}:key/{KmsId}"
       ],
       "Effect": "Allow"
   }
   ```

# 構造化データストアに接続してナレッジベースを作成する
<a name="knowledge-base-structured-create"></a>

ナレッジベースを構造化データストアに接続するには、次のコンポーネントを指定します。
+ 

**クエリエンジンの設定**  
生成された SQL クエリを実行するコンピューティングサービスの設定。クエリエンジンは、自然言語ユーザークエリを、データストアからデータを抽出するために使用できる SQL クエリに変換するために使用されます。クエリエンジンとして Amazon Redshift を選択できます。この設定を選択するときは、以下を指定する必要があります。
  + 選択したクエリエンジンに応じたクラスター ID やワークグループ ARN などのコンピューティング接続メタデータ。
  + クエリエンジンを使用するための認証方法。適切なアクセス許可を持つ IAM サービスロール、クエリエンジンデータベースユーザー、またはデータベース認証情報にリンクされた AWS Secrets Manager シークレットを使用できます。
+ 

**ストレージ設定**  
データを含むデータストアの設定。Amazon Redshift Provisioned または Amazon Redshift Serverless に接続し、Amazon Redshift または をデータストア AWS Glue Data Catalog として使用できます。
+ 

**(オプション) クエリ設定**  
SQL 生成の精度を向上させるために、オプションのクエリ設定を使用できます。
  + **最大クエリ時間** ー クエリがタイムアウトするまでの時間。
  + **説明** ー テーブルまたは列に関するメタデータまたは補足情報を提供します。テーブルや列の説明、使用に関する注意事項、その他の属性を含めることができます。説明を追加すると、テーブルまたは列の構造に関する追加のコンテキストと情報が提供され、SQL クエリの生成が改善されます。
  + **インクルージョンと除外** ー SQL 生成に含めたり除外したりするテーブルまたは列のセットを指定します。このフィールドは、SQL クエリの範囲を、使用可能なテーブルまたは列の定義済みのサブセットに制限する場合に重要です。このオプションは、不要なテーブルまたは列の参照を減らすことで、生成プロセスを最適化するのに役立ちます。

    インクルージョンを指定すると、他のすべてのテーブルと列は無視されます。除外を指定すると、指定したテーブルと列は無視されます。
**注記**  
インクルージョンと除外はガードレールの代わりにはならず、モデルの精度を向上させることのみを目的としています。
  + **厳選されたクエリ** ー 定義済みの質問と回答の例のセット。質問は自然言語クエリ (NLQ) として記述され、回答は対応する SQL クエリです。これらの例は、生成すべきクエリの種類の例を示することで、SQL 生成プロセスに役立ちます。これらは、生成 SQL 出力の精度と関連性を向上させるための参照ポイントとして機能します。

自分のユースケースに対応するセクションを展開してください。

## コンソールを使用する
<a name="knowledge-base-structured-create-console"></a>

を使用して構造化データストアに接続するには AWS マネジメントコンソール、次の手順を実行します。

1. Amazon Bedrock コンソールを使用するアクセス許可を持つ IAM ID AWS マネジメントコンソール を使用して にサインインします。Amazon Bedrock コンソール ([https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)) を開きます。

1. 左側のナビゲーションペインで **[ナレッジベース]** を選択します。

1. **[ナレッジベース]** セクションで、**[作成]** を選択し、次に **[構造化データストアを含むナレッジベース]**を選択します。

1. ナレッジベースに以下の詳細を設定します。

   1. (オプション) ナレッジベースのデフォルトの名前を変更し、説明を入力します。

   1. データストアからデータを取得するために使用するクエリエンジンを選択します。

   1. このナレッジベースを作成して管理するための適切なアクセス許可を持つ IAM サービスロールを選択します。Amazon Bedrock にサービスロールを作成させることも、作成したカスタムロールを選択することもできます。カスタムロールの作成方法の詳細については、「[構造化データストアを使用してナレッジベースを作成するためのクエリエンジンとアクセス許可を設定します](knowledge-base-prereq-structured.md)」を参照してください。

   1. (オプション) ナレッジベースに関連付けるタグを追加します。詳細については、「[Amazon Bedrock リソースにタグ付け](tagging.md)」を参照してください。

   1. **[Next]** (次へ) を選択します。

1. クエリエンジンを設定します。

   1. クラスターまたはワークグループを作成したサービスを選択します。次に、使用するクラスターまたはワークグループを選択します。

   1. 認証方法を選択し、必要なフィールドに入力します。

   1. メタデータを保存するデータストアを選択します。次に、データベースの名前を選択または入力します。

   1. (オプション) 必要に応じてクエリ設定を変更します。さまざまな設定の詳細については、このトピックの冒頭を参照してください。

   1. [**次へ**] を選択します。

1. ナレッジベース設定を確認し、必要に応じてセクションを編集します。確定してナレッジベースを作成します。

## API を使用する
<a name="knowledge-base-structured-create-api"></a>

Amazon Bedrock API を使用して構造化データストアに接続するには、次の一般的なリクエスト本文を使用して、[Amazon Bedrock エージェントのビルドタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)を使用して [CreateKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateKnowledgeBase.html) リクエストを送信します。

```
{
    "name": "string",
    "roleArn": "string",
    "knowledgeBaseConfiguration": {
        "type": "SQL",
        "sqlKnowledgeBaseConfiguration": [SqlKnowledgeBaseConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_SqlKnowledgeBaseConfiguration.html)
    },
    "description": "string",
    "clientToken": "string",
    "tags": {
        "string": "string"
    }
}
```

以下のフィールドが必要です。


****  

| フィールド | 基本的な説明 | 
| --- | --- | 
| 名前 | ナレッジベースの名前 | 
| roleArn | 適切なアクセス許可を持つ[ナレッジベースサービスロール](kb-permissions.md)。コンソールを使用して、適切なアクセス許可を持つサービスロールを自動的に作成できます。 | 
| knowledgeBaseConfiguration | ナレッジベースの設定が含まれます。構造化データベースの場合は、SQL を type と指定し、sqlKnowledgeBaseConfiguration フィールドを含めます。 | 

次のフィールドはオプションです。


****  

| フィールド | 使用アイテム | 
| --- | --- | 
| 説明 | ナレッジベースの説明を含めるため。 | 
| clientToken | API リクエストが 1 回だけ完了するようにします。詳細については、「[べき等性の確保](https://docs.aws.amazon.com/ec2/latest/devguide/ec2-api-idempotency.html)」を参照してください。 | 
| タグ | タグをエイリアスに関連付ける場合に指定します。詳細については、「[Amazon Bedrock リソースにタグ付け](tagging.md)」を参照してください。 | 

`SQLKnowledgeBaseConfiguration` は、使用するクエリエンジンによって異なります。Amazon Redshift の場合、`type` フィールドを `REDSHIFT` と指定し、[RedshiftConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_RedshiftConfiguration.html) にマッピングされる `redshiftConfiguration` フィールドを含めます。[RedshiftConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_RedshiftConfiguration.html) では、次のフィールドを設定します。

### queryEngineConfiguration
<a name="w2aac28c10c27c15b9b3c17b1"></a>

以下のタイプのクエリエンジンを設定できます。

#### Amazon Redshift Provisioned
<a name="w2aac28c10c27c15b9b3c17b1b5b1"></a>

Amazon Redshift データベースが専用コンピューティングノードにプロビジョニングされている場合、`queryEngineConfiguration` フィールドの値は、次の形式の [RedshiftQueryEngineConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_RedshiftQueryEngineConfiguration.html) である必要があります。

```
{
    "type": "PROVISIONED",
    "provisionedConfiguration": {
        "clusterIdentifier": "string",
        "authConfiguration": [RedshiftProvisionedAuthConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_RedshiftProvisionedAuthConfiguration.html)
    },
}
```

`clusterIdentifier` フィールドにクラスターの ID を指定します。[RedshiftProvisionedAuthConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_RedshiftProvisionedAuthConfiguration.html) は、使用している承認のタイプによって異なります。承認方法に一致するタブを選択します。

------
#### [ IAM role ]

IAM ロールで承認する場合は、[RedshiftProvisionedAuthConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_RedshiftProvisionedAuthConfiguration.html) のタイプとして `IAM` のみを指定し、追加のフィールドを指定する必要はありません。

```
{
    "type": "IAM"
}
```

------
#### [ Temporary credentials user name ]

データベースユーザー名で承認する場合は、`type` を `USERNAME` として指定し、`RedshiftProvisionedAuthConfig` の `databaseUser` フィールドでユーザー名を指定します。

```
{
    "type": "USERNAME",
    "databaseUser": "string"
}
```

------
#### [ AWS Secrets Manager ]

で認可する場合は AWS Secrets Manager、 を `type` として指定`USERNAME_PASSWORD`し、 の `usernamePasswordSecretArn`フィールドにシークレットの ARN を指定します`RedshiftProvisionedAuthConfig`。

```
{
    "type": "USERNAME_PASSWORD",
    "usernamePasswordSecretArn": "string"
}
```

------

#### Amazon Redshift Serverless
<a name="w2aac28c10c27c15b9b3c17b1b5b3"></a>

Amazon Redshift Serverless を使用している場合、`queryConfiguration` フィールドの値は、次の形式の [RedshiftQueryEngineConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_RedshiftQueryEngineConfiguration.html) である必要があります。

```
{
    "type": "SERVERLESS",
    "serverlessConfiguration": {
        "workgroupArn": "string",
        "authConfiguration": 
    }
}
```

`workgroupArn` フィールドにワークグループの ARN を指定します。[RedshiftServerlessAuthConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_RedshiftServerlessAuthConfiguration.html) は、使用している承認のタイプによって異なります。承認方法に一致するタブを選択します。

------
#### [ IAM role ]

IAM ロールで承認する場合は、`RedshiftServerlessAuthConfiguration` で タイプとして `IAM` のみを指定し、追加のフィールドを指定する必要はありません。

```
{
    "type": "IAM"
}
```

------
#### [ AWS Secrets Manager ]

で認可する場合は AWS Secrets Manager、 を `type` として指定`USERNAME_PASSWORD`し、 の `usernamePasswordSecretArn`フィールドにシークレットの ARN を指定します`RedshiftServerlessAuthConfiguration`。

```
{
    "type": "USERNAME_PASSWORD",
    "usernamePasswordSecretArn": "string"
}
```

------

### storageConfigurations
<a name="w2aac28c10c27c15b9b3c17b3"></a>

このフィールドは、単一の [RedshiftQueryEngineStorageConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_RedshiftQueryEngineStorageConfiguration.html) を含む配列にマッピングされ、その形式はデータの保存場所によって異なります。

#### AWS Glue Data Catalog
<a name="w2aac28c10c27c15b9b3c17b3b5b1"></a>

データが に保存されている場合 AWS Glue Data Catalog、 は次の形式`RedshiftQueryEngineStorageConfiguration`である必要があります。

```
{
    "type": "AWS_DATA_CATALOG",
    "awsDataCatalogConfiguration": {
        "tableNames": ["string"]
    }
}
```

ナレッジベースを接続する各テーブルの名前を、`tableNames` がマッピングする配列に追加します。

**注記**  
[クロスデータベースクエリ](https://docs.aws.amazon.com/redshift/latest/dg/cross-database-overview.html) (`${databaseName}.${tableName}`) で説明されているパターンにテーブル名を入力します。`${databaseName.*}` を指定することで、すべてのテーブルを含めることができます。

#### Amazon Redshift データベース
<a name="w2aac28c10c27c15b9b3c17b3b5b3"></a>

データが Amazon Redshift データベースに保存されている場合、`RedshiftQueryEngineStorageConfiguration` は次の形式である必要があります。

```
{
    "type": "string",
    "redshiftConfiguration": {
        "databaseName": "string"
    }
}
```

`databaseName` フィールドに Amazon Redshift データベースの名前を指定します。

**注記**  
[クロスデータベースクエリ](https://docs.aws.amazon.com/redshift/latest/dg/cross-database-overview.html) (`${databaseName}.${tableName}`) で説明されているパターンにテーブル名を入力します。`${databaseName.*}` を指定することで、すべてのテーブルを含めることができます。

データベースが Amazon SageMaker AI Lakehouse を介してマウントされている場合、データベース名は *\$1\$1db\$1@\$1\$1schema\$1* の形式になります。

### queryGenerationConfiguration
<a name="w2aac28c10c27c15b9b3c17b5"></a>

このフィールドは、データのクエリ方法の設定に使用できる、次の [QueryGenerationConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_QueryGenerationConfiguration.html) にマッピングされます。

```
{
    "executionTimeoutSeconds": number,
    "generationContext": {
        "tables": [
            {
                "name": "string",
                "description": "string",
                "inclusion": "string",
                "columns": [
                    {
                        "name": "string",
                        "description": "string",
                        "inclusion": "string"
                    },
                    ...
                ]
            },
            ...
        ],
        "curatedQueries": [
            {
                "naturalLanguage": "string",
                "sql": "string"
            },
            ...
        ]
    }
}
```

クエリをタイムアウトさせる場合は、`executionTimeoutSeconds` フィールドにタイムアウト時間を秒単位で指定します。

`generationContext` フィールドは [QueryGenerationContext](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_QueryGenerationContext.html) オブジェクトにマッピングされ、以下のオプションを必要なだけ設定できます。

**重要**  
生成コンテキストを含めると、クエリエンジンは SQL の生成時にそのコンテキストを適用しようと最善を尽くします。生成コンテキストは非決定性であり、モデルの精度を向上させることのみを目的としています。精度を確保するには、生成された SQL クエリを検証します。

含めることができる生成コンテキストについては、以下のセクションを展開します。

#### データベース内のテーブルまたは列の説明を追加する
<a name="w2aac28c10c27c15b9b3c17b5c15b1"></a>

データベースをクエリするための SQL 生成の精度を向上させるために、短いテーブルまたは列名よりも詳細なコンテキストを提供するテーブルまたは列の説明を指定できます。以下を行うことができます。
+ テーブルの説明を追加するには、`tables` 配列に [QueryGenerationTable](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_QueryGenerationTable.html) オブジェクトを含めます。そのオブジェクトで、次の例のように、`name` フィールドにテーブルの名前を指定し、`description` フィールドに説明を指定します。

  ```
  {
      "name": "database.schema.tableA",
      "description": "Description for Table A"
  }
  ```
+ 列の説明を追加するには、`tables` 配列に [QueryGenerationTable](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_QueryGenerationTable.html) オブジェクトを含めます。そのオブジェクトで、`name` フィールドにテーブルの名前を指定し、[QueryGenerationColumn](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_QueryGenerationColumn.html) の配列にマッピングされる `columns` フィールドを含めます。`QueryGenerationColumn` オブジェクトには、次の例のように、`name` フィールドに列の名前、`description` フィールドに説明を含めます。

  ```
  {
      "name": "database.schema.tableA",
      "columns": [
          {
              "name": "Column A",
              "description": "Description for Column A"
          }
      ]
  }
  ```
+ 次の例のように、テーブルと列の両方の説明を追加できます。

  ```
  {
      "name": "database.schema.tableA",
      "description": "Description for Table A",
      "columns": [
          {
              "name": "columnA",
              "description": "Description for Column A"
          }
      ]
  }
  ```
**注記**  
[クロスデータベースクエリ](https://docs.aws.amazon.com/redshift/latest/dg/cross-database-overview.html)で説明されているパターンにテーブル名と列名を入力します。データベースが の場合 AWS Glue Data Catalog、形式は です`awsdatacatalog.gluedatabase.table`。

#### データベースにテーブルまたは列を含めるか除外する
<a name="w2aac28c10c27c15b9b3c17b5c15b3"></a>

[QueryGenerationTable](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_QueryGenerationTable.html) オブジェクトと [QueryGenerationColumn](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_QueryGenerationColumn.html) オブジェクトの `inclusion` フィールドを使用して、SQL の生成時に含めるか除外するテーブルまたは列を提案できます。`inclusion` フィールドに次のいずれかの値を指定できます。
+ INCLUDE – SQL の生成時にコンテキストとして含まれるのは、指定したテーブルまたは列のみです。
+ EXCLUDE – 指定したテーブルまたは列は、SQL の生成時にコンテキストとして除外されます。

テーブルまたは列を含めるか除外するかは、次の方法で指定できます。
+ テーブルを含めるか除外するには、`tables` 配列に [QueryGenerationTable](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_QueryGenerationTable.html) オブジェクトを含めます。そのオブジェクトで、次の例のように、`name` フィールドにテーブルの名前を指定し、`inclusion` フィールドにテーブルを含めるか除外するかを指定します。

  ```
  {
      "name": "database.schema.tableA",
      "inclusion": "EXCLUDE"
  }
  ```

  クエリエンジンは、SQL を生成するための追加コンテキストに `Table A` を追加しません。
+ 列を含めるか除外するには、`tables` 配列に [QueryGenerationTable](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_QueryGenerationTable.html) オブジェクトを含めます。そのオブジェクトで、`name` フィールドにテーブルの名前を指定し、[QueryGenerationColumn](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_QueryGenerationColumn.html) の配列にマッピングされる `columns` フィールドを含めます。`QueryGenerationColumn` オブジェクトで、次の例のように、`name` フィールドに列の名前を含め、`inclusion` フィールドに列を含めるか除外するかを指定します。

  ```
  {
      "name": "database.schema.tableA",
      "columns": [
          {
              "name": "database.schema.tableA.columnA",
              "inclusion": "EXCLUDE"
          }
      ]
  }
  ```

  SQL 生成は、SQL の生成時にコンテキスト内の `Table A` で `Column A` を無視します。
+ 次の例のように、インクルージョンまたは除外を指定するときにテーブルと列を組み合わせることができます。

  ```
  {
      "name": "database.schema.tableA",
      "inclusion": "INCLUDE",
      "columns": [
          {
              "name": "database.schema.tableA.columnA",
              "inclusion": "EXCLUDE"
          }
      ]
  }
  ```

  SQL 生成には `Table A` が含まれますが、SQL 生成のコンテキストを追加するときは `Column A` は除外されます。

**重要**  
テーブルと列の除外はガードレールに代わるものではありません。これらのテーブルと列のインクルージョンと除外は、SQL の生成時にモデルが考慮する追加のコンテキストとして使用されます。

#### 自然言語と SQL クエリのマッピング例をクエリエンジンに渡す
<a name="w2aac28c10c27c15b9b3c17b5c15b5"></a>

ユーザークエリを SQL クエリに変換する際のクエリエンジンの精度を向上させるには、[CuratedQuery](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CuratedQuery.html) オブジェクトの配列にマッピングされる [QueryGenerationContext](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_QueryGenerationContext.html) オブジェクトの `curatedQueries` フィールドに例を指定できます。各オブジェクトには、以下のフィールドが含まれています。
+ naturalLanguage – 自然言語でのクエリの例
+ sql – 自然言語クエリに対応する SQL クエリ

# 構造化データストアを Amazon Bedrock ナレッジベースと同期する
<a name="kb-data-source-structured-sync-ingest"></a>

ナレッジベースを構造化データストアに接続したら、データを取得できるように、同期を実行してメタデータ取り込みプロセスを開始します。メタデータにより、Amazon Bedrock ナレッジベースはユーザーのプロンプトを接続されたデータベースへのクエリに変換できます。

データベーススキーマを変更する都度、変更を同期する必要があります。

メタデータをナレッジベースに取り込み、最新のデータと同期する方法を確認するには、使用する方法のタブを選択して、手順に従います。

------
#### [ Console ]

**データをナレッジベースに取り込み、最新のデータと同期するには**

1. Amazon Bedrock コンソール ([https://console.aws.amazon.com/bedrock/](https://console.aws.amazon.com/bedrock/)) を開きます。

1. 左側のナビゲーションペインの **[ナレッジベース]** でナレッジベースを選択します。

1. **[データソース]** セクションで **[同期]** を選択して、メタデータデータの取り込みを開始します。同期中のデータソースを停止するには、**[停止]** を選択します。停止できるのは、同期中のデータソースだけです。**[同期]** をもう一度選択すると、残りのデータを取り込むことができます。

1. データインジェストが正常に完了すると、緑色の成功バナーが表示されます。

1. データソースを選択して、そのデータソースの **[同期履歴]** を表示することができます。**[警告を表示]** を選択すると、データインジェストジョブが失敗した理由を確認できます。

------
#### [ API ]

ナレッジベースにデータを取り込み、最新のデータと同期するには、[Amazon Bedrock エージェントのビルドタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)で [StartIngestionJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StartIngestionJob.html) リクエストを送信します。

取り込みジョブのステータスを追跡するには、レスポンスで返された `ingestionJobId` を使用して、[Amazon Bedrock エージェントのビルドタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)で [GetIngestionJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_GetIngestionJob.html) リクエストを送信します。

[Amazon Bedrock エージェントのビルドタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)で [ListIngestionJobs](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_ListIngestionJobs.html) リクエストを送信すると、データソースのすべての取り込みジョブに関する情報を確認することもできます。

現在実行中のデータインジェストジョブを停止するには、[Amazon Bedrock エージェントのビルドタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)を使用して [StopIngestionJobs](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StopIngestionJob.html) リクエストを送信します。準備ができたら、`StartIngestionJob` リクエストを再送信して、残りのデータを取り込むことができます。

------

**重要**  
コンソールで作成した Amazon Bedrock ナレッジベースのサービスロールを使用する場合、使用する認証ロールにデータベースへのアクセス権を付与する前にデータストアを同期すると、データストアへのアクセス許可がユーザーに付与されていないため、同期は失敗します。データストアにアクセスするためのアクセス許可をロールに付与する方法については、「[データストアへのアクセスをナレッジベースサービスロールに許可する](knowledge-base-prereq-structured.md#knowledge-base-prereq-structured-db-access)」を参照してください。

# Amazon Kendra GenAI Index を使用して Amazon Bedrock ナレッジベースを構築する
<a name="knowledge-base-build-kendra-genai-index"></a>

Amazon Bedrock ナレッジベースを使用すると、Amazon Kendra GenAI Index からナレッジベースを構築し、より高度で正確な検索拡張生成 (RAG) を活用したデジタルアシスタントを作成できます。Amazon Kendra GenAI Index を Amazon Bedrock ナレッジベースと組み合わせることで、以下が可能になります。
+ インデックスを再構築したり、データを再取り込みしたりする必要なく、インデックス付きのコンテンツを複数の Amazon Bedrock アプリケーションで再利用できます。
+ Amazon Bedrock の高度な GenAI 機能を活用しながら、Amazon Kendra の高正解率の情報の取得を活用できます。
+ Amazon Kendra GenAI Index のセマンティック正解率を維持しながら、Amazon Bedrock のツールを使用してデジタルアシスタントの動作をカスタマイズできます。

Amazon Kendra GenAI Index の使用の詳細については、「*Amazon Kendra デベロッパーガイド*」の「[Amazon Kendra GenAI Index ](https://docs.aws.amazon.com/kendra/latest/dg/hiw-index-types.html#kendra-gen-ai-index)」を参照してください。

**Topics**
+ [Amazon Kendra GenAI Index を含む Amazon Bedrock ナレッジベースを作成する](knowledge-base-kendra-genai-index-create.md)

# Amazon Kendra GenAI Index を含む Amazon Bedrock ナレッジベースを作成する
<a name="knowledge-base-kendra-genai-index-create"></a>

 Amazon Kendra GenAI Index の使用の詳細については、「*Amazon Kendra デベロッパーガイド*」の「[Amazon Kendra GenAI Index ](https://docs.aws.amazon.com/kendra/latest/dg/hiw-index-types.html#kendra-gen-ai-index)」を参照してください。

Amazon Bedrock コンソールまたは Amazon Bedrock API を使用し、Amazon Kendra GenAI Index で Amazon Bedrock ナレッジベースを作成することができます。任意の方法のタブを選択し、その手順に従います。

**注記**  
ルートユーザーを使用してナレッジベースを作成することはできません。開始する前に、 AWS Identity and Access Management (IAM) ユーザーでログインします。

**重要**  
API を使用して Amazon Kendra GenAI Index を持つナレッジベースを作成するには、既存のインデックスが必要です。API では、ナレッジベースの作成中にインデックスを作成することはできません。ナレッジベースの作成中にインデックスを作成する場合は、コンソールを使用する必要があります。

------
#### [ Console ]

**Amazon Kendra GenAI Index を含むナレッジベースを作成するには**

1. Amazon Bedrock コンソールを使用するアクセス許可を持つ IAM ID AWS マネジメントコンソール を使用して にサインインします。Amazon Bedrock コンソール ([https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)) を開きます。

1. 左側のナビゲーションペインで **[ナレッジベース]** を選択します。

1. **[ナレッジベース]** セクションで、**[作成]** を選択します。

1. **[Kendra GenAI Index を含むナレッジベース]** を選択します。

1. (オプション) **[ナレッジベースの詳細]** で、デフォルトの名前を変更し、ナレッジベースの説明を入力します。

1. **[IAM アクセス許可]** で、IAM ロールを選択します。このロールは、他の必要な AWS のサービスにアクセスするためのアクセス許可を Amazon Bedrock に付与します。Amazon Bedrock にサービスロールを作成させることも、[作成したカスタムロール](kb-permissions.md)を選択することもできます。

1. **[新しいサービスロールを作成して使用]** または **[既存のサービスロールを使用]** を選択します。

1. **新しい Amazon Kendra GenAI Index を作成する**か、**既存の Amazon Kendra GenAI Index を使用する**かを選択します。

1. (オプション) [**その他の設定**] で、以下を実行します｡
   + ( AWS Key Management Service AWS KMS) カスタマーマネージドキーを設定して、ナレッジベースを暗号化します。
   + ナレッジベースにタグを追加します。詳細については、「[Amazon Bedrock リソースにタグ付け](tagging.md)」を参照してください。

   

   

1. [**ナレッジベースを作成**] を選択します。Amazon Bedrock がナレッジベースを作成している間、**[進行中]** のステータスが表示されます。データソースを追加および同期するには、作成が完了するまで待つ必要があります。

1. Amazon Bedrock がナレッジベースの作成を完了したら、「[データソースをナレッジベースと接続する](data-source-connectors.md)」の手順に従ってデータソースを設定します。

------
#### [ API ]

**Amazon Kendra GenAI Index を含むナレッジベースを作成するには**

ナレッジベースを作成するには、[Amazon Bedrock エージェントのビルドタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)を使用して [CreateKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateKnowledgeBase.html) リクエストを送信します (リクエストとレスポンスの形式およびフィールドの詳細についてはリンクを参照)。
+ `roleArn` フィールドに、Amazon Bedrock ナレッジベースを作成するアクセス許可を持つ IAM ロールの Amazon リソースネーム (ARN) を指定します。
+ ナレッジベースでサポートされているモデルを使用するには、[モデルのアクセスを有効にする](model-access.md)必要があります。データをベクトル埋め込みに変換するために必要なモデルの ARN を書き留めます。ナレッジベースの選択したモデルのモデル (リソース) ID をコピーします。次に、「*サービス認可リファレンス*」の「[Amazon Bedrock によって定義されたリソースタイプ](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-resources-for-iam-policies)」に記載されている ARN の例に従い、モデル ID を使用してモデル ARN を構築します。モデルリソースタイプの例を参照してください。

  `knowledgeBaseConfiguration` オブジェクトの `embeddingModelArn` フィールドで、使用するベクトル埋め込みモデルの ARN を指定します。詳細については、「[Amazon Bedrock ナレッジベースでサポートされているモデルとリージョン](knowledge-base-supported.md)」を参照してください。
+ Amazon Kendra GenAI Index を使用してナレッジベースを作成するには、Amazon Kendra GenAI インデックスの ARN を指定します。
+ ナレッジベースを作成したら、ナレッジベースのドキュメントまたはコンテンツを含むデータソースを作成します。Amazon Bedrock API オペレーションを使用してデータソースを作成することはできません。これを行うには、Amazon Bedrock コンソールまたは Amazon Kendra [ CreateDataSource](https://docs.aws.amazon.com/kendra/latest/APIReference/API_CreateDataSource.html) API オペレーションを使用する必要があります。データソースの選択の詳細と API 接続設定の例については、「[データソースをナレッジベースと接続する](data-source-connectors.md)」を参照してください。

------

# Amazon Neptune Analytics のグラフを使用してナレッジベースを構築する
<a name="knowledge-base-build-graphs"></a>

Amazon Bedrock ナレッジベースは、Amazon Neptune を使用してフルマネージド型の GraphRAG 機能を提供します。GraphRAG は、グラフモデリングと生成 AI を組み合わせて検索拡張生成 (RAG) を強化する Amazon Bedrock ナレッジベースで提供される機能です。この機能は、ベクトル検索と、RAG アプリケーションで Amazon Neptune の大量のグラフデータをすばやく分析する機能を組み合わせたものです。

GraphRAG は、ナレッジベースに取り込まれたドキュメント内のエンティティと構造要素間の関係を自動的に識別して活用します。これにより、特に情報を複数の論理ステップで接続する必要がある場合に、基盤モデルからのより包括的でコンテキストに関連するレスポンスが可能になります。つまり、複数のドキュメントチャンクにデータと推論を接続する必要がある場合に、生成 AI アプリケーションがより関連性の高いレスポンスを提供できるようになります。その結果、チャットボットなどのアプリケーションは、複数のドキュメントソースから派生した関連する事実、エンティティ、関係が質問に答えるために必要な場合に、基盤モデル (FM) からより関連性の高いレスポンスを生成できます。

## GraphRAG リージョンの可用性
<a name="knowledge-base-build-graphs-regions"></a>

GraphRAG は以下の AWS リージョンで利用できます。
+ 欧州 (フランクフルト)
+ 欧州 (ロンドン)
+ 欧州 (アイルランド)
+ 米国西部 (オレゴン)
+ 米国東部 (バージニア北部)
+ アジアパシフィック (東京)
+ アジアパシフィック (シンガポール)

## GraphRAG を使用する利点
<a name="knowledge-base-build-graphs-benefits"></a>

GraphRAG を使用した Amazon Bedrock ナレッジベースには、次の利点があります。
+ Amazon Bedrock ナレッジベースに取り込まれる複数のドキュメントソースにわたるエンティティと構造要素 (セクションタイトルなど) の関係を自動的に特定して活用することで、より関連性の高い包括的なレスポンスを生成可能になります。
+ 従来の RAG 手法が改善され、複数の論理ステップを通じてさまざまなコンテンツを接続する網羅的な検索を実行する機能が強化されます。
+ ドキュメント間の推論機能が向上するため、さまざまなソース間で情報を接続することにで、より正確でコンテキストに応じた正確な回答が可能になり、精度をさらに高めて、ハルシネーションを最小限に抑えることができます。

## GraphRAG の仕組み
<a name="knowledge-base-build-graphs-works"></a>

関連するノードの初期ベクトル検索を実行すると、Amazon Bedrock ナレッジベース GraphRAG は次のステップを実行してより適切なレスポンスを生成します。

1. 取得したドキュメントチャンクにリンクされた、関連するグラフノードまたはチャンク識別子を取得します。

1. グラフをトラバースし、グラフデータベースから詳細を取得することで、これらの関連チャンクを拡張します。

1. 関連するエンティティを理解し、この強化されたコンテキストを使用して主要な接続に焦点を当てることで、より意味のあるレスポンスを生成します。

## GraphRAG の考慮事項と制限事項
<a name="knowledge-base-build-graphs-considerations"></a>

GraphRAG で Amazon Bedrock ナレッジベースを使用する場合の制限事項を以下に示します。
+ グラフビルドをカスタマイズする設定オプションはサポートされていません。
+ Amazon Neptune Analytics のグラフでは、自動スケーリングはサポートされていません。
+ GraphRAG では、データソースとして Amazon S3 のみサポートされています。
+ Claude 3 Haiku は、ナレッジベースのグラフを自動的に構築するための基盤モデルとして選択されています。これにより、コンテキストエンリッチメントが自動的に有効になります。
+ 各データソースには、最大 1000 個のファイルを含めることができます。この制限をデータソースあたり最大 10,000 個のファイルまで引き上げるようリクエストできます。または、Amazon S3 バケットをフォルダに分割して、各フォルダに最大 1000 個のファイルを含めることができます。
+ チャンキング戦略として階層的チャンキングを使用すると、GraphRAG は検索オペレーション中に子チャンクのみを取得します。子チャンクは、対応する親チャンクに置き換えられません。つまり、検索結果には、親チャンクからのより広範なコンテキストではなく、子チャンクからの特定の詳細なコンテンツが含まれます。

**注記**  
Amazon Neptune Analytics を使用するナレッジベースを削除する場合は、まずナレッジベースを削除してから、Amazon Neptune Analytics のグラフを削除します。ナレッジベースを削除しても、基盤となるグラフが自動的に削除されることはありません。グラフを明示的に削除するまで、追加料金が発生する場合があります。または、データソース削除ポリシーを RETAIN モードに設定して、最初にグラフを削除するとエラーが発生しません。詳細については、「[Amazon Bedrock ナレッジベースからデータソースを削除する](kb-ds-delete.md)」を参照してください。

# Amazon Neptune Analytics グラフを使用して Amazon Bedrock ナレッジベースを作成する
<a name="knowledge-base-build-graphs-build"></a>

GraphRAG は Amazon Bedrock ナレッジベースに完全に統合されており、グラフとベクトルストレージに Amazon Neptune Analytics を使用します。 AWS マネジメントコンソール、、または AWS SDK を使用して AWS CLI、ナレッジベースで GraphRAG の使用を開始できます。

GraphRAG の使用を開始するために、既存のグラフインフラストラクチャは必要ありません。Amazon Bedrock ナレッジベースは、Amazon Neptune からのグラフの作成とメンテナンスを自動的に管理します。システムは、Amazon S3 バケットにアップロードされたドキュメントからエンティティ、事実、関係を抽出することで、グラフを自動的に作成および更新します。そのため、グラフモデリングに関する事前の知識なしに、関連するレスポンスをエンドユーザーに提供できます。グラフは Amazon Neptune Analytics に保存されます。

ナレッジベースを作成するときは、以下を設定または指定します。
+ ナレッジベースを定義および識別する一般的な情報。
+ ナレッジベースへのアクセス許可を持つサービスロール。
+ データソースから、データを変換するときに使用する埋め込みモデルや、埋め込みを保存するサービスのストレージ設定など、ナレッジベースの設定。

**注記**  
ルートユーザーを使用してナレッジベースを作成することはできません。これらのステップを開始する前に、IAM ユーザーでログインします。

以下は、コンソールから Neptune GraphRAG を使用し、CLI を使用するためのナレッジベースを作成する方法を示しています。

------
#### [ Console ]

**コンソールから Neptune Analytics のナレッジベースを作成するには**

1. Amazon Bedrock コンソールを使用するアクセス許可を持つ IAM ID AWS マネジメントコンソール を使用して にサインインします。Amazon Bedrock コンソール ([https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)) を開きます。

1. 左側のナビゲーションペインで **[ナレッジベース]** を選択します。

1. **[ナレッジベース]** セクションで **[作成]** を選択し、**[ベクトルストアを含むナレッジベース]** を選択します。

1. (オプション) **[ナレッジベースの詳細]** で、デフォルトの名前を変更し、ナレッジベースの説明を入力します。

1. **[IAM アクセス許可]** で、IAM ロールを選択します。このロールは、他の必要な AWS のサービスにアクセスするためのアクセス許可を Amazon Bedrock に付与します。Amazon Bedrock にサービスロールを作成させるか、Neptune Analytics 用に作成した独自のカスタムロールを使用するかを選択できます。例については、[Amazon Neptune Analytics でベクトルデータベースにアクセスするためのアクセス許可](kb-permissions.md#kb-permissions-neptune)を参照してください。

1. データソースとして **[Amazon S3]** を選択し、**[次へ]** を選択してデータソースを設定します。

1. ナレッジベースを接続するためのデータソースとして使用され、Amazon Neptune Analytics と統合するために使用されるファイルの **S3 URI** を指定します。提供できる追加の手順とオプション情報については、「[データソースをナレッジベースと接続する](data-source-connectors.md)」を参照してください。

1. **[埋め込みモデル]** セクションで、埋め込みモデルを選択してデータをベクトル埋め込みに変換します。必要に応じて、**[追加設定]** セクションを使用してベクトルディメンションを指定できます。埋め込みタイプには、浮動小数点ベクトル埋め込みを使用することをお勧めします。
**注記**  
埋め込みモデルのベクトルディメンションは、Neptune Analytics グラフの作成時に指定したベクトルディメンションと一致している必要があります。

1. **[ベクトルデータベース]** セクションで、ベクトルストアを作成する方法を選択し、クエリに使用される埋め込みを保存するベクトルストアとして **[Amazon Neptune Analytics (GraphRAG)]** を選択します。ベクトルストアを作成するには、次のいずれかの方法を使用できます。
   + **[新しいベクトルストアをクイック作成]** メソッドを使用して、ベクトルストアの作成をすばやく開始することをお勧めします。ベクトルストアとして **[Amazon Neptune Analytics (GraphRAG)]** を選択します。このオプションでは、既存の Neptune Analytics リソースは必要ありません。ナレッジベースは、ドキュメントコーパスから派生したエンティティとその関係のグラフ表現とともに、Amazon Neptune でドキュメント埋め込みを自動的に生成して保存します。
   + または、Neptune Analytics グラフとベクトルインデックスを既に作成している場合は、**[作成したベクトルストアを選択]** オプションを使用できます。ベクトルストアとして **[Amazon Neptune Analytics (GraphRAG)]** を選択し、ベクトルインデックス内のグラフ ARN、ベクトルフィールド名、およびメタデータフィールド名を特定します。詳細については、「[ナレッジベース用に作成したベクトルストアを使用するための前提条件](knowledge-base-setup.md)」を参照してください。

1. **[次へ]** を選択して、ナレッジベースの詳細を確認します。次に進みナレッジベースを作成する前に、任意のセクションを編集できます。
**注記**  
ナレッジベースの作成にかかる時間は、特定の設定によって異なります。ナレッジベースの作成が完了すると、ナレッジベースのステータスは準備中または利用可能な状態に変更されます。  
ナレッジベースの準備ができて使用可能になったら、最初にデータソースの同期を行い、その後も必要に応じて同期を行いコンテンツを最新の状態に保ちます。コンソールでナレッジベースを選択し、データソースの概要セクションで **[同期]** を選択します。

1. **[ナレッジベースを作成]** を選択します。Amazon Bedrock がナレッジベースを作成している間、**[進行中]** のステータスが表示されます。データソースを同期する前に、作成が完了するまで待つ必要があります。

1. Amazon Bedrock がナレッジベースの作成を完了したら、「[データソースをナレッジベースと接続する](data-source-connectors.md)」の手順に従ってデータソースを設定します。

------
#### [ API ]

**を使用して Neptune Analytics のナレッジベースを作成するには AWS CLI**

1. まず、コンテキストエンリッチメント設定を使用してデータソースを作成します。このオペレーションを実行するには、[Amazon Bedrock エージェントのビルドタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)を使用して [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html) リクエストを送信します。CLI コマンドの例を以下に示します。

   ```
   aws bedrock-agent create-data-source \
       --name graph_rag_source \
       --description data_source_for_graph_rag \
       --knowledge-base-id LDBBY2K5AG \
       --cli-input-json "file://input.json"
   ```

   以下のコードは、`input.json` ファイルの内容を示しています。

   ```
   {
       "dataSourceConfiguration": { 
           "s3Configuration": { 
               "bucketArn": "arn:aws:s3:::<example-graphrag-datasets>",
               "bucketOwnerAccountId": "<ABCDEFGHIJ>",
               "inclusionPrefixes": [ <"example-dataset"> ]
           },
           "type": "S3",
       },
       "VectorIngestionConfiguration": {
           "contextEnrichmentConfiguration":
               "type": "BEDROCK_FOUNDATION_MODEL",
               "bedrockFoundationModelConfiguration": {
                   "modelArn": "arn:aws:bedrock:<region>::foundation-model/anthropic.claude-3-haiku-20240307-v1:0",
                   "enrichmentStrategyConfiguration": {
                       "method": "CHUNK_ENTITY_EXTRACTION"
               }
           }
       }
   }
   ```

   ドキュメントからグラフを構築する`modelArn`ために使用される では、Claude 3 Haiku (前述の例を参照）、Claude Haiku 4.5、Amazon Nova ファミリー (テキスト入力モダリティを持つ Nova 2 モデルと Nova モデルを含む) を使用できます。リージョンで利用可能な基盤モデルを確認するには、[「Amazon Bedrock でサポートされている基盤モデル](https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html)」を参照してください。
**注記**  
一部のモデルは、クロスリージョン推論プロファイルでのみサポートされています。Amazon Bedrock でクロスリージョン推論プロファイルを呼び出すと、取り込まれるリクエストとデータはソースリージョンから送信され、そのプロファイルで定義された送信先リージョンのいずれかに自動的にルーティングされ、パフォーマンスが最適化されます。グローバルクロスリージョン推論プロファイルの送信先リージョンには、商用リージョンがすべて含まれます。例えば、us-west-2 リージョンからの us ベースのクロスリージョン呼び出し`modelArn`には、 形式を使用して を指定できます`arn:aws:bedrock:us-west-2:account-id:inference-profile/us.anthropic.claude-haiku-4-5-20251001-v1:0`。

   推論プロファイルを使用するためのロールのポリシー要件を確認するには、[「クロスリージョン推論プロファイルの前提条件](https://docs.aws.amazon.com/bedrock/latest/userguide/inference-profiles-prereq.html)」を参照してください。推論プロファイルを使用して送信元リージョンと送信先リージョンを選択する方法のガイダンスについては、[「推論プロファイルでサポートされているリージョンとモデル](https://docs.aws.amazon.com/bedrock/latest/userguide/inference-profiles-support.html)」を参照してください。データは、Amazon Bedrock ナレッジベースと Amazon Neptune Analytics インスタンスに対応するソースリージョンにのみ保存されます。送信先リージョンは推論にのみ使用されます。

1. ナレッジベースを作成するには、[Amazon Bedrock エージェントのビルドタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)を使用して、[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateKnowledgeBase.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateKnowledgeBase.html) リクエストを送信します。CLI コマンドの例を以下に示します。

   ```
   aws bi create-knowledge-base \
   --name <"knowledge-base-graphrag"> \
   --role-arn arn:aws:iam::<accountId>:role/<BedrockExecutionRoleForKnowledgeBase> \
   --cli-input-json "file://input.json"
   ```

   以下は、`input.json` ファイルの内容を示しています。

   ```
   {
       "storageConfiguration": {
           "type": "NEPTUNE_ANALYTICS"
           "neptuneAnalyticsConfiguration": {
               "graphArn": "arn:aws:neptune-graph:<region>:<>:graph/<graphID>",
               "fieldMapping": {
                   "metadataField": "metadata",
                   "textField": "text"
               },
           }
       },
       "knowledgeBaseConfiguration": {
           "type": "VECTOR",
           "vectorKnowledgeBaseConfiguration": {
               "embeddingModelArn": "arn:aws:bedrock:<region>::foundation-model/cohere.embed-english-v3"
           }
       }
   }
   ```

1. GraphRAG ベースのアプリケーションが実行されているとき、ナレッジベース API オペレーションを引き続き使用して、より包括的で関連性があり、説明可能なレスポンスをエンドユーザーに提供できます。以降のセクションでは、CLI コマンドを使用して取り込みを開始し、クエリの取得を実行する方法を示します。

------

## データソースを同期する
<a name="knowledge-base-build-graphs-sync"></a>

ナレッジベースを作成したら、データを取り込むか同期して、クエリできるようにします。取り込み時には、グラフィカル構造が抽出され、指定したベクトル埋め込みモデルと設定に基づいて、データソースの未加工データがベクトル埋め込みに変換されます。

以下のコマンドは、CLI を使用して取り込みジョブを開始する方法の例を示しています。

```
aws bedrock-agent start-ingestion-job \
--data-source-id <"ABCDEFGHIJ"> \
--knowledge-base-id <"EFGHIJKLMN">
```

コンソールと API を使用してデータソースを同期する方法の詳細については、「[Amazon Bedrock ナレッジベースとデータを同期する](kb-data-source-sync-ingest.md)」を参照してください。

## ナレッジベースに変更を取り込む
<a name="knowledge-base-build-graphs-ingest"></a>

Amazon S3 をデータソースとして使用するときは、1 つのステップでデータソースを変更し、変更を同期できます。直接取り込みを使用すると、ナレッジベースのファイルを 1 つのアクションで直接追加、更新、または削除でき、同期しなくてもナレッジベースはドキュメントにアクセスできます。直接取り込みでは、`KnowledgeBaseDocuments` API オペレーションを使用して、ナレッジベース用に設定されたベクトルストアに直接送信するドキュメントのインデックスを作成します。このオペレーションを使用して、ナレッジベース内のドキュメントを直接表示することもできます。ドキュメントを表示するために、接続されたデータソースに移動する必要はありません。詳細については、「[変更をナレッジベースに直接取り込む](kb-direct-ingestion.md)」を参照してください。

## ナレッジベースをテストする
<a name="knowledge-base-build-graphs-test"></a>

ナレッジベースのセットアップが完了したので、クエリを送信してレスポンスを生成してテストできます。

以下のコードは、CLI コマンドの例を示しています。

```
aws bedrock-agent-runtime retrieve \
--knowledge-base-id <"ABCDEFGHIJ"> \
--retrieval-query="{\"text\": \"What are the top three video games available now?\"}"
```

詳細については、「[Amazon Neptune Analytics グラフに接続されたナレッジベースをクエリする](kb-test-neptune.md)」を参照してください。

# クエリとレスポンスを使用してナレッジベースをテストする
<a name="knowledge-base-test"></a>

ナレッジベースの設定後、次の方法でナレッジベースの動作をテストできます。
+ [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) オペレーションを使用して、クエリを送信し、データソースから関連情報を取得します。
+ [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) オペレーションを使用して、クエリを送信し、データソースから取得した情報に基づいてクエリへのレスポンスを生成します。
+ [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) または [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) を使用する際に、Amazon Bedrock ナレッジベースのデフォルトの再ランク付けモデルではなく、再ランク付けモデルを使用することで、より関連性の高いソースを取得します。
+ `Retrieve` API または `RetrieveAndGenerate` API でオプションのメタデータフィルターを使用して、データソースで使用できるドキュメントを指定します。

ナレッジベースの動作に問題がなければ、「[AI アプリケーションのナレッジベースをデプロイする](knowledge-base-deploy.md)」に進み、ナレッジベースをクエリするようにアプリケーションを設定したり、ナレッジベースをエージェントにアタッチしたりできます。

詳細情報については、トピックを選択してください。

**Topics**
+ [ナレッジベースのクエリを実行してデータを取得する](kb-test-retrieve.md)
+ [ナレッジベースをクエリし、取得したデータに基づいてレスポンスを生成する](kb-test-retrieve-generate.md)
+ [構造化データのクエリを生成する](knowledge-base-generate-query.md)
+ [Amazon Kendra GenAI Index グラフに接続されたナレッジベースのクエリ](kb-test-kendra.md)
+ [Amazon Neptune Analytics グラフに接続されたナレッジベースをクエリする](kb-test-neptune.md)
+ [クエリとレスポンスの生成を設定してカスタマイズする](kb-test-config.md)
+ [ナレッジベースを使用して推論モデルのレスポンス生成を設定する](kb-test-configure-reasoning.md)

# ナレッジベースのクエリを実行してデータを取得する
<a name="kb-test-retrieve"></a>

**重要**  
ガードレールは、入力と LLM から生成されたレスポンスにのみ適用されます。実行時にナレッジベースから取得したリファレンスには適用されません。

ナレッジ ベースを設定したら、それについてクエリを実行し、[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) API オペレーションを使用して、そのクエリに関連するソースデータからチャンクを取得できます。デフォルトの Amazon Bedrock ナレッジベースランカーではなく[再ランク付けモデル](rerank.md)を使用して、取得中にソースチャンクの関連性をランク付けすることもできます。

ナレッジベースのクエリを実行する方法については、任意の方法のタブを選択し、その手順を実行してください。

------
#### [ Console ]

**ナレッジベースをテストするには**

1. Amazon Bedrock コンソールを使用するアクセス許可を持つ IAM ID AWS マネジメントコンソール を使用して にサインインします。Amazon Bedrock コンソール ([https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)) を開きます。

1. 左側のナビゲーションペインで **[ナレッジベース]** を選択します。

1. **[ナレッジベース]** セクションで、次のいずれかの操作を行います。
   + テストするナレッジベースの横にあるラジオボタンを選択して、**[ナレッジベースをテストする]** を選択します。右側からテスウィンドウが表示されます。
   + テストするナレッジベースを選択します。右側からテスウィンドウが表示されます。

1. テストウィンドウで、**[クエリに対する応答を生成する]** をクリアして、ナレッジベースから直接取得した情報を返します。

1. (オプション) 設定アイコン (![\[Three horizontal sliders with adjustable circular controls for settings or parameters.\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/icons/configurations.png)) を選択して、**[設定]** を開きます。構成については、「[クエリとレスポンスの生成を設定してカスタマイズする](kb-test-config.md)」を参照してください。

1. チャットウィンドウのテキストボックスにクエリを入力して **[実行]** を選択すると、ナレッジベースからのレスポンスが表示されます。

1. ソースチャンクは関連性の高い順に直接返されます。データソースから抽出された画像もソースチャンクとして返される可能性があります。

1. 返されたチャンクの詳細を表示するには、**[ソースの詳細を表示]** を選択します。
   + クエリの設定を表示するには、**[クエリ設定]** を展開します。
   + ソースチャンクの詳細を表示するには、ソースチャンクの横の右矢印 (![\[Play button icon with a triangular shape pointing to the right.\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/icons/caret-right-filled.png)) を選択して展開します。以下の情報が表示されます。
     + ソースチャンクからの未加工テキスト。このテキストをコピーするには、コピーアイコン (![\[Icon representing a crop or resize function, with two overlapping rectangles.\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/icons/copy.png)) を選択します。Amazon S3 を使用してデータを保存した場合は、外部リンクアイコン (![\[Icon of a square with an arrow pointing outward from its top-right corner.\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/icons/external.png)) を選択して、対象ファイルを含む S3 オブジェクトに移動します。
     + Amazon S3 を使用してデータを保存した場合、ソースチャンクに関連付けられているメタデータ。属性/フィールドのキーと値は、ソースドキュメントに関連付けられている `.metadata.json` ファイルで定義されています。詳細については、「[クエリとレスポンスの生成を設定してカスタマイズする](kb-test-config.md)」の「**メタデータとフィルタリング**」セクションを参照してください。

**チャットオプション**
+ **[回答を生成]** をオンにして、取得したソースチャンクに基づいて応答を生成するように切り替えます。設定を変更すると、チャットウィンドウ内のテキストは完全に消去されます。
+ チャットウィンドウ内のテキストを消去するには、ほうきアイコン (![\[Magnifying glass icon with a checkmark inside, symbolizing search or inspection.\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/icons/broom.png)) を選択します。
+ チャットウィンドウ内のすべての出力をコピーするには、コピーアイコン (![\[Icon representing a crop or resize function, with two overlapping rectangles.\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/icons/copy.png)) を選択します。

------
#### [ API ]

ナレッジベースのクエリを実行し、データソースから関連するテキストのみを返すには、[Amazon Bedrock エージェントのランタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-rt)を使用して [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) リクエストを送信します。

以下のフィールドが必要です。


****  

| フィールド | 基本的な説明 | 
| --- | --- | 
| knowledgeBaseId | クエリを実行するナレッジベースを指定します。 | 
| retrievalQuery | クエリを指定する text フィールドが含まれます。 | 
| guardrailsConfiguration | リクエストでガードレールを使用するために、guardrailsId や guardrailsVersion などの guardrailsConfiguration フィールドを含めます。 | 

次のフィールドはオプションです。


****  

| フィールド | ユースケース | 
| --- | --- | 
| nextToken | 応答の次のバッチを返します (以下の応答フィールドを参照)。 | 
| retrievalConfiguration | ベクトル検索をカスタマイズするための[クエリ設定](kb-test-config.md)が含まれます。詳細については、「[KnowledgeBaseVectorSearchConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseVectorSearchConfiguration.html)」を参照してください。 | 

[KnowledgeBaseVectorSearchConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseVectorSearchConfiguration.html) に `rerankingConfiguration` フィールドを含めることで、デフォルトの Amazon Bedrock ナレッジベースのランキングモデルよりも再ランク付けモデルを優先して使用できます。`rerankingConfiguration` フィールドは [VectorSearchRerankingConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_VectorSearchRerankingConfiguration.html) オブジェクトにマッピングされています。このオブジェクトでは、使用する再ランキングモデル、含める追加のリクエストフィールド、再ランキング中にドキュメントを除外するメタデータ属性、および再ランク付け後に返される結果の数を指定できます。詳細については、「[VectorSearchRerankingConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_VectorSearchRerankingConfiguration.html)」を参照してください。

**注記**  
指定した `numberOfRerankedResults` 値が [KnowledgeBaseVectorSearchConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseVectorSearchConfiguration.html) の `numberOfResults` 値より大きい場合、返される結果の最大数は `numberOfResults` の値になります。例外は、クエリ分解を使用する場合です (詳細については、「[クエリとレスポンスの生成を設定してカスタマイズする](kb-test-config.md)」の「**クエリの変更**」セクションを参照してください)。クエリ分解を使用する場合、`numberOfRerankedResults` は `numberOfResults` の最大 5 倍になります。

応答では、データソースからのソースチャンクが、`retrievalResults` フィールドの [KnowledgeBaseRetrievalResult](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrievalResult.html) オブジェクトの配列として返されます。各 [KnowledgeBaseRetrievalResult](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrievalResult.html) には、次のフィールドが含まれます。


****  

| フィールド | 説明 | 
| --- | --- | 
| content | text にテキストソースチャンクが含まれるか、byteContent フィールドに画像ソースチャンクが含まれます。コンテンツが画像の場合、base64 でエンコードされたコンテンツのデータ URI は data:image/jpeg;base64,\$1\$1base64-encoded string\$1 の形式で返されます。 | 
| メタデータ | 各メタデータ属性をキーとして、メタデータ値をキーがマッピングする JSON 値として含めます。 | 
| location | ソースチャンクが属するドキュメントの URI または URL が含まれます。 | 
| score | ドキュメントの関連性スコア。このスコアを使用して、結果のランキングを分析できます。 | 

ソースチャンクの数が応答に収まる数を超えると、`nextToken` フィールドに値が返されます。結果の次のバッチを返すには、別のリクエストでその値を使用します。

取得したデータに画像が含まれている場合、レスポンスは次のレスポンスヘッダーも返します。これには、レスポンスで返されたソースチャンクのメタデータが含まれます。
+ `x-amz-bedrock-kb-byte-content-source` – 画像の Amazon S3 URI が含まれます。
+ `x-amz-bedrock-kb-description` – 画像の Base64 でエンコードされた文字列が含まれます。

**注記**  
[メタデータフィルターを設定する](kb-test-config.md)ときに、これらのメタデータレスポンスヘッダーをフィルタリングすることはできません。

**マルチモーダルクエリ**  
マルチモーダル埋め込みモデルを使用するナレッジベースの場合、テキストまたはイメージを使用してクエリを実行できます。`retrievalQuery` フィールドは、イメージクエリの `multimodalInputList` フィールドをサポートします。

**注記**  
Nova アプローチと BDA アプローチの選択など、マルチモーダルナレッジベースのセットアップと操作に関する包括的なガイダンスについては、「」を参照してください[マルチモーダルコンテンツのナレッジベースを構築する](kb-multimodal.md)。

次の`multimodalInputList`フィールドを使用して、イメージでクエリを実行できます。

```
{
    "knowledgeBaseId": "EXAMPLE123", 
    "retrievalQuery": {
        "multimodalInputList": [
            {
                "content": {
                    "byteContent": "base64-encoded-image-data"
                },
                "modality": "IMAGE"
            }
        ]
    }
}
```

または、 `text`フィールドを使用してのみテキストでクエリを実行できます。

```
{
    "knowledgeBaseId": "EXAMPLE123",
    "retrievalQuery": {
        "text": "Find similar shoes"
    }
}
```

**一般的なマルチモーダルクエリパターン**  
以下は、一般的なクエリパターンです。

Image-to-image検索  
イメージをアップロードして、視覚的に似たイメージを見つけます。例: 赤い Nike 靴の写真をアップロードして、製品カタログで同様の靴を見つけます。

テキストベースの検索  
テキストクエリを使用して、関連するコンテンツを検索します。例: テキストの説明を使用して製品カタログを検索するには、「類似する靴を見つける」を使用します。

ビジュアルドキュメント検索  
ドキュメント内のグラフ、図、またはビジュアル要素を検索します。例: グラフイメージをアップロードして、ドキュメントコレクション内の同様のグラフを検索します。

**マルチモーダルコンテンツの Nova と BDA の選択**  
マルチモーダルコンテンツを使用する場合は、コンテンツタイプとクエリパターンに基づいてアプローチを選択します。


**Nova と BDA 決定マトリックス**  

| コンテンツタイプ | Nova マルチモーダル埋め込みを使用する | Bedrock Data Automation (BDA) パーサーを使用する | 
| --- | --- | --- | 
| 動画コンテンツ | ビジュアルストーリーテリングの焦点 (スポーツ、広告、デモンストレーション）、ビジュアル要素に関するクエリ、最小限の音声コンテンツ | 重要な音声/ナレーション (プレゼンテーション、会議、チュートリアル）、音声コンテンツに関するクエリ、文字起こしが必要 | 
| オーディオコンテンツ | 音楽またはサウンド効果の識別、非音声分析 | ポッドキャスト、インタビュー、会議、文字起こしが必要な音声を含むコンテンツ | 
| イメージコンテンツ | ビジュアル類似度検索、image-to-image取得、ビジュアルコンテンツ分析 | イメージからのテキスト抽出、ドキュメント処理、OCR 要件 | 

**注記**  
Nova マルチモーダル埋め込みでは、音声コンテンツを直接処理することはできません。音声ファイルまたは動画ファイルに重要な音声情報が含まれている場合は、まず BDA パーサーを使用して音声をテキストに変換するか、代わりにテキスト埋め込みモデルを選択します。

**マルチモーダルクエリの制限**  
マルチモーダルクエリにはいくつかの制限があります。
+ 現在のリリースでは、クエリごとに最大 1 つのイメージ
+ イメージクエリは、マルチモーダル埋め込みモデル (Titan G1 または Cohere Embed v3) でのみサポートされています。
+ RetrieveAndGenerate API は、マルチモーダル埋め込みモデルと S3 コンテンツバケットを持つナレッジベースではサポートされていません
+ テキストのみの埋め込みモデルを使用してナレッジベースにイメージクエリを指定すると、4xx エラーが返されます。

**マルチモーダル API レスポンス構造**  
マルチモーダルコンテンツの取得レスポンスには、追加のメタデータが含まれます。
+ **ソース URI:** 元の S3 バケットの場所を指す
+ **補足 URI:** マルチモーダルストレージバケット内のコピーを指す
+ **タイムスタンプメタデータ:** 正確な再生配置を可能にするビデオチャンクとオーディオチャンクに付属

**注記**  
API または SDK を使用する場合は、アプリケーションでファイルの取得とタイムスタンプナビゲーションを処理する必要があります。コンソールは、拡張ビデオ再生と自動タイムスタンプナビゲーションを使用してこれを自動的に処理します。

------

**注記**  
レスポンスの生成中にプロンプトが文字制限を超えたというエラーが表示された場合は、次の方法でプロンプトを短縮できます。  
取得される結果の最大数を減らします (これにより、[ナレッジベースのプロンプトテンプレート: オーケストレーションと生成](kb-test-config.md#kb-test-config-prompt-template) の \$1search\$1results\$1 プレースホルダーで入力される内容が短縮されます)。
より小さなチャンクを使用するチャンキング戦略でデータソースを再作成します (これにより、[ナレッジベースのプロンプトテンプレート: オーケストレーションと生成](kb-test-config.md#kb-test-config-prompt-template) の \$1search\$1results\$1 プレースホルダーで入力される内容が短縮されます)。
プロンプトテンプレートを短縮します。
ユーザークエリを短縮します (これにより、[ナレッジベースのプロンプトテンプレート: オーケストレーションと生成](kb-test-config.md#kb-test-config-prompt-template) の \$1query\$1 プレースホルダーに入力される内容が短縮されます)。

# ナレッジベースをクエリし、取得したデータに基づいてレスポンスを生成する
<a name="kb-test-retrieve-generate"></a>

**重要**  
ガードレールは、入力と LLM から生成されたレスポンスにのみ適用されます。実行時にナレッジベースから取得したリファレンスには適用されません。

ナレッジベースをセットアップした後、ナレッジベースをクエリし、[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) APIオペレーションを使用してソースデータから取得されたチャンクに基づいてレスポンスを生成できます。元のソースデータへの引用を含めてレスポンスが返されます。デフォルトの Amazon Bedrock ナレッジベースランカーではなく[再ランク付けモデル](rerank.md)を使用して、取得中にソースチャンクの関連性をランク付けすることもできます。

**マルチモーダルコンテンツの制限**  
`RetrieveAndGenerate` では、マルチモーダルコンテンツのサポートが制限されています。Nova マルチモーダル埋め込みを使用する場合、RAG 機能はテキストコンテンツのみに制限されます。オーディオおよびビデオ処理を含むマルチモーダルを完全にサポートするには、テキスト埋め込みモデルで BDA を使用します。詳細については、「[マルチモーダルコンテンツのナレッジベースを構築する](kb-multimodal.md)」を参照してください。

**注記**  
`RetrieveAndGenerate` フロー中に `Retrieve` レスポンスから返されたイメージは、レスポンス生成のプロンプトに含まれます。`RetrieveAndGenerate` レスポンスにはイメージを含めることはできませんが、イメージを含むソースを引用できます。

ナレッジベースのクエリを実行する方法については、任意の方法のタブを選択し、その手順を実行してください。

------
#### [ Console ]

**ナレッジベースをテストするには**

1. Amazon Bedrock コンソールを使用するアクセス許可を持つ IAM ID AWS マネジメントコンソールを使用して にサインインします。Amazon Bedrock コンソール ([https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)) を開きます。

1. 左側のナビゲーションペインで **[ナレッジベース]** を選択します。

1. **[ナレッジベース]** セクションで、次のいずれかの操作を行います。
   + テストするナレッジベースの横にあるラジオボタンを選択して、**[ナレッジベースをテストする]** を選択します。右側からテスウィンドウが表示されます。
   + テストするナレッジベースを選択します。右側からテスウィンドウが表示されます。

1. ナレッジベースから取得した情報を基にしたレスポンスを生成するには、**[クエリに対するレスポンスを生成する]** を有効にします。Amazon Bedrock はデータソースに基づいてレスポンスを生成し、提供された情報を脚注とともに引用します。

1. レスポンスの生成に使用するモデルを選択するには、**[モデルを選択]** を選択します。次に、**[適用]** を選択します。

1. (オプション) 設定アイコン (![\[Three horizontal sliders with adjustable circular controls for settings or parameters.\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/icons/configurations.png)) を選択して、**[設定]** を開きます。構成については、「[クエリとレスポンスの生成を設定してカスタマイズする](kb-test-config.md)」を参照してください。

1. チャットウィンドウのテキストボックスにクエリを入力して **[実行]** を選択すると、ナレッジベースからのレスポンスが表示されます。

1. 脚注を選択して、レスポンスのその部分の引用元からの抜粋を表示します。ファイルを含む S3 オブジェクトに移動するリンクを選択します。

1. 返されたチャンクの詳細を表示するには、**[ソースの詳細を表示]** を選択します。
   + クエリの設定を表示するには、**[クエリ設定]** を展開します。
   + ソースチャンクの詳細を表示するには、ソースチャンクの横の右矢印 (![\[Play button icon with a triangular shape pointing to the right.\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/icons/caret-right-filled.png)) を選択して展開します。以下の情報が表示されます。
     + ソースチャンクからの未加工テキスト。このテキストをコピーするには、コピーアイコン (![\[Icon representing a crop or resize function, with two overlapping rectangles.\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/icons/copy.png)) を選択します。Amazon S3 を使用してデータを保存した場合は、外部リンクアイコン (![\[Icon of a square with an arrow pointing outward from its top-right corner.\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/icons/external.png)) を選択して、対象ファイルを含む S3 オブジェクトに移動します。
     + Amazon S3 を使用してデータを保存した場合、ソースチャンクに関連付けられているメタデータ。属性/フィールドのキーと値は、ソースドキュメントに関連付けられている `.metadata.json` ファイルで定義されています。詳細については、「[クエリとレスポンスの生成を設定してカスタマイズする](kb-test-config.md)」の「**メタデータとフィルタリング**」セクションを参照してください。

**チャットオプション**
+ レスポンス生成に別のモデルを使用するには、**[モデルを変更]** を選択します。モデルを変更すると、チャットウィンドウ内のテキストは完全に消去されます。
+ **[レスポンスを生成]** をクリアして、ソースチャンクを直接取得するに切り替えます。設定を変更すると、チャットウィンドウ内のテキストは完全に消去されます。
+ チャットウィンドウ内のテキストを消去するには、ほうきアイコン (![\[Magnifying glass icon with a checkmark inside, symbolizing search or inspection.\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/icons/broom.png)) を選択します。
+ チャットウィンドウ内のすべての出力をコピーするには、コピーアイコン (![\[Icon representing a crop or resize function, with two overlapping rectangles.\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/icons/copy.png)) を選択します。

------
#### [ API ]

ナレッジベースにクエリを実行し、基盤モデルを使用してデータソースからの結果に基づいてレスポンスを生成するには、[Amazon Bedrock エージェントランタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-rt)を使用して、[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) リクエストを送信します。

[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerateStream.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerateStream.html) API はストリーミング形式でデータを返すため、結果全体を待たずにチャンクで生成されたレスポンスにアクセスできます。

以下のフィールドが必要です。

**注記**  
API レスポンスには引用イベントが含まれています。`citation` メンバーは非推奨になりました。代わりに、`generatedResponse` および `retrievedReferences` フィールドを使用することをお勧めします。参考までに、「[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_CitationEvent.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_CitationEvent.html)」を参照してください。


****  

| フィールド | 基本的な説明 | 
| --- | --- | 
| input | クエリを指定する text フィールドが含まれます。 | 
| retrieveAndGenerateConfiguration | 取得と生成の設定を指定する [RetrieveAndGenerateConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerateConfiguration.html) が含まれます。詳細については、以下を参照してください。 | 

次のフィールドはオプションです。


****  

| フィールド | ユースケース | 
| --- | --- | 
| sessionId | 前のセッションと同じ値を使用してそのセッションを続行し、モデルのコンテキストを維持します。 | 
| sessionConfiguration | セッションの暗号化用のカスタム KMS キーが含まれます。 | 

[RetrieveAndGenerateConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerateConfiguration.html) に `knowledgeBaseConfiguration` フィールドを含めます。このフィールドは、次のフィールドを含む [KnowledgeBaseRetrieveAndGenerateConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrieveAndGenerateConfiguration.html) オブジェクトにマッピングされます。
+ 以下のフィールドが必要です。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/kb-test-retrieve-generate.html)
+ 次のフィールドはオプションです。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/kb-test-retrieve-generate.html)

[KnowledgeBaseRetrievalConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrievalConfiguration.html) 内の [KnowledgeBaseVectorSearchConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseVectorSearchConfiguration.html) に `rerankingConfiguration` フィールドを含めることで、デフォルトの Amazon Bedrock ナレッジベースランキングモデルで再ランキングモデルを使用できます。`rerankingConfiguration` フィールドは [VectorSearchRerankingConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_VectorSearchRerankingConfiguration.html) オブジェクトにマッピングされています。このオブジェクトでは、使用する再ランキングモデル、含める追加のリクエストフィールド、再ランキング中にドキュメントを除外するメタデータ属性、および再ランク付け後に返される結果の数を指定できます。詳細については、「[VectorSearchRerankingConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_VectorSearchRerankingConfiguration.html)」を参照してください。

**注記**  
指定した `numberOfRerankedResults` 値が [KnowledgeBaseVectorSearchConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseVectorSearchConfiguration.html) の `numberOfResults` 値より大きい場合、返される結果の最大数は `numberOfResults` の値になります。例外は、クエリ分解を使用する場合です (詳細については、「[クエリとレスポンスの生成を設定してカスタマイズする](kb-test-config.md)」の「**クエリの変更**」セクションを参照してください)。クエリ分解を使用する場合、`numberOfRerankedResults` は `numberOfResults` の最大 5 倍になります。

レスポンスは、生成されたレスポンスを `output` フィールドに返し、引用されたソースチャンクを `citations` フィールドの配列として返します。各 [Citation](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Citation.html) オブジェクトは以下のフィールドを含みます。


****  

| フィールド | 基本的な説明 | 
| --- | --- | 
| generatedResponsePart | textResponsePart フィールドには、引用が関係する text が含まれます。span フィールドは、引用を含む出力の部分の先頭と末尾のインデックスを提供します。 | 
| retrievedReferences | [RetrievedReference](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievedReference.html) オブジェクトの配列。各オブジェクトには、ソースチャンクの content、ドキュメントに関連付けられた metadata、データソース内のドキュメントの URI または URL の location が含まれます。コンテンツが画像の場合、base64 でエンコードされたコンテンツのデータ URI は data:image/jpeg;base64,\$1\$1base64-encoded string\$1 の形式で返されます。 | 

レスポンスは `sessionId` 値も返します。この値は、同じ会話を維持するために別のリクエストで再利用できます。

リクエストに `guardrailConfiguration` を含めた場合、`guardrailAction` フィールドはコンテンツがブロックされたかどうかを通知します。

取得したデータに画像が含まれている場合、レスポンスは次のレスポンスヘッダーも返します。これには、レスポンスで返されたソースチャンクのメタデータが含まれます。
+ `x-amz-bedrock-kb-byte-content-source` – 画像の Amazon S3 URI が含まれます。
+ `x-amz-bedrock-kb-description` – 画像の Base64 でエンコードされた文字列が含まれます。

**注記**  
[メタデータフィルターを設定する](kb-test-config.md)ときに、これらのメタデータレスポンスヘッダーをフィルタリングすることはできません。

------

**注記**  
レスポンスの生成中にプロンプトが文字制限を超えたというエラーが表示された場合は、次の方法でプロンプトを短縮できます。  
取得される結果の最大数を減らします (これにより、[ナレッジベースのプロンプトテンプレート: オーケストレーションと生成](kb-test-config.md#kb-test-config-prompt-template) の \$1search\$1results\$1 プレースホルダーで入力される内容が短縮されます)。
より小さなチャンクを使用するチャンキング戦略でデータソースを再作成します (これにより、[ナレッジベースのプロンプトテンプレート: オーケストレーションと生成](kb-test-config.md#kb-test-config-prompt-template) の \$1search\$1results\$1 プレースホルダーで入力される内容が短縮されます)。
プロンプトテンプレートを短縮します。
ユーザークエリを短縮します (これにより、[ナレッジベースのプロンプトテンプレート: オーケストレーションと生成](kb-test-config.md#kb-test-config-prompt-template) の \$1query\$1 プレースホルダーに入力される内容が短縮されます)。

# 構造化データのクエリを生成する
<a name="knowledge-base-generate-query"></a>

構造化データストアをナレッジベースに接続すると、ナレッジベースは、クエリ対象のデータソースの構造に基づいて、ユーザーによって指定された自然言語クエリを SQL クエリに変換することでクエリを実行できます。使用するバージョン:
+ [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html): レスポンスは SQL クエリ実行の結果を返します。
+ [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html): 生成されるレスポンスは、SQL クエリ実行の結果に基づいています。
+ [GenerateQuery](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GenerateQuery.html): Amazon Bedrock ナレッジベースは、クエリの変換を取得プロセスから切り離します。この API オペレーションを使用することで、クエリを SQL に変換できます。

## `GenerateQuery` API を使用する場合
<a name="knowledge-base-generate-query-api"></a>

`GenerateQuery` API オペレーションからのレスポンスを後続の `Retrieve` または `RetrieveAndGenerate` アクションで使用するか、他のワークフローに挿入することができます。`GenerateQuery` を使用すると、ナレッジベースのデータソースの構造を考慮して、クエリを SQL クエリに効率的に変換できます。

自然言語クエリを SQL クエリに変換するには、[Amazon Bedrock エージェントのランタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-rt)を使用して [GenerateQuery](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GenerateQuery.html) リクエストを送信します。`GenerateQuery` リクエストには、次に示すようなフィールドがあります。
+ queryGenerationInput – `TEXT` を `type` として指定し、`text` フィールドにクエリを含めます。
**注記**  
クエリは英語で記述する必要があります。
+ transformationConfiguration – `TEXT_TO_SQL` を `mode` として指定します。`textToSqlConfiguration` フィールドで、`KNOWLEDGE_BASE` を `type` として指定します。次に、ナレッジベースの ARN を指定します。

レスポンスは、`queries` フィールドに [GeneratedQuery](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GeneratedQuery.html) オブジェクトを含む配列を返します。このオブジェクトには、`sql` フィールドのクエリの SQL クエリが含まれています。

## 主な考慮事項
<a name="knowledge-base-generate-query-considerations"></a>

以下は、構造化データを使用してクエリを生成する際の主な考慮事項です。
+ 

**クロスリージョン推論と構造化データの取得**  
構造化データ取り出しでは、クロスリージョン推論を使用して、推論リクエストを処理する最適な を地域AWS リージョン内で選択します。これにより追加料金が発生することはなく、利用可能なリソースとモデルの可用性を最大化することでカスタマーエクスペリエンスが向上します。

  クロス推論リクエストは、データが最初に存在する地域の一部AWS リージョンである 内に保持されます。データはソースリージョン内に保存されたままですが、入力プロンプトと出力結果がこのリージョン外に移動する可能性があります。すべてのデータは Amazon の安全なネットワーク経由で暗号化されて送信されます。

  詳細については、「[クロスリージョン推論によりスループットを向上させる](cross-region-inference.md)」を参照してください。
+ 

**生成された SQL クエリの精度**  
生成された SQL クエリの精度は、コンテキスト、テーブルスキーマ、およびユーザークエリの意図によって異なります。ワークロードで使用する前に、生成されたクエリを評価して、ユースケースに適していることを確認します。
+ 

**検索結果の数**  
レスポンスを生成するときは、次の制限が適用されます。
  + `InvokeAgent`、`RetrieveAndGenerate`、および `RetrieveAndGenerateStream` API オペレーションを使用する場合、取得結果のうち、レスポンス生成に使用されるのは 10 件のみです。
  + `InvokeAgent` API を使用しているとき、取得された結果の行数が 10 行を超える場合、取得された行の総数はレスポンスの生成時にエージェントに渡されません。代わりに `RetrieveAndGenerate` API を使用した場合、最終レスポンスの生成時に行の総数がプロンプトに含められます。
+ 

**`GenerateQuery` API クォータ**  
`GenerateQuery` API には、1 秒あたり 2 リクエストのクォータがあります。

## 生成されたクエリにアクセスするためのアクセス許可をロールに付与する
<a name="knowledge-base-structured-permissions"></a>

構造化データソースに接続されているナレッジベースで、生成されたクエリに対して追加のオペレーションを実行する場合は、`GenerateQuery` API アクションを実行するアクセス許可を付与する必要があります。構造化データストアに接続されたナレッジベースを IAM ロールがクエリできるようにするには、次のポリシーをロールにアタッチします。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "GetKB",
            "Effect": "Allow",
            "Action": [
                "bedrock:GetKnowledgeBase"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:knowledge-base/KnowledgeBaseId"
            ]
        },
        {
            "Sid": "GenerateQueryAccess",
            "Effect": "Allow",
            "Action": [
                "bedrock:GenerateQuery",
                "sqlworkbench:GetSqlRecommendations"
            ],
            "Resource": "*"
        },
        {
            "Sid": "Retrieve",
            "Effect": "Allow",
            "Action": [
                "bedrock:Retrieve"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:knowledge-base/KnowledgeBaseId"
            ]
        },
        {
            "Sid": "RetrieveAndGenerate",
            "Effect": "Allow",
            "Action": [
                "bedrock:RetrieveAndGenerate"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
```

------

ユースケースに応じて、不要なステートメントは削除できます。
+ `GetKB` および `GenerateQuery` ステートメントは、[GenerateQuery](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GenerateQuery.html) を呼び出して、ユーザークエリと接続されたデータソースを考慮した SQL クエリを生成するために必要です。
+ `Retrieve` ステートメントは、[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) を呼び出して構造化データストアからデータを取得するために必要です。
+ `RetrieveAndGenerate` ステートメントは、[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) を呼び出して構造化データストアからデータを取得し、データに基づいてレスポンスを生成するために必要です。

# Amazon Kendra GenAI Index グラフに接続されたナレッジベースのクエリ
<a name="kb-test-kendra"></a>

Amazon Kendra GenAI Index を使用するナレッジベースに対してクエリを実行して、データソースから関連するテキストのみを返すことができます。このクエリでは、標準のナレッジベースと同様に、[Amazon Bedrock エージェントのランタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-rt)を使用して、[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) リクエストを送信します。

Amazon Kendra GenAI Index を使用するナレッジベースから返されるレスポンスの構造は、標準の [ KnowledgeBaseRetrievalResult](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrievalResult.html) と同じです。ただし、レスポンスには Amazon Kendra の追加フィールドもいくつか含まれています。

次の表では、返されるレスポンスに含まれる可能性のある Amazon Kendra のフィールドを説明しています。Amazon Bedrock は、Amazon Kendra レスポンスからこれらのフィールドを取得します。レスポンスにこれらのフィールドが含まれていない場合は、Amazon Bedrock から返されたクエリ結果にもこれらのフィールドは含まれません。


| フィールド | 説明 | 
| --- | --- | 
|  x-amz-kendra-document-title  |  返されたドキュメントのタイトル  | 
|  x-amz-kendra-score-confidence  |  レスポンスがクエリにどの程度関連しているかの相対的なランキング。想定される値は、VERY\$1HIGH、HIGH、MEDIUM、LOW、NOT\$1AVAILABLE。  | 
|  x-amz-kendra-passage-id  |  返された文節の ID  | 
|  x-amz-kendra-document-id  |  返されたドキュメントの ID  | 
|  DocumentAttributes  |  Amazon Kendra のドキュメント属性またはメタデータフィールド。ナレッジベースから返されたクエリ結果は、これらをメタデータの key-value ペアとして保存します。この結果は、Amazon Bedrock からのメタデータフィルタリングを使用してフィルタリングできます。詳細については、「[DocumentAttribute](https://docs.aws.amazon.com/kendra/latest/APIReference/API_DocumentAttribute.html)」を参照してください。  | 

# Amazon Neptune Analytics グラフに接続されたナレッジベースをクエリする
<a name="kb-test-neptune"></a>

Amazon Neptune Analytics グラフを使用するナレッジベースをクエリして、データソースから関連するテキストのみを返すことができます。このクエリでは、標準のナレッジベースと同様に、[Amazon Bedrock エージェントのランタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-rt)を使用して、[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) リクエストを送信します。ナレッジベースのクエリ、データの取得、レスポンスの生成については、以下を参照してください。
+  [ナレッジベースのクエリを実行してデータを取得する](kb-test-retrieve.md) 
+  [ナレッジベースをクエリし、取得したデータに基づいてレスポンスを生成する](kb-test-retrieve-generate.md) 

Amazon Neptune Analytics グラフを使用するナレッジベースから返されるレスポンスの構造は、標準の [ KnowledgeBaseRetrievalResult](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrievalResult.html) と同じです。ただし、レスポンスには Amazon Neptune の追加フィールドもいくつか含まれています。

次の表では、返されるレスポンスに含まれる可能性のある Neptune Analytics のフィールドを説明しています。Amazon Bedrock は、Neptune Analytics レスポンスからこれらのフィールドを取得します。レスポンスにこれらのフィールドが含まれていない場合は、Amazon Bedrock から返されたクエリ結果にもこれらのフィールドは含まれません。


| フィールド | 説明 | 
| --- | --- | 
|  x-amz-bedrock-kb-source-uri  |  返されたドキュメントの Amazon S3 URL  | 
|  score  |  指定されたクエリとレスポンスがどの程度一致するかを示す距離の尺度。値が低いほど一致度が高いことを示す。  | 
|  x-amz-bedrock-kb-data-source-id  |  ナレッジベースに使用されるデータソースの ID  | 
|  x-amz-bedrock-kb-chunk-id  |  クエリの情報を取得してレスポンスを生成するために使用されたチャンクの ID  | 
|  DocumentAttributes  |  Amazon Kendra のドキュメント属性またはメタデータフィールド。ナレッジベースから返されたクエリ結果は、これらをメタデータの key-value ペアとして保存します。この結果は、Amazon Bedrock からのメタデータフィルタリングを使用してフィルタリングできます。  | 

## メタデータとフィルタリングの使用
<a name="kb-test-neptune-metadata"></a>

ナレッジベースにクエリを実行してレスポンスを生成する際、メタデータでフィルタリングして、より関連性の高いドキュメントを探すことができます。例えば、ドキュメントの公開日に基づいてフィルタリングできます。このためには、Amazon Bedrock コンソールまたはランタイム API [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html) を使用して、一般的なフィルター条件を指定できます。

以下は、Neptune Analytics グラフで `RetrievalFilter` API を使用する際の考慮事項です。
+ `startsWith` フィルターと `listContains` フィルターはサポートされていません。
+ `stringContains` フィルターのリストバリアントはサポートされていません。

例は、以下のとおりです。

```
"vectorSearchConfiguration": {
        "numberOfResults": 5,
        "filter": {
            "orAll": [
                {
                    "andAll": [
                        {
                            "equals": {
                                "key": "genre",
                                "value": "entertainment"
                            }
                        },
                        {
                            "greaterThan": {
                                "key": "year",
                                "value": 2018
                            }
                        }
                    ]
                },
                {
                    "andAll": [                        
                        {
                            "startsWith": {
                                "key": "author",
                                "value": "C"
                            }
                        }
                    ]
                }
            ]
        }
    }
}
```

# クエリとレスポンスの生成を設定してカスタマイズする
<a name="kb-test-config"></a>

情報取得とレスポンス生成の設定をカスタマイズすることで、レスポンスの関連性を高めることができます。例えば、ドキュメントのメタデータフィールド/属性にフィルターを適用して、最近更新されたドキュメント (最終更新日が新しいドキュメント) を利用できます。

**注記**  
**オーケストレーションと生成**を除く以下の設定はすべて、非構造化データソースにのみ適用されます。

コンソールまたは API でのこれらの設定の詳細については、以下の該当するトピックを選択してください。

## ソースチャンクの数
<a name="kb-test-config-number"></a>

ナレッジベースをクエリすると、Amazon Bedrock はデフォルトで最大 5 件の結果を返します。各結果はソースのチャンクに対応しています。

**注記**  
このパラメータにより、返す結果の最大数が設定されるため、レスポンスの結果の実際の数は指定された `numberOfResults` 値よりも少なくなる可能性があります。チャンキング戦略に階層チャンキングを設定している場合、`numberOfResults` パラメータはナレッジベースが取得する子チャンクの数にマッピングされます。同じ親チャンクを共有する子チャンクは、最終レスポンスで親チャンクに置き換えられるため、返される結果の数がリクエストされた量より少なくなる可能性があります。

返される結果の最大数を変更するには、使用する手段のタブを選択し、手順に従ってください。

------
#### [ Console ]

「[ナレッジベースのクエリを実行してデータを取得する](kb-test-retrieve.md)」または「[ナレッジベースをクエリし、取得したデータに基づいてレスポンスを生成する](kb-test-retrieve-generate.md)」のコンソールの手順に従ってください。**[設定]** ペインで、**[ソースチャンク]** セクションを展開し、返すソースチャンクの最大数を入力します。

------
#### [ API ]

[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) または [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) リクエストを行うときに、`retrievalConfiguration` フィールドを含め、[KnowledgeBaseRetrievalConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrievalConfiguration.html) オブジェクトを指定してください。このフィールドの位置を確認するには、API リファレンスで [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) リクエストと [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) リクエストの本文を参照してください。

次の JSON オブジェクトは、検索結果の最大数を設定するために、[KnowledgeBaseRetrievalConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrievalConfiguration.html) オブジェクトに最低限必要なフィールドを示しています。

```
"retrievalConfiguration": {
    "vectorSearchConfiguration": {
        "numberOfResults": number
    }
}
```

返される検索結果の最大数 (許容値の範囲については、[KnowledgeBaseRetrievalConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrievalConfiguration.html) の `numberOfResults` フィールドを参照) を `numberOfResults` フィールドに指定してください。

------

## 検索タイプ
<a name="kb-test-config-search"></a>

検索タイプは、ナレッジベースでデータソースをどのようにクエリするかを定義します。次の検索タイプを指定できます。

**注記**  
ハイブリッド検索は、フィルタリング可能なテキストフィールドを含んでいる、Amazon RDS、Amazon OpenSearch Serverless、および MongoDB ベクトルストアでのみサポートされています。別のベクトルストアを使用する場合や、ベクトルストアにフィルタリング可能なテキストフィールドが含まれていない場合は、セマンティック検索が使用されます。
+ **デフォルト** – Amazon Bedrock が検索戦略を自動判定します。
+ **ハイブリッド** – ベクトル埋め込みの検索 (セマンティック検索) と未加工テキストの検索を組み合わせます。
+ **セマンティック** – ベクトル埋め込みのみを検索します。

検索タイプの定義方法については、使用する手段のタブを選択し、手順に従ってください。

------
#### [ Console ]

「[ナレッジベースのクエリを実行してデータを取得する](kb-test-retrieve.md)」または「[ナレッジベースをクエリし、取得したデータに基づいてレスポンスを生成する](kb-test-retrieve-generate.md)」のコンソールの手順に従ってください。**[設定]** ペインを開いたら、**[検索タイプ]** セクションを展開し、**[デフォルト検索をオーバーライド]** をオンにして、オプションを選択します。

------
#### [ API ]

[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) または [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) リクエストを行うときに、`retrievalConfiguration` フィールドを含め、[KnowledgeBaseRetrievalConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrievalConfiguration.html) オブジェクトを指定してください。このフィールドの位置を確認するには、API リファレンスで [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) リクエストと [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) リクエストの本文を参照してください。

次の JSON オブジェクトは、検索タイプを設定するために、[KnowledgeBaseRetrievalConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrievalConfiguration.html) オブジェクトに最低限必要なフィールドを示しています。

```
"retrievalConfiguration": {
    "vectorSearchConfiguration": {
        "overrideSearchType": "HYBRID | SEMANTIC"
    }
}
```

`overrideSearchType` フィールドに検索タイプを指定します。次のオプションがあります。
+ 値を指定しない場合、ベクトルストアの設定に最適な検索戦略が自動的に判定されます。
+ **HYBRID** – ベクトル埋め込みと未加工テキストの両方を使用してナレッジベースをクエリします。
+ **SEMANTIC** – ベクトル埋め込みを使用してナレッジベースをクエリします。

------

## ストリーミング
<a name="kb-test-config-stream"></a>

------
#### [ Console ]

「[ナレッジベースをクエリし、取得したデータに基づいてレスポンスを生成する](kb-test-retrieve-generate.md)」のコンソールの手順に従ってください。**[設定]** ペインを開くと、**[ストリーミングの環境設定]** セクションを展開し、**[応答をストリーム]** をオンにします。

------
#### [ API ]

レスポンスをストリーミングするには、[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerateStream.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerateStream.html) API を使用します。フィールドに入力する方法の詳細については、「[ナレッジベースをクエリし、取得したデータに基づいてレスポンスを生成する](kb-test-retrieve-generate.md)」の **[API]** タブを参照してください。

------

## メタデータの手動フィルタリング
<a name="kb-test-config-filters"></a>

ドキュメントのフィールド/属性にフィルターを適用して、レスポンスの関連性をさらに高めることができます。データソースには、フィルタリングするドキュメントメタデータ属性/フィールドを含めることができ、埋め込みに含めるフィールドを指定できます。

例えば、「epoch\$1modification\$1time」は、ドキュメントが最後に更新された 1970 年 1 月 1 日 (UTC) からの秒数で表されます。「epoch\$1modification\$1time」にフィルターを適用して、その値が特定の数*より大きい*最新のデータだけを取得できます。そうして取得した最新のドキュメントをクエリで使用できます。

ナレッジベースのクエリ時にフィルターを使用するには、ナレッジベースが次の要件を満たしていることを確認してください。
+ データソースコネクタを設定する場合、ほとんどのコネクタはドキュメントの主要なメタデータフィールドをクローリングします。Amazon S3 バケットをデータソースとして使用する場合は、バケットに関連付けられているファイルまたはドキュメントの `fileName.extension.metadata.json` が少なくとも 1 つ含まれている必要があります。メタデータファイルの設定の詳細については、「[接続設定](s3-data-source-connector.md#configuration-s3-connector)」の「**ドキュメントメタデータフィールド**」を参照してください。
+ ナレッジベースのベクトルインデックスが Amazon OpenSearch Serverless ベクトルストアにある場合は、ベクトルインデックスが `faiss` エンジンで設定されていることを確認してください。ベクトルインデックスが `nmslib` エンジンで設定されている場合は、次のいずれかを行う必要があります。
  + コンソールで[新しいナレッジベースを作成](knowledge-base-create.md)し、Amazon Bedrock が Amazon OpenSearch Serverless でベクトルインデックスを自動作成できるようにします。
  + ベクトルストアに[別のベクトルインデックスを作成](knowledge-base-setup.md)し、**[エンジン]** として `faiss` を選択します。次に、[新しいナレッジベースを作成](knowledge-base-create.md)し、新しいベクトルインデックスを指定します。
+ ナレッジベースにより、S3 ベクトルバケットでベクトルインデックスが使用されている場合、`startsWith` および `stringContains`フィルターを使用することはできません。
+ Amazon Aurora データベースクラスター内の既存のベクトルインデックスにメタデータを追加する場合は、カスタムメタデータ列のフィールド名を指定して、すべてのメタデータを 1 つの列に保存することをお勧めします。[データインジェスト](kb-data-source-sync-ingest.md)中、この列はデータソースからメタデータファイル内のすべての情報を入力するために使用されます。このフィールドを指定することにした場合は、この列にインデックスを作成する必要があります。
  + コンソールで[新しいナレッジベースを作成](knowledge-base-create.md)し、Amazon Bedrock を使用して Amazon Aurora データベースを設定すると、自動的に 1 つの列が作成され、メタデータファイルからの情報が入力されます。
  + ベクトルストアに[別のベクトルインデックスを作成する](knowledge-base-setup.md)ことを選択した場合、メタデータファイルからの情報を保存するカスタムメタデータフィールド名を指定する必要があります。このフィールド名を指定しない場合は、ファイル内のメタデータ属性ごとに列を作成し、データ型 (テキスト、数値、またはブール値) を指定する必要があります。例えば、属性 `genre` がデータソースに存在する場合は、`genre` という名前の列を追加し、`text` をデータ型として指定します。インジェスト中、これらの別個の列には対応する属性値が入力されます。

データソースに PDF ドキュメントがあり、ベクトルストアに Amazon OpenSearch Serverless を使用している場合: Amazon Bedrock ナレッジベースによりドキュメントページ番号が生成され、*x-amz-bedrock-kb-document-page-number* というメタデータフィールド/属性に保存されます。ドキュメントのチャンキングを選択しない場合、メタデータフィールドに保存されているページ番号はサポートされない点に注意してください。

クエリ時に結果をフィルタリングするには、次のフィルタリング演算子を使用できます。


**フィルタリング演算子**  

| オペレーター | コンソール | API フィルター名 | サポートされている属性データ型 | フィルタリング結果 | 
| --- | --- | --- | --- | --- | 
| Equals (等しい) | = | [equals](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-equals) | 文字列、数値、ブール値 | 属性が指定した値と一致する | 
| Not equals (等しくない) | \$1= | [notEquals](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-notEquals) | 文字列、数値、ブール値 | 属性が指定した値と一致しない | 
| Greater than (より大きい) | > | [greaterThan](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-greaterThan) | 数値 | 属性が指定した値より大きい | 
| Greater than or equals (以上) | >= | [greaterThanOrEquals](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-greaterThanOrEquals) | 数値 | 属性が指定した値以上 | 
| Less than (より小さい) | < | [lessThan](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-lessThan) | 数値 | 属性が指定した値より小さい | 
| Less than or equals (以下) | <= | [lessThanOrEquals](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-lessThanOrEquals) | 数値 | 属性が指定した値以下 | 
| In (中にある) | : | [in](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-in) | 文字列リスト | 属性が指定したリスト内にある (現時点では、Amazon OpenSearch Serverless および Neptune Analytics GraphRAG ベクトルストアで最適にサポートされています) | 
| Not in (中にない) | \$1: | [notIn](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-notIn) | 文字列リスト | 属性が指定したリスト内にない (現時点では、Amazon OpenSearch Serverless および Neptune Analytics GraphRAG ベクトルストアで最適にサポートされています) | 
| を含む文字列 | 利用不可 | [stringContains](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-stringContains) | string | 属性は文字列にする必要があります。属性名はキーと一致しており、その値は、部分文字列として指定した値を含む文字列、または部分文字列として指定した値を含むメンバーを含むリストです (現時点では、Amazon OpenSearch Serverless ベクトルストアで最適にサポートされています。Neptune Analytics GraphRAG ベクトルストアでは文字列バリアントがサポートされますが、このフィルターのリストバリアントはサポートされません)。 | 
| を含むリスト | 利用不可 | [listContains](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-listContains) | string | 属性は文字列リストにする必要があります。属性名はキーと一致しており、その値はメンバーの 1 つとして指定した値を含むリストです (現時点では、Amazon OpenSearch Serverless ベクトルストアで最適にサポートされています)。 | 

フィルタリング演算子を組み合わせる場合は、次の論理演算子を使用できます。


**論理演算子**  

| 演算子 | コンソール | API フィルターフィールド名 | フィルタリング結果 | 
| --- | --- | --- | --- | 
| And | and | [andAll](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-andAll) | 結果がグループ内のすべてのフィルタリング式を満たす | 
| Or | or | [orAll](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-orAll) | 結果がグループ内のフィルタリング式の少なくとも 1 つを満たす | 

メタデータを使用して結果をフィルタリングする方法については、使用する手段のタブを選択し、手順に従ってください。

------
#### [ Console ]

「[ナレッジベースのクエリを実行してデータを取得する](kb-test-retrieve.md)」または「[ナレッジベースをクエリし、取得したデータに基づいてレスポンスを生成する](kb-test-retrieve-generate.md)」のコンソールの手順に従ってください。**[設定]** ペインを開くと、**[フィルター]** セクションが表示されます。次の手順では、さまざまなユースケースについて説明します。
+ フィルターを追加するには、メタデータ属性、フィルタリング演算子、値をボックスに入力し、フィルタリング式を作成します。式の各部を空白で区切ってください。**Enter** キーを押すと、フィルターが追加されます。

  使用できるフィルタリング演算子のリストについては、上記の「**フィルタリング演算子**」の表を参照してください。また、メタデータ属性の後に空白を追加すると、フィルタリング演算子のリストが表示されます。
**注記**  
文字列は引用符で囲む必要があります。

  例えば、ソースドキュメントからの結果をフィルタリングして、`genre` メタデータ属性の値が `"entertainment"` であるものを取得するには、フィルターとして **genre = "entertainment"** を追加します。  
![\[フィルターを 1 つ追加します。\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/kb/filter-one.png)
+ 別のフィルターを追加するには、別のフィルタリング式をボックスに入力し、**Enter** キーを押します。グループには最大 5 つのフィルターを追加できます。  
![\[別のフィルターを追加します。\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/kb/filter-more.png)
+ デフォルトでは、指定したすべてのフィルタリング式を満たすクエリ結果が返されます。フィルタリング式の少なくとも 1 つを満たす結果を返すには、2 つのフィルタリングオペレーションの間にある **[AND]** ドロップダウンメニューを選択し、**[OR]** を選択します。  
![\[フィルター間で論理演算子を変更します。\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/kb/filter-logical.png)
+ 異なる論理演算子を組み合わせるには、**[\$1 グループを追加]** を選択してフィルターグループを追加します。新しいグループにフィルタリング式を入力します。最大 5 個のフィルターグループを追加できます。  
![\[フィルターグループを追加して、さまざまな論理演算子を組み合わせます。\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/kb/filter-group.png)
+ すべてのフィルタリンググループ間で使用される論理演算子を変更するには、2 つのフィルターグループの間にある **[AND]** ドロップダウンメニューを選択し、**[OR]** を選択します。  
![\[フィルターグループ間で論理演算子を変更します。\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/kb/filter-group-logical.png)
+ フィルターを編集するには、フィルターを選択し、フィルタリングオペレーションを変更して **[適用]** を選択します。  
![\[フィルターを編集します。\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/kb/filter-edit.png)
+ フィルターグループを削除するには、グループの横にあるごみ箱アイコン (![\[Trapezoid-shaped diagram showing data flow from source to destination through AWS Transfer Family.\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/icons/trash.png)) を選択します。フィルターを削除するには、フィルターの横にある削除アイコン (![\[Close or cancel icon represented by an "X" symbol.\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/icons/close.png)) を選択します。  
![\[フィルターまたはフィルターグループを削除します。\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/kb/filter-delete.png)

次の図は、フィルターの設定例を示しています。**2018** 以降に執筆された **"entertainment"** ジャンルのドキュメントを全部と、ジャンルが **"cooking"** または **"sports"** で作成者が **"C"** で始まるドキュメントを返します。

![\[フィルターの設定例。\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/kb/filter-example.png)


------
#### [ API ]

[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) または [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) リクエストを行うときに、`retrievalConfiguration` フィールドを含め、[KnowledgeBaseRetrievalConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrievalConfiguration.html) オブジェクトを指定してください。このフィールドの位置を確認するには、API リファレンスで [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) リクエストと [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) リクエストの本文を参照してください。

次の JSON オブジェクトは、さまざまなユースケースに応じたフィルターを設定するために、[KnowledgeBaseRetrievalConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrievalConfiguration.html) オブジェクトに最低限必要なフィールドを示しています。

1. フィルタリング演算子を 1 つ使用します (上記の「**フィルタリング演算子**」の表を参照)。

   ```
   "retrievalConfiguration": {
       "vectorSearchConfiguration": {
           "filter": {
               "<filter-type>": {
                   "key": "string",
                   "value": "string" | number | boolean | ["string", "string", ...]
               }
           }
       }
   }
   ```

1. 論理演算子 (上記の「**論理演算子**」の表を参照) を使用して、最大 5 つまで組み合わせます。

   ```
   "retrievalConfiguration": {
       "vectorSearchConfiguration": {
           "filter": {
               "andAll | orAll": [
                   "<filter-type>": {
                       "key": "string",
                       "value": "string" | number | boolean | ["string", "string", ...]
                   },
                   "<filter-type>": {
                       "key": "string",
                       "value": "string" | number | boolean | ["string", "string", ...]
                   },
                   ...
               ]
           }
       }
   }
   ```

1. 論理演算子を使用して最大 5 つのフィルタリング演算子を 1 つのフィルターグループに結合し、2 番目の論理演算子を使用してそのフィルターグループを別のフィルタリング演算子と結合します。

   ```
   "retrievalConfiguration": {
       "vectorSearchConfiguration": {
           "filter": {
               "andAll | orAll": [
                   "andAll | orAll": [
                       "<filter-type>": {
                           "key": "string",
                           "value": "string" | number | boolean | ["string", "string", ...]
                       },
                       "<filter-type>": {
                           "key": "string",
                           "value": "string" | number | boolean | ["string", "string", ...]
                       },
                       ...
                   ],
                   "<filter-type>": {
                       "key": "string",
                       "value": "string" | number | boolean | ["string", "string", ...]
                   }
               ]
           }
       }
   }
   ```

1. 最大 5 つのフィルターグループを別の論理演算子に組み込むことで結合します。作成できる埋め込みのレベルは 1 つです。

   ```
   "retrievalConfiguration": {
       "vectorSearchConfiguration": {
           "filter": {
               "andAll | orAll": [
                   "andAll | orAll": [
                       "<filter-type>": {
                           "key": "string",
                           "value": "string" | number | boolean | ["string", "string", ...]
                       },
                       "<filter-type>": {
                           "key": "string",
                           "value": "string" | number | boolean | ["string", "string", ...]
                       },
                       ...
                   ],
                   "andAll | orAll": [
                       "<filter-type>": {
                           "key": "string",
                           "value": "string" | number | boolean | ["string", "string", ...]
                       },
                       "<filter-type>": {
                           "key": "string",
                           "value": "string" | number | boolean | ["string", "string", ...]
                       },
                       ...
                   ]
               ]
           }
       }
   }
   ```

次の表では、使用できるフィルタータイプを説明しています。


****  

| フィールド | サポートされているデータ型 | フィルタリング結果 | 
| --- | --- | --- | 
| equals | 文字列、数値、ブール値 | 属性が指定した値と一致する | 
| notEquals | 文字列、数値、ブール値 | 属性が指定した値と一致しない  | 
| greaterThan | 数値 | 属性が指定した値より大きい | 
| greaterThanOrEquals | 数値 | 属性が指定した値以上 | 
| lessThan | 数値 | 属性が指定した値より小さい  | 
| lessThanOrEquals | 数値 | 属性が指定した値以下 | 
| in | 文字列のリスト | 属性が指定したリストに内にある | 
| notIn | 文字列のリスト | 属性が指定したリスト内にない | 
| startsWith | string | 属性が指定した文字列で始まる (Amazon OpenSearch Serverless ベクトルストアでのみサポート) | 

フィルタータイプを組み合わせるには、次のいずれかの論理演算子を使用できます。


****  

| フィールド | マッピング対象 | フィルタリング結果 | 
| --- | --- | --- | 
| andAll | 最大 5 つのフィルタータイプのリスト | 結果がグループ内のすべてのフィルタリング式を満たす | 
| orAll | 最大 5 つのフィルタータイプのリスト | 結果がグループ内のフィルタリング式の少なくとも 1 つを満たす | 

例については、「[Send a query and include filters (Retrieve)](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html#API_agent-runtime_Retrieve_Example_2)」および「[Send a query and include filters (RetrieveAndGenerate)](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html#API_agent-runtime_RetrieveAndGenerate_Example_2)」を参照してください。

------

## 暗黙的なメタデータフィルタリング
<a name="kb-test-config-implicit"></a>

Amazon Bedrock ナレッジベースでは、ユーザークエリとメタデータスキーマに基づいて取得フィルターが生成および適用されます。

**注記**  
この機能は現在のところ、Anthropic Claude 3.5 Sonnet でのみ機能します。

`implicitFilterConfiguration` は、[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) リクエスト本文の `vectorSearchConfiguration` で指定されます。次のフィールドを含めます。
+ `metadataAttributes` – この配列では、モデルによってフィルターが生成されるメタデータ属性を記述するスキーマを指定します。
+ `modelArn` – 使用するモデルの ARN。

`metadataAttributes` の配列に追加できるメタデータスキーマの例を次に示します。

```
[
    {
        "key": "company",
        "type": "STRING",
        "description": "The full name of the company. E.g. `Amazon.com, Inc.`, `Alphabet Inc.`, etc"
    },
    {
        "key": "ticker",
        "type": "STRING",
        "description": "The ticker name of a company in the stock market, e.g. AMZN, AAPL"
    },
    {
        "key": "pe_ratio",
        "type": "NUMBER",
        "description": "The price to earning ratio of the company. This is a measure of valuation of a company. The lower the pe ratio, the company stock is considered chearper."
    },
    {
        "key": "is_us_company",
        "type": "BOOLEAN",
        "description": "Indicates whether the company is a US company."
    },
    {
        "key": "tags",
        "type": "STRING_LIST",
        "description": "Tags of the company, indicating its main business. E.g. `E-commerce`, `Search engine`, `Artificial intelligence`, `Cloud computing`, etc"
    }
]
```

## ガードレール
<a name="kb-test-config-guardrails"></a>

ユースケースと責任ある AI ポリシーに応じて、ナレッジベースに保護対策を実装できます。さまざまなユースケースに合わせた複数のガードレールを作成し、複数のリクエストやレスポンスの条件に適用することで、一貫したユーザーエクスペリエンスを提供し、ナレッジベース全体で安全性の統制を標準化できます。望ましくないトピックを禁じる拒否トピックや、モデルの入力とレスポンスで有害なコンテンツをブロックするコンテンツフィルターを設定できます。詳細については、「[Amazon Bedrock ガードレールを使用して有害なコンテンツを検出してフィルタリングする](guardrails.md)」を参照してください。

**注記**  
現時点では、Claude 3 Sonnet と Haiku では、ナレッジベースのコンテキストグラウンディングでガードレールを使用することはできません。

一般的なプロンプトエンジニアリングのガイドラインについては、「[プロンプトエンジニアリングの概念](prompt-engineering-guidelines.md)」を参照してください。

任意の方法のタブを選択し、その手順に従います。

------
#### [ Console ]

「[ナレッジベースのクエリを実行してデータを取得する](kb-test-retrieve.md)」または「[ナレッジベースをクエリし、取得したデータに基づいてレスポンスを生成する](kb-test-retrieve-generate.md)」のコンソールの手順に従ってください。テストウィンドウで、**[回答を生成]** をオンにします。次に、**[設定]** ペインで、**[ガードレール]** セクションを展開します。

1. **[ガードレール]** セクションで、ガードレールの **[名前]** と **[バージョン]** を選択します。選択したガードレールとバージョンの詳細を確認するには、**[表示]** を選択します。

   または、**[ガードレール]** リンクを選択して、新規作成することもできます。

1. 編集が終了したら、**[変更の保存]** を選択します。保存せずに終了するには、**[変更を破棄]** を選択します。

------
#### [ API ]

[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) リクエストを行う際に、そのリクエストでガードレールを使用するには、`generationConfiguration` 内に `guardrailConfiguration` フィールドを含めます。このフィールドの位置を確認するには、API リファレンスで [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) リクエストの本文を参照してください。

次の JSON オブジェクトは、`guardrailConfiguration` を設定するために、[GenerationConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GenerationConfiguration.html) に最低限必要なフィールドを示しています。

```
"generationConfiguration": {
    "guardrailConfiguration": {
        "guardrailId": "string",
        "guardrailVersion": "string"
    }
}
```

選択したガードレールの `guardrailId` と `guardrailVersion` を指定してください。

------

## 再ランク付け
<a name="kb-test-config-rerank"></a>

リランカーモデルを使用して、ナレッジベースクエリの結果を再ランク付けできます。「[ナレッジベースのクエリを実行してデータを取得する](kb-test-retrieve.md)」または「[ナレッジベースをクエリし、取得したデータに基づいてレスポンスを生成する](kb-test-retrieve-generate.md)」のコンソールの手順に従ってください。**[設定]** ペインを開いたら、**[再ランキング]** セクションを展開します。リランカーモデルを選択し、必要に応じてアクセス許可を更新して、追加のオプションを変更します。プロンプトを入力し、**[実行]** を選択して、再ランク付け後に結果をテストします。

## クエリ分解
<a name="kb-test-query-modifications"></a>

クエリ分解とは、複雑なクエリを管理しやすい細かいサブクエリに分解する手法です。このアプローチは、特に最初のクエリが多面的であるか、範囲が広すぎる場合に、より正確で関連性の高い情報を取得するのに役立ちます。このオプションを有効にすると、ナレッジベースに対して複数のクエリが実行され、最終レスポンスの精度が高まる可能性があります。

例えば、「*2022 FIFA ワールドカップでは、アルゼンチンとフランスのどちらがゴール数が多かったか*」のような質問に対して、Amazon Bedrock ナレッジベースは最終的な回答を生成する前に、まず次のようなサブクエリを生成できます。

1. *2022 FIFA ワールドカップ決勝のアルゼンチンのゴール数*

1. *2022 FIFA ワールドカップ決勝のフランスのゴール数*

------
#### [ Console ]

1. データソースを作成して同期するか、既存のナレッジベースを使用します。

1. テストウィンドウを表示し、設定パネルを開きます。

1. クエリ分解を有効にします。

------
#### [ API ]

```
POST /retrieveAndGenerate HTTP/1.1
Content-type: application/json
{
   "input": {
      "text": "string"
   },
   "retrieveAndGenerateConfiguration": {
      "knowledgeBaseConfiguration": {
         "orchestrationConfiguration": { // Query decomposition
           "queryTransformationConfiguration": {
                "type": "string" // enum of QUERY_DECOMPOSITION
           }
         },
...}
}
```

------

## 推論パラメータ
<a name="kb-test-model-params"></a>

情報の取得に基づいてレスポンスを生成する場合、[推論パラメータ](inference-parameters.md)を使用して、推論中のモデルの動作をより細かく制御し、モデルの出力に影響を与えることができます。

推論パラメータの変更方法については、使用する手段のタブを選択し、手順に従ってください。

------
#### [ Console ]

**ナレッジベースのクエリ時に推論パラメータを変更するには** – 「[ナレッジベースのクエリを実行してデータを取得する](kb-test-retrieve.md)」または「[ナレッジベースをクエリし、取得したデータに基づいてレスポンスを生成する](kb-test-retrieve-generate.md)」のコンソールの手順に従ってください。**[設定]** ペインを開くと、**[推論パラメータ]** セクションが表示されます。パラメータを適宜変更してください。

**ドキュメントチャット機能の使用時に推論パラメータを変更するには** – 「[ナレッジベースを設定せずにドキュメントとチャットする](knowledge-base-chatdoc.md)」の手順に従ってください。**[設定]** ペインで **[推論パラメータ]** セクションを展開し、パラメータを適宜変更します。

------
#### [ API ]

[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) API の呼び出しでモデルパラメータを指定します。`knowledgeBaseConfiguration` (ナレッジベースをクエリする場合) または `externalSourcesConfiguration` ([ドキュメントチャット](knowledge-base-chatdoc.md)機能を使用する場合) の `inferenceConfig` フィールドに推論パラメータを指定することで、モデルをカスタマイズできます。

`inferenceConfig` フィールド内に `textInferenceConfig` フィールドがあり、次のパラメータを指定できます。
+ 温度
+ topP
+ maxTokenCount
+ stopSequences

`externalSourcesConfiguration` と `knowledgeBaseConfiguration` の両方の `inferenceConfig` フィールドで次のパラメータを使用して、モデルをカスタマイズできます。
+ 温度
+ topP
+ maxTokenCount
+ stopSequences

これらの各パラメータの機能の詳細については、「[推論パラメータでレスポンスの生成に影響を与える](inference-parameters.md)」を参照してください。

さらに、`textInferenceConfig` でサポートされていないカスタムパラメータを `additionalModelRequestFields` マップで指定することもできます。特定のモデルに固有のパラメータをこの引数で指定できます。固有のパラメータについては、「[Inference request parameters and response fields for foundation models](model-parameters.md)」を参照してください。

`textInferenceConfig` でパラメータを省略すると、デフォルトの値が使用されます。`textInferneceConfig` のパラメータが認識されない場合は無視され、`AdditionalModelRequestFields` のパラメータが認識されない場合は例外が発生します。

`additionalModelRequestFields` と `TextInferenceConfig` の両方に同じパラメータが指定されている場合は、検証例外がスローされます。

**RetrieveAndGenerate でモデルパラメータを使用する**

 以下は、`RetrieveAndGenerate` リクエスト本文の `generationConfiguration` の `inferenceConfig` と `additionalModelRequestFields` の構造例です。

```
"inferenceConfig": {
    "textInferenceConfig": {
        "temperature": 0.5,  
        "topP": 0.5,
        "maxTokens": 2048,
        "stopSequences": ["\nObservation"]
    }
},
"additionalModelRequestFields": {
    "top_k": 50
}
```

 上の例は、`temperature` を 0.5、`top_p` を 0.5、`maxTokens` を 2048 に設定し、生成されたレスポンスで文字列「\$1nObservation」が見つかると生成を停止します。また、`top_k` のカスタム値として 50 を渡しています。

------

## ナレッジベースのプロンプトテンプレート: オーケストレーションと生成
<a name="kb-test-config-prompt-template"></a>

ナレッジベースをクエリし、レスポンスの生成をリクエストすると、Amazon Bedrock は、指示とコンテキストをユーザーのクエリと組み合わせるプロンプトテンプレートを使用して、レスポンスの生成のためにモデルに送信される生成プロンプトを作成します。オーケストレーションプロンプトをカスタマイズすると、ユーザーのプロンプトが検索クエリに変わります。プロンプトテンプレートは、次のツールを使用して設計できます。
+ **プロンプトプレースホルダー** – Amazon Bedrock ナレッジベースの事前定義された変数。実行時のナレッジベースのクエリ中に、動的に値が入力されます。システムプロンプトでは、これらのプレースホルダーは `$` 記号で囲まれています。次のリストでは、使用できるプレースホルダーを説明しています。
**注記**  
`$output_format_instructions$` プレースホルダーは、レスポンスに表示される引用の必須フィールドです。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/kb-test-config.html)
+ **XML タグ** – Anthropic モデルでは、プロンプトを構造化および記述するための XML タグの使用がサポートされています。最適な結果が得るためには、わかりやすいタグ名を使用します。例えば、デフォルトのシステムプロンプトには `<database>` タグがありますが、これは、以前に尋ねられた質問のデータベースを記述するために使用します。詳細については、「[Anthropic ユーザーガイド](https://docs.anthropic.com/en/docs/welcome)」の「[XML タグを使用する](https://docs.anthropic.com/claude/docs/use-xml-tags)」を参照してください。

一般的なプロンプトエンジニアリングのガイドラインについては、「[プロンプトエンジニアリングの概念](prompt-engineering-guidelines.md)」を参照してください。

任意の方法のタブを選択し、その手順に従います。

------
#### [ Console ]

「[ナレッジベースのクエリを実行してデータを取得する](kb-test-retrieve.md)」または「[ナレッジベースをクエリし、取得したデータに基づいてレスポンスを生成する](kb-test-retrieve-generate.md)」のコンソールの手順に従ってください。テストウィンドウで、**[回答を生成]** をオンにします。次に、**[設定]** ペインで、**[ナレッジベースプロンプトのテンプレート]** セクションを展開します。

1. **[編集]** を選択します。

1. プロンプトプレースホルダーや XML タグなど、テキストエディタでシステムプロンプトを適宜編集します。デフォルトのプロンプトテンプレートに戻すには、**[デフォルトにリセット]** を選択します。

1. 編集が終了したら、**[変更の保存]** を選択します。システムプロンプトを保存せずに終了するには、**[変更を破棄]** を選択します。

------
#### [ API ]

[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) リクエストを行うときに、`generationConfiguration` フィールドを含め、[GenerationConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GenerationConfiguration.html) オブジェクトを指定してください。このフィールドの位置を確認するには、API リファレンスで [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) リクエストの本文を参照してください。

次の JSON オブジェクトは、検索結果の最大数を設定するために、[GenerationConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GenerationConfiguration.html) オブジェクトに最低限必要なフィールドを示しています。

```
"generationConfiguration": {
    "promptTemplate": {
        "textPromptTemplate": "string"
    }
}
```

必要に応じて、プロンプトプレースホルダーや XML タグなど、カスタムプロンプトテンプレートを `textPromptTemplate` フィールドに入力します。システムプロンプトで使用できる文字数の上限については、「[GenerationConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GenerationConfiguration.html)」の `textPromptTemplate` フィールドを参照してください。

------

# ナレッジベースを使用して推論モデルのレスポンス生成を設定する
<a name="kb-test-configure-reasoning"></a>

特定の基盤モデルでは、モデル推論を実行でき、より大きく複雑なタスクが、より小さくシンプルなステップに分割されます。このプロセスは、多くの場合、思考の連鎖 (CoT) 推論と呼ばれ、モデルが応答する前に考える機会を与えることで、モデルの精度を高めることができます。モデル推論は、マルチステップ分析、数値問題、複雑な推論タスクなどにおいて最も有用です。詳細については、「[モデル推論を使用してモデルのレスポンスを強化する](inference-reasoning.md)」を参照してください。

**注記**  
このページでは、Amazon Bedrock ナレッジベース専用の推論設定を使用する方法について説明します。`InvokeModel` API を使用して直接モデル呼び出しの推論を設定する方法については、「[モデル推論を使用してモデルのレスポンスを強化する](inference-reasoning.md)」を参照してください。

モデル推論を有効にすると、精度が向上し、引用結果が改善されますが、レイテンシーが増加する可能性があります。以下は、データソースをクエリし、Amazon Bedrock ナレッジベースで推論モデルを使用してレスポンスを生成する際の考慮事項です。

**Topics**
+ [推論モデル](#kb-test-reasoning-models)
+ [Claude 3.7 Sonnet でモデル推論を使用する](#kb-test-reasoning-using)
+ [一般的な考慮事項](#kb-test-reasoning-general-considerations)
+ [API の取得と生成に関する考慮事項](#kb-test-reasoning-api-considerations)

## 推論モデル
<a name="kb-test-reasoning-models"></a>

モデル推論は、次のモデルで使用できます。


| 基盤モデル | モデル ID | トークンの数 | 推論設定 | 
| --- | --- | --- | --- | 
| Anthropic Claude Opus 4 | anthropic.claude-opus-4-20250514-v1:0 | このモデルには 32,768 個のトークンがあり、出力トークンと推論トークンの両方が含まれます。 | このモデルでは、設定可能なトークン予算を使用して、推論を有効または無効にすることができます。デフォルトでは、推論は無効になっています。 | 
| Anthropic Claude Sonnet 4 | anthropic.claude-sonnet-4-20250514-v1:0 | このモデルには 65,536 個のトークンがあり、出力トークンと推論トークンの両方が含まれます。 | このモデルでは、設定可能なトークン予算を使用して、推論を有効または無効にすることができます。デフォルトでは、推論は無効になっています。 | 
| Anthropic Claude 3.7 Sonnet | anthropic.claude-3-7-sonnet-20250219-v1:0 | このモデルには 65,536 個のトークンがあり、出力トークンと推論トークンの両方が含まれます。 | このモデルでは、設定可能なトークン予算を使用して、推論を有効または無効にすることができます。デフォルトでは、推論は無効になっています。 | 
| DeepSeek DeepSeek-R1 | deepseek.r1-v1:0 | このモデルには 8,192 個のトークンがあり、出力トークンと推論トークンの両方が含まれます。思考トークンの数は設定できません。出力トークンの最大数は 8192 以下にする必要があります。 | このモデルでは、推論は常に有効になっています。このモデルは、推論機能のオンとオフの切り替えをサポートしていません。 | 

## Claude 3.7 Sonnet でモデル推論を使用する
<a name="kb-test-reasoning-using"></a>

**注記**  
DeepSeek-R1 モデルでは、モデル推論は常に有効になっています。このモデルは、推論機能のオンとオフの切り替えをサポートしていません。

Claude 3.7 Sonnet モデルを使用する場合、[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) API の `additionalModelRequestFields` パラメータを使用してモデルの推論を有効または無効にすることができます。このパラメータは、すべてのキーと値のペアを受け入れます。例えば、次に示すように、`reasoningConfig` フィールドを追加し、`type` キーを使用して推論を有効または無効にできます。

```
{
   "input": { 
      "text": "string",
      "retrieveAndGenerateConfiguration": { 
      "knowledgeBaseConfiguration": { 
         "generationConfiguration": { 
            "additionalModelRequestFields": {
                "reasoningConfig" : {
                    "type": "enabled",
                    "budget_tokens": INT_VAL, #required when enabled
                }
            }
         },
         "knowledgeBaseId": "string",
      },
      "type": "string"
   },
   "sessionId": "string"
}
```

## 一般的な考慮事項
<a name="kb-test-reasoning-general-considerations"></a>

ナレッジベースに推論モデルを使用する際の一般的な考慮事項を以下に示します。
+ 推論モデルがクエリに応答するまでに最大 5 分かかります。モデルがクエリに応答するまで 5 分以上かかった場合、タイムアウトが発生します。
+ 5 分間のタイムアウトを超えないよう、モデル推論は、クエリとレスポンスの生成を設定する生成ステップでのみ有効になります。オーケストレーションステップにモデルの推論を含めることはできません。
+ 推論モデルは、最大 8192 個のトークンを使用してクエリに応答できます。これには、出力トークンと思考トークンの両方が含まれます。この制限を超える出力トークンの最大数をリクエストするリクエストは、エラーになります。

## API の取得と生成に関する考慮事項
<a name="kb-test-reasoning-api-considerations"></a>

推論モデルに [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) API を使用する場合の考慮事項を以下に示します。
+ デフォルトでは、Claude 3.7 Sonnet を含むすべてのモデルで推論が無効になっている場合、温度がゼロに設定されます。推論が有効になっている場合は、温度を 1 に設定する必要があります。

  ```
  "inferenceConfig": {
      "textInferenceConfig": {
          "maxTokens": 8192,
          "temperature": 1
      }
  }
  ```
+ Claude 3.7 Sonnet モデルで推論が有効になっている場合、パラメータトップ P を無効にする必要があります。トップ P は、生成時に選択するトークンのパーセンタイルを決定する追加のモデルリクエストフィールドです。デフォルトでは、他の Anthropic Claude モデルのトップ P 値は 1 です。Claude 3.7 Sonnet モデルの場合、この値はデフォルトで無効になります。
+ モデル推論を使用すると、レイテンシーが増加する可能性があります。この API オペレーションと [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerateStream.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerateStream.html) API オペレーションを使用すると、API からのレスポンスの受信が遅れる可能性があります。

# AI アプリケーションのナレッジベースをデプロイする
<a name="knowledge-base-deploy"></a>

アプリケーションのナレッジベースをデプロイするには、ナレッジベースに [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) または [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) リクエストを行うようにセットアップします。これらの API オペレーションを使用してレスポンスをクエリおよび生成する方法については、「[クエリとレスポンスを使用してナレッジベースをテストする](knowledge-base-test.md)」を参照してください。

ナレッジベースをエージェントに関連付けることもできます。エージェントはオーケストレーション中に必要に応じて、関連付けられたナレッジベースを呼び出します。詳細については、「[AI エージェントを使用してアプリケーションのタスクを自動化する](agents.md)」を参照してください。

ナレッジベースをデプロイする前に、データソースを設定してナレッジベースと同期する必要があります。[サポートされているデータソース](https://docs.aws.amazon.com/bedrock/latest/userguide/data-source-connectors.html)を参照してください。

任意の方法のタブを選択し、その手順に従います。

------
#### [ Console ]

**ナレッジベースとエージェントを関連付ける**

1. Amazon Bedrock コンソールを使用するためのアクセス許可を持つ IAM ID を使用して、AWS マネジメントコンソールにサインインします。Amazon Bedrock コンソール ([https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)) を開きます。

1. 左側のナビゲーションペインで **[エージェント]** を選択します。

1. ナレッジベースを追加したいエージェントの名前を選択します。

1. **[作業中のドラフト]** セクションで、**[作業中のドラフト]** を選択します。

1. **[ナレッジベース]** セクションで **[追加]** を選択します。

1. **[ナレッジベースを選択]** ドロップダウンリストからナレッジベースを選択し、エージェントに対してナレッジベースをどのように操作し、どのように結果を返すかに関する指示を指定します。

**ナレッジベースとエージェントとの関連付けを解除するには**

1. Amazon Bedrock コンソールを使用するためのアクセス許可を持つ IAM ID を使用して、AWS マネジメントコンソールにサインインします。Amazon Bedrock コンソール ([https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)) を開きます。

1. 左側のナビゲーションペインで **[エージェント]** を選択します。

1. ナレッジベースを追加したいエージェントの名前を選択します。

1. **[作業中のドラフト]** セクションで、**[作業中のドラフト]** を選択します。

1. **[ナレッジベース]** セクションで、ナレッジベースを選択します。

1. **[削除]** を選択します。

------
#### [ API ]

ナレッジベースとエージェントを関連付けるには、[AssociateAgentKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_AssociateAgentKnowledgeBase.html) リクエストを送信します。
+ エージェントがナレッジベースとやり取りし、結果を返す方法に関する手順を示す詳細な `description` を含めます。
+ `knowledgeBaseState` を `ENABLED` に設定して、エージェントがナレッジベースをクエリできるようにします。

[UpdateAgentKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_UpdateAgentKnowledgeBase.html) リクエストを送信することで、エージェントに関連付けられているナレッジベースを更新できます。例えば、問題をトラブルシューティングするために、`ENABLED` を `knowledgeBaseState` に設定できます。すべてのフィールドが上書きされるため、更新するフィールドと、変更せずに維持するフィールドの両方を含めます。

ナレッジベースとエージェントとの関連付けを解除するには、[DisassociateAgentKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DisassociateAgentKnowledgeBase.html) リクエストを送信します。

------

# Amazon Bedrock ナレッジベースに関する情報を表示する
<a name="kb-info"></a>

ナレッジベースについて、設定やステータスなどの情報を表示できます。

Amazon CloudWatch Logs を使用してナレッジベースをモニタリングするには、「[Knowledge base logging](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-bases-logging.html)」を参照してください。

任意の方法のタブを選択し、その手順に従います。

------
#### [ Console ]

**ナレッジベースに関する情報を表示するには**

1. Amazon Bedrock コンソールを使用するためのアクセス許可を持つ IAM ID を使用して、AWS マネジメントコンソールにサインインします。Amazon Bedrock コンソール ([https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)) を開きます。

1. 左側のナビゲーションペインで **[ナレッジベース]** を選択します。

1. ナレッジベースの詳細を表示するには、**[名前]** でソースの名前を選択します。または、ソースの横にあるラジオボタンを選択し、**[編集]** を選択します。

1. 詳細ページでは、次のアクションを実行できます。
   + ナレッジベースの詳細を変更するには、**[ナレッジベース概要]** セクションで **[編集]** を選択します。
   + ナレッジベースに付いているタグを更新するには、**[タグ]** セクションで **[タグの管理]** を選択します。
   + ナレッジベース作成の元となったデータソースを更新し、変更を同期する必要がある場合は、**[データソース]** セクションで **[同期]** を選択します。
   + データソースの詳細を表示するには、**[データソース名]** を選択します。詳細ページでは、**[同期履歴]** セクションの同期イベントの横にあるラジオボタンを選択し、**[警告を表示]** を選択すると、データインジェストジョブのファイルが同期に失敗した理由を確認できます。
   + ナレッジベースに使用されるベクトル埋め込みモデルを管理するには、**[プロビジョンドスループットを編集]** を選択します。
   + 編集が終了したら、**[変更を保存]** を選択します。

------
#### [ API ]

ナレッジベースに関する情報を取得するには、[Amazon Bedrock エージェントのビルドタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)で、`knowledgeBaseId` を指定して [GetKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_GetKnowledgeBase.html) リクエストを送信します。

ナレッジベースに関する情報を一覧表示するには、[Amazon Bedrock エージェントのビルドタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt) で [ListKnowledgeBases](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_ListKnowledgeBases.html) リクエストを送信します。レスポンス応答で返す結果の最大数を設定できます。設定した数よりも結果の件数が多い場合は、`nextToken` が返されます。この値を別の [ListKnowledgeBases](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_ListKnowledgeBases.html) リクエストの `nextToken` フィールドで使用して、結果の次のバッチを確認できます。

------

# Amazon Bedrock ナレッジベースを変更する
<a name="kb-update"></a>

ユーザーは、ナレッジベース設定の変更など、ナレッジベースの更新を行うことができます。

任意の方法のタブを選択し、その手順に従います。

------
#### [ Console ]

**ナレッジベースを更新するには**

1. Amazon Bedrock コンソールを使用するためのアクセス許可を持つ IAM ID を使用して、AWS マネジメントコンソールにサインインします。Amazon Bedrock コンソール ([https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)) を開きます。

1. 左側のナビゲーションペインで **[ナレッジベース]** を選択します。

1. ナレッジベースを選択して詳細を表示するか、ナレッジベースの横にあるラジオボタンを選択して **[編集]** を選択します。

1. 次の方法でナレッジベースを変更できます。
   + **[ナレッジベースの概要]** セクションで **[編集]** を選択して、ナレッジベースの設定を変更します。
   + **[タグ]** セクションで **[タグの管理]** を選択して、ナレッジベースにアタッチされたタグを変更および管理します。
   + **[データソース]** セクションで、ナレッジベースのデータソースを変更および管理します。

1. 編集が終了したら、**[変更を保存]** を選択します。

------
#### [ API ]

ナレッジベースを更新するには、[Amazon Bedrock エージェントビルドタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)を使用して、[UpdateKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_UpdateKnowledgeBase.html) リクエストを送信します。すべてのフィールドが上書きされるため、更新するフィールドと、変更せずに維持するフィールドの両方を含めます。

------

# Amazon Bedrock ナレッジベースを削除する
<a name="kb-delete"></a>

ナレッジベースは不要になったら削除できます。ナレッジベースを削除する際は、併せて次の作業も行い、ナレッジベースに関連付けられているリソースをすべて完全に削除する必要があります。
+ ナレッジベースと関連付け先のエージェントとの関連付けを解除します。
+ ナレッジベースのベクトルストア自体を削除します。

**注記**  
新しく作成されたデータソースの `dataDeletionPolicy` は、そのデータソースの作成中に特に指定しなかった場合は、デフォルトの「Delete (削除)」になります。このポリシーは、ナレッジベースまたはデータソースリソースの削除時に適用されます。ポリシーを「Retain (保持)」に更新して、データソースから取得してベクトル埋め込みに変換したデータを残すこともできます。ナレッジベースまたはデータソースリソースを削除しても、**ベクトルストア自体は削除されません**。

任意の方法のタブを選択し、その手順に従います。

------
#### [ Console ]

**ナレッジベースを削除するには**

1. 次の手順を実行する前に、ナレッジベースが関連付けられているすべてのエージェントからナレッジベースを必ず削除してください。これを行うには、次の手順を実行します。

   1. 左側のナビゲーションペインで **[エージェント]** を選択します。

   1. **[名前]** で、ナレッジベースを削除するエージェントの名前を選択します。

   1. もう存在しないナレッジベースへの参照をエージェントから削除するよう警告する赤いバナーが表示されます。

   1. 削除するナレッジベースの横にあるラジオボタンを選択します。**[詳細]** を選択して、**[削除]** を選択します。

1. Amazon Bedrock コンソールを使用するためのアクセス許可を持つ IAM ID を使用して、AWS マネジメントコンソールにサインインします。Amazon Bedrock コンソール ([https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)) を開きます。

1. 左側のナビゲーションペインで **[ナレッジベース]** を選択します。

1. ナレッジベースを選択するか、ナレッジベースの横にあるラジオボタンを選択します。その後、**[削除]** をクリックします。

1. ナレッジベースの削除に関する警告を確認してください。これらの条件に同意する場合は、入力ボックスに「**delete**」を入力し、**[削除]** を選択して確定します。
**注記**  
**ベクトルストア自体は削除されず**、データのみが削除されます。ベクトルストアのコンソールまたは SDK を使用して、ベクトルストアを削除できます。ナレッジベースで使用している Amazon Bedrock エージェントも必ず確認してください。

------
#### [ API ]

ナレッジベースを削除するには、[Amazon Bedrock エージェントのビルドタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)で [DeleteKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DeleteKnowledgeBase.html) リクエストを送信します。

また、ナレッジベースと関連付け先のエージェントとの関連付けも解除する必要があります。[Amazon Bedrock エージェントのビルドタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)で [DisassociateAgentKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DisassociateAgentKnowledgeBase.html) リクエストを行ってください。

ベクトルストア自体の削除も必要です。ベクトルストアのコンソールまたは SDK を使用して削除してください。

------