Amazon Bedrock ナレッジベースでデータソースに接続してナレッジベースを作成する
データソースに接続してナレッジベースを作成するときは、以下を設定または指定します。
-
ナレッジベースを定義して識別する一般情報
-
ナレッジベースへのアクセス許可を持つサービスロール
-
ナレッジベースの設定 (データソースからデータを変換するときに使用する埋め込みモデル、埋め込みを保存するサービスのストレージ設定、およびオプションでマルチモーダルデータを保存する S3 の場所など)
注記
ルートユーザーを使用してナレッジベースを作成することはできません。これらのステップを開始する前に、IAM ユーザーでログインします。
自分のユースケースに対応するセクションを展開してください。
ナレッジベースを設定するには
-
Amazon Bedrock コンソールを使用するためのアクセス許可を持つ IAM ID を使用して、AWS マネジメントコンソールにサインインします。Amazon Bedrock コンソール (https://console.aws.amazon.com/bedrock
) を開きます。 -
左側のナビゲーションペインで [ナレッジベース] を選択します。
-
[ナレッジベース] セクションで、作成ボタンを選択し、ベクトルストアを含むナレッジベースの作成を選択します。
-
(オプション) ナレッジベースのデフォルトの名前を変更し、説明を入力します。
-
他の必要な AWS サービスにアクセスするための Amazon Bedrock アクセス許可を付与する AWS Identity and Access Management (IAM) ロールを選択します。Amazon Bedrock にサービスロールを作成させることも、Neptune Analytics 用に作成した独自のカスタムロールの使用を選択することもできます。
-
ナレッジベースを接続するデータソースを選択します。
-
(オプション) ナレッジベースにタグを追加します。詳細については、「Amazon Bedrock リソースにタグ付け」を参照してください。
-
(オプション) ナレッジベースのアクティビティログを配信するサービスを設定します。
-
次のセクションに進み、「データソースをナレッジベースと接続する」の手順に従ってデータソースを設定します。
-
[埋め込みモデル] セクションで、次の操作を行います。
-
埋め込みモデルを選択して、データをベクトル埋め込みに変換します。
-
(オプション) [追加設定] セクションを展開すると、次の設定オプションが表示されます (すべてのモデルがすべての設定をサポートしているわけではありません)。
-
埋め込みタイプ – データを浮動小数点 (float32) ベクトル埋め込み (より正確だがコストがかかる) またはバイナリベクトル埋め込み (精度は低下するがコストが低い) に変換するかどうか。バイナリベクトルをサポートする埋め込みモデルについては、「サポートされている埋め込みモデル」を参照してください。
-
ベクトルディメンション – 値を大きくすると精度は向上しますが、コストとレイテンシーが増加します。
-
-
-
[ベクトルデータベース] セクションで、次の操作を行います。
-
ベクトルストアを選択して、クエリに使用するベクトル埋め込みを保存します。次のオプションがあります。
-
新しいベクトルストアをクイック作成する – 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 ナレッジベースのクイック作成」を参照してください。
-
Amazon Neptune Analytics – Amazon Bedrock は、検索拡張生成 (RAG) 手法をグラフと組み合わせて使用して生成 AI アプリケーションを強化し、エンドユーザーがより正確で包括的なレスポンスを得られるようにします。
-
Amazon S3 Vectors – Amazon Bedrock ナレッジベースは、データソースから生成された埋め込みを保存する S3 ベクトルバケットとベクトルインデックスを作成します。
重要
Amazon S3 Vectors と Amazon Bedrock ナレッジベースの統合はプレビューリリース段階であり、変更される可能性があります。
Amazon Bedrock と Amazon S3 Vectors の両方を利用できるすべての AWS リージョンで Amazon S3 Vectors のナレッジベースを作成できます。リージョンの可用性に関する情報については、「Amazon S3 ユーザーガイド」の「Amazon S3 Vectors」を参照してください。
注記
Amazon Bedrock ナレッジベースがベクトルインデックスを作成するときに、ベクトルごとに最大 40 KB のメタデータをアタッチできます。この 40 KB のうち、最大 2 KB をフィルタリング可能なメタデータとして使用できます。
Amazon Bedrock は、フィルタリングできないスペースにテキストを
AMAZON_BEDROCK_TEXTキーとして保存します。Amazon Bedrock によって追加されたメタデータは、フィルタリング可能なメタデータスペースに保存されます。S3 ベクトルバケットメタデータの制限の詳細については、「Amazon Bedrock ナレッジベースで Amazon S3 Vectors を使用するための前提条件」を参照してください。
-
-
作成したベクトルストアを選択する – サポートされているベクトルストアを選択し、ベクトルインデックス内のベクトルフィールド名とメタデータフィールド名を識別します。詳細については、「ナレッジベース用に作成したベクトルストアを使用するための前提条件」を参照してください。
注記
データソースが Confluence、Microsoft SharePoint、または Salesforce インスタンスの場合、サポートされているベクトルストアサービスは Amazon OpenSearch Serverless のみです。
-
-
(オプション) [追加設定] セクションを展開し、関連する設定を変更します。
-
-
データソースに画像が含まれている場合は、パーサーが [マルチモーダルストレージの保存先] のデータから抽出するイメージを保存する Amazon S3 URI を指定します。画像はクエリ中に返すことができます。オプションで、デフォルトの AWS マネージドキー の代わりにカスタマーマネージドキーを選択してデータを暗号化することもできます。
注記
マルチモーダルデータは、Amazon S3 およびカスタムデータソースでのみサポートされています。
-
[次へ] を選択して、ナレッジベースの詳細を確認します。次に進みナレッジベースを作成する前に、任意のセクションを編集できます。
注記
ナレッジベースの作成にかかる時間は、特定の設定によって異なります。ナレッジベースの作成が完了すると、ナレッジベースのステータスは準備中または利用可能な状態に変更されます。
ナレッジベースの準備ができて使用可能になったら、最初にデータソースの同期を行い、その後も必要に応じて同期を行いコンテンツを最新の状態に保ちます。コンソールでナレッジベースを選択し、データソースの概要セクションで [同期] を選択します。
ナレッジベースを作成するには、Amazon Bedrock エージェントのビルドタイムエンドポイントを使用して、CreateKnowledgeBase リクエストを送信します。
注記
Amazon Bedrock にベクトルストアを作成および管理させたい場合は、コンソールを使用します。詳細については、このトピックの「コンソールを使用する」セクションを展開します。
以下のフィールドが必要です。
| フィールド | 基本的な説明 |
|---|---|
| 名前 | ナレッジベースの名前 |
| roleArn | Amazon Bedrock ナレッジベースサービスロールの ARN |
| knowledgeBaseConfiguration | ナレッジベースの設定が含まれます。詳細については、以下を参照してください。 |
| storageConfiguration | (非構造化データソースに接続する場合にのみ必要です)。選択したデータソースサービスの設定が含まれます。 |
次のフィールドはオプションです。
| フィールド | ユースケース |
|---|---|
| description | ナレッジベースの説明 |
| clientToken | API リクエストが 1 回だけ完了するようにします。詳細については、「べき等性の確保」を参照してください。 |
| tags | タグをエイリアスに関連付ける場合に指定します。詳細については、「Amazon Bedrock リソースにタグ付け」を参照してください。 |
KnowledgeBaseConfiguration オブジェクトにマッピングする knowledgeBaseConfiguration フィールドで、type フィールドに VECTOR を指定し、VectorKnowledgeBaseConfiguration オブジェクトを含めます。オブジェクトには、以下のフィールドが含まれています。
-
embeddingModelArn– 使用する埋め込みモデルの ARN -
embeddingModelConfiguration– 埋め込みモデルの設定 サポートされているモデルごとに指定できる値を確認するには、「Amazon Bedrock ナレッジベースでサポートされているモデルとリージョン」を参照してください。 -
(画像、図、グラフ、または表を含むマルチモーダルデータをナレッジベースに含める場合)
supplementalDataStorageConfiguration– SupplementalDataStorageLocation オブジェクトにマッピングし、抽出されたデータを保存する S3 の場所を指定します。詳細については、「データソースの解析オプション」を参照してください。
StorageConfiguration オブジェクトにマッピングされる storageConfiguration フィールドで、type フィールドで接続するベクトルストアを指定し、そのベクトルストアに対応するフィールドを含めます。提供する必要がある情報の詳細については、StorageConfiguration の各ベクトルストア設定タイプを参照してください。
以下は、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" } } }