

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

# データをナレッジベースに変換する
<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 OpenSearch Service マネージドクラスター
  + 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 名を見つけてください」のほうがより具体的なクエリです。この具体的なクエリは、顧客支出データベーステーブルの列名「現在までの合計購入金額」を参照しており、データを「上位」で並べ替える必要があることも示しています。