CreateKnowledgeBase
Creates a knowledge base. A knowledge base contains your data sources so that Large Language Models (LLMs) can use your data. To create a knowledge base, you must first set up your data sources and configure a supported vector store. For more information, see Set up a knowledge base.
Note
If you prefer to let Amazon Bedrock create and manage a vector store for you in Amazon OpenSearch Service, use the console. For more information, see Create a knowledge base.
- 
         
Provide the
nameand an optionaldescription. - 
         
Provide the Amazon Resource Name (ARN) with permissions to create a knowledge base in the
roleArnfield. - 
         
Provide the embedding model to use in the
embeddingModelArnfield in theknowledgeBaseConfigurationobject. - 
         
Provide the configuration for your vector store in the
storageConfigurationobject.- 
               
For an Amazon OpenSearch Service database, use the
opensearchServerlessConfigurationobject. For more information, see Create a vector store in Amazon OpenSearch Service. - 
               
For an Amazon Aurora database, use the
RdsConfigurationobject. For more information, see Create a vector store in Amazon Aurora. - 
               
For a Pinecone database, use the
pineconeConfigurationobject. For more information, see Create a vector store in Pinecone. - 
               
For a Redis Enterprise Cloud database, use the
redisEnterpriseCloudConfigurationobject. For more information, see Create a vector store in Redis Enterprise Cloud. 
 - 
               
 
Request Syntax
PUT /knowledgebases/ HTTP/1.1
Content-type: application/json
{
   "clientToken": "string",
   "description": "string",
   "knowledgeBaseConfiguration": { 
      "kendraKnowledgeBaseConfiguration": { 
         "kendraIndexArn": "string"
      },
      "sqlKnowledgeBaseConfiguration": { 
         "redshiftConfiguration": { 
            "queryEngineConfiguration": { 
               "provisionedConfiguration": { 
                  "authConfiguration": { 
                     "databaseUser": "string",
                     "type": "string",
                     "usernamePasswordSecretArn": "string"
                  },
                  "clusterIdentifier": "string"
               },
               "serverlessConfiguration": { 
                  "authConfiguration": { 
                     "type": "string",
                     "usernamePasswordSecretArn": "string"
                  },
                  "workgroupArn": "string"
               },
               "type": "string"
            },
            "queryGenerationConfiguration": { 
               "executionTimeoutSeconds": number,
               "generationContext": { 
                  "curatedQueries": [ 
                     { 
                        "naturalLanguage": "string",
                        "sql": "string"
                     }
                  ],
                  "tables": [ 
                     { 
                        "columns": [ 
                           { 
                              "description": "string",
                              "inclusion": "string",
                              "name": "string"
                           }
                        ],
                        "description": "string",
                        "inclusion": "string",
                        "name": "string"
                     }
                  ]
               }
            },
            "storageConfigurations": [ 
               { 
                  "awsDataCatalogConfiguration": { 
                     "tableNames": [ "string" ]
                  },
                  "redshiftConfiguration": { 
                     "databaseName": "string"
                  },
                  "type": "string"
               }
            ]
         },
         "type": "string"
      },
      "type": "string",
      "vectorKnowledgeBaseConfiguration": { 
         "embeddingModelArn": "string",
         "embeddingModelConfiguration": { 
            "bedrockEmbeddingModelConfiguration": { 
               "dimensions": number,
               "embeddingDataType": "string"
            }
         },
         "supplementalDataStorageConfiguration": { 
            "storageLocations": [ 
               { 
                  "s3Location": { 
                     "uri": "string"
                  },
                  "type": "string"
               }
            ]
         }
      }
   },
   "name": "string",
   "roleArn": "string",
   "storageConfiguration": { 
      "mongoDbAtlasConfiguration": { 
         "collectionName": "string",
         "credentialsSecretArn": "string",
         "databaseName": "string",
         "endpoint": "string",
         "endpointServiceName": "string",
         "fieldMapping": { 
            "metadataField": "string",
            "textField": "string",
            "vectorField": "string"
         },
         "textIndexName": "string",
         "vectorIndexName": "string"
      },
      "neptuneAnalyticsConfiguration": { 
         "fieldMapping": { 
            "metadataField": "string",
            "textField": "string"
         },
         "graphArn": "string"
      },
      "opensearchManagedClusterConfiguration": { 
         "domainArn": "string",
         "domainEndpoint": "string",
         "fieldMapping": { 
            "metadataField": "string",
            "textField": "string",
            "vectorField": "string"
         },
         "vectorIndexName": "string"
      },
      "opensearchServerlessConfiguration": { 
         "collectionArn": "string",
         "fieldMapping": { 
            "metadataField": "string",
            "textField": "string",
            "vectorField": "string"
         },
         "vectorIndexName": "string"
      },
      "pineconeConfiguration": { 
         "connectionString": "string",
         "credentialsSecretArn": "string",
         "fieldMapping": { 
            "metadataField": "string",
            "textField": "string"
         },
         "namespace": "string"
      },
      "rdsConfiguration": { 
         "credentialsSecretArn": "string",
         "databaseName": "string",
         "fieldMapping": { 
            "customMetadataField": "string",
            "metadataField": "string",
            "primaryKeyField": "string",
            "textField": "string",
            "vectorField": "string"
         },
         "resourceArn": "string",
         "tableName": "string"
      },
      "redisEnterpriseCloudConfiguration": { 
         "credentialsSecretArn": "string",
         "endpoint": "string",
         "fieldMapping": { 
            "metadataField": "string",
            "textField": "string",
            "vectorField": "string"
         },
         "vectorIndexName": "string"
      },
      "s3VectorsConfiguration": { 
         "indexArn": "string",
         "indexName": "string",
         "vectorBucketArn": "string"
      },
      "type": "string"
   },
   "tags": { 
      "string" : "string" 
   }
}
    
      URI Request Parameters
The request does not use any URI parameters.
Request Body
The request accepts the following data in JSON format.
- clientToken
 - 
               
A unique, case-sensitive identifier to ensure that the API request completes no more than one time. If this token matches a previous request, Amazon Bedrock ignores the request, but does not return an error. For more information, see Ensuring idempotency.
Type: String
Length Constraints: Minimum length of 33. Maximum length of 256.
Pattern:
[a-zA-Z0-9](-*[a-zA-Z0-9]){0,256}Required: No
 - description
 - 
               
A description of the knowledge base.
Type: String
Length Constraints: Minimum length of 1. Maximum length of 200.
Required: No
 - knowledgeBaseConfiguration
 - 
               
Contains details about the embeddings model used for the knowledge base.
Type: KnowledgeBaseConfiguration object
Required: Yes
 - name
 - 
               
A name for the knowledge base.
Type: String
Pattern:
([0-9a-zA-Z][_-]?){1,100}Required: Yes
 - roleArn
 - 
               
The Amazon Resource Name (ARN) of the IAM role with permissions to invoke API operations on the knowledge base.
Type: String
Length Constraints: Minimum length of 0. Maximum length of 2048.
Pattern:
arn:aws(-[^:]+)?:iam::([0-9]{12})?:role/.+Required: Yes
 - storageConfiguration
 - 
               
Contains details about the configuration of the vector database used for the knowledge base.
Type: StorageConfiguration object
Required: No
 - 
               
Specify the key-value pairs for the tags that you want to attach to your knowledge base in this object.
Type: String to string map
Key Length Constraints: Minimum length of 1. Maximum length of 128.
Key Pattern:
[a-zA-Z0-9\s._:/=+@-]*Value Length Constraints: Minimum length of 0. Maximum length of 256.
Value Pattern:
[a-zA-Z0-9\s._:/=+@-]*Required: No
 
Response Syntax
HTTP/1.1 202
Content-type: application/json
{
   "knowledgeBase": { 
      "createdAt": "string",
      "description": "string",
      "failureReasons": [ "string" ],
      "knowledgeBaseArn": "string",
      "knowledgeBaseConfiguration": { 
         "kendraKnowledgeBaseConfiguration": { 
            "kendraIndexArn": "string"
         },
         "sqlKnowledgeBaseConfiguration": { 
            "redshiftConfiguration": { 
               "queryEngineConfiguration": { 
                  "provisionedConfiguration": { 
                     "authConfiguration": { 
                        "databaseUser": "string",
                        "type": "string",
                        "usernamePasswordSecretArn": "string"
                     },
                     "clusterIdentifier": "string"
                  },
                  "serverlessConfiguration": { 
                     "authConfiguration": { 
                        "type": "string",
                        "usernamePasswordSecretArn": "string"
                     },
                     "workgroupArn": "string"
                  },
                  "type": "string"
               },
               "queryGenerationConfiguration": { 
                  "executionTimeoutSeconds": number,
                  "generationContext": { 
                     "curatedQueries": [ 
                        { 
                           "naturalLanguage": "string",
                           "sql": "string"
                        }
                     ],
                     "tables": [ 
                        { 
                           "columns": [ 
                              { 
                                 "description": "string",
                                 "inclusion": "string",
                                 "name": "string"
                              }
                           ],
                           "description": "string",
                           "inclusion": "string",
                           "name": "string"
                        }
                     ]
                  }
               },
               "storageConfigurations": [ 
                  { 
                     "awsDataCatalogConfiguration": { 
                        "tableNames": [ "string" ]
                     },
                     "redshiftConfiguration": { 
                        "databaseName": "string"
                     },
                     "type": "string"
                  }
               ]
            },
            "type": "string"
         },
         "type": "string",
         "vectorKnowledgeBaseConfiguration": { 
            "embeddingModelArn": "string",
            "embeddingModelConfiguration": { 
               "bedrockEmbeddingModelConfiguration": { 
                  "dimensions": number,
                  "embeddingDataType": "string"
               }
            },
            "supplementalDataStorageConfiguration": { 
               "storageLocations": [ 
                  { 
                     "s3Location": { 
                        "uri": "string"
                     },
                     "type": "string"
                  }
               ]
            }
         }
      },
      "knowledgeBaseId": "string",
      "name": "string",
      "roleArn": "string",
      "status": "string",
      "storageConfiguration": { 
         "mongoDbAtlasConfiguration": { 
            "collectionName": "string",
            "credentialsSecretArn": "string",
            "databaseName": "string",
            "endpoint": "string",
            "endpointServiceName": "string",
            "fieldMapping": { 
               "metadataField": "string",
               "textField": "string",
               "vectorField": "string"
            },
            "textIndexName": "string",
            "vectorIndexName": "string"
         },
         "neptuneAnalyticsConfiguration": { 
            "fieldMapping": { 
               "metadataField": "string",
               "textField": "string"
            },
            "graphArn": "string"
         },
         "opensearchManagedClusterConfiguration": { 
            "domainArn": "string",
            "domainEndpoint": "string",
            "fieldMapping": { 
               "metadataField": "string",
               "textField": "string",
               "vectorField": "string"
            },
            "vectorIndexName": "string"
         },
         "opensearchServerlessConfiguration": { 
            "collectionArn": "string",
            "fieldMapping": { 
               "metadataField": "string",
               "textField": "string",
               "vectorField": "string"
            },
            "vectorIndexName": "string"
         },
         "pineconeConfiguration": { 
            "connectionString": "string",
            "credentialsSecretArn": "string",
            "fieldMapping": { 
               "metadataField": "string",
               "textField": "string"
            },
            "namespace": "string"
         },
         "rdsConfiguration": { 
            "credentialsSecretArn": "string",
            "databaseName": "string",
            "fieldMapping": { 
               "customMetadataField": "string",
               "metadataField": "string",
               "primaryKeyField": "string",
               "textField": "string",
               "vectorField": "string"
            },
            "resourceArn": "string",
            "tableName": "string"
         },
         "redisEnterpriseCloudConfiguration": { 
            "credentialsSecretArn": "string",
            "endpoint": "string",
            "fieldMapping": { 
               "metadataField": "string",
               "textField": "string",
               "vectorField": "string"
            },
            "vectorIndexName": "string"
         },
         "s3VectorsConfiguration": { 
            "indexArn": "string",
            "indexName": "string",
            "vectorBucketArn": "string"
         },
         "type": "string"
      },
      "updatedAt": "string"
   }
}
    
      Response Elements
If the action is successful, the service sends back an HTTP 202 response.
The following data is returned in JSON format by the service.
- knowledgeBase
 - 
               
Contains details about the knowledge base.
Type: KnowledgeBase object
 
Errors
For information about the errors that are common to all actions, see Common Errors.
- AccessDeniedException
 - 
               
The request is denied because of missing access permissions.
HTTP Status Code: 403
 - ConflictException
 - 
               
There was a conflict performing an operation.
HTTP Status Code: 409
 - InternalServerException
 - 
               
An internal server error occurred. Retry your request.
HTTP Status Code: 500
 - ServiceQuotaExceededException
 - 
               
The number of requests exceeds the service quota. Resubmit your request later.
HTTP Status Code: 402
 - ThrottlingException
 - 
               
The number of requests exceeds the limit. Resubmit your request later.
HTTP Status Code: 429
 - ValidationException
 - 
               
Input validation failed. Check your request parameters and retry the request.
- fieldList
 - 
                        
A list of objects containing fields that caused validation errors and their corresponding validation error messages.
 
HTTP Status Code: 400
 
See Also
For more information about using this API in one of the language-specific AWS SDKs, see the following: