구조화된 데이터 스토어에 연결하여 지식 기반 생성 - Amazon Bedrock

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

구조화된 데이터 스토어에 연결하여 지식 기반 생성

지식 기반을 구조화된 데이터 스토어에 연결하려면 다음 구성 요소를 지정합니다.

  • 데이터가 포함된 데이터 스토어입니다. 다음 데이터 스토어에 연결할 수 있습니다.

    • Amazon Redshift

    • AWS Glue Data Catalog (AWS Lake Formation)

  • 자연어 사용자 쿼리를 데이터 스토어에서 데이터를 추출하는 데 사용할 수 있는 SQL 쿼리로 변환하는 데 사용할 쿼리 엔진(현재 Amazon Redshift만 지원됨)입니다.

    • 쿼리 엔진을 사용하기 위한 인증 방법입니다. 다음과 같은 옵션을 사용할 수 있습니다.

      • IAM 역할 - 지식 기반을 관리할 수 있는 권한이 있는 IAM 서비스 역할을 사용하여 인증합니다.

      • 임시 자격 증명 사용자 이름 - 쿼리 엔진 데이터베이스 사용자를 사용하여 인증합니다.

      • Secrets Manager - 데이터베이스 보안 인증에 연결된 AWS Secrets Manager 보안 암호로 인증합니다.

      사용 가능한 인증 방법은 사용하는 쿼리 엔진 및 데이터 스토어에 따라 다릅니다. 다양한 인증 유형에 대한 지원을 보려면 Amazon Bedrock 지식 기반에서 구조화된 데이터 스토어에 대한 쿼리 엔진 설정 및 섹션을 참조하세요Amazon Bedrock Knowledge Bases 서비스 역할이 데이터 스토어에 액세스하도록 허용.

    • (선택 사항) SQL 생성의 정확도를 개선하기 위한 쿼리 구성:

      • 최대 쿼리 시간 - 쿼리 시간이 초과된 시간입니다.

      • 설명 - 테이블 또는 열에 대한 메타데이터 또는 보충 정보를 제공합니다. 테이블 또는 열, 사용 정보 또는 추가 속성에 대한 설명을 포함할 수 있습니다. 추가하는 설명은 테이블 또는 열의 구조에 대한 추가 컨텍스트와 정보를 제공하여 SQL 쿼리 생성을 개선할 수 있습니다.

      • 포함 및 제외 - SQL 생성을 위해 포함하거나 제외할 테이블 또는 열 집합을 지정합니다. 이 필드는 SQL 쿼리 범위를 사용 가능한 테이블 또는 열의 정의된 하위 집합으로 제한하려는 경우에 매우 중요합니다. 이 옵션은 불필요한 테이블 또는 열 참조를 줄여 생성 프로세스를 최적화하는 데 도움이 될 수 있습니다.

        포함을 지정하면 다른 모든 테이블과 열은 무시됩니다. 제외를 지정하면 지정한 테이블과 열이 무시됩니다.

        참고

        포함 및 제외는 가드레일을 대체하지 않으며 모델 정확도를 개선하기 위한 것입니다.

      • 큐레이션된 쿼리 - 미리 정의된 질문 및 답변 예제 세트입니다. 질문은 자연어 쿼리(NLQ)로 작성되며 답변은 해당 SQL 쿼리입니다. 이러한 예제는 생성해야 하는 쿼리 종류의 예를 제공하여 SQL 생성 프로세스에 도움이 됩니다. 생성형 SQL 출력의 정확도와 관련성을 개선하기 위한 참조 지점 역할을 합니다.

해당하는 사용 사례의 섹션을 확장해 내용을 살펴보세요.

를 사용하여 구조화된 데이터 스토어에 연결하려면 다음을 AWS Management Console수행합니다.

  1. Amazon Bedrock 권한이 있는 IAM 역할을 AWS Management Console 사용하여에 로그인하고 https://console.aws.amazon.com/bedrock/ Amazon Bedrock 콘솔을 엽니다.

  2. 왼쪽 탐색 창에서 지식 기반을 선택합니다.

  3. 지식 기반 섹션에서 생성을 선택한 다음 구조화된 데이터 스토어가 있는 지식 기반을 선택합니다.

  4. 지식 기반에 대해 다음 세부 정보를 설정합니다.

    1. (선택 사항) 기본 이름을 변경하고 지식 기반에 대한 설명을 제공합니다.

    2. 데이터 스토어에서 데이터를 검색하는 데 사용할 쿼리 엔진을 선택합니다.

    3. 이 지식 기반을 생성하고 관리할 수 있는 적절한 권한이 있는 IAM 서비스 역할을 선택합니다. Amazon Bedrock이 서비스 역할을 만들도록 하거나 이전에 만든 사용자 지정 역할을 선택할 수 있습니다. 사용자 지정 역할 생성에 대한 자세한 내용은 섹션을 참조하세요구조화된 데이터 스토어를 사용하여 Amazon Bedrock 지식 기반을 생성하기 위한 사전 조건.

    4. (선택 사항) 지식 기반과 연결할 태그를 추가합니다. 자세한 내용은 Amazon Bedrock 리소스 태그 지정 단원을 참조하십시오.

    5. Next(다음)를 선택합니다.

  5. 쿼리 엔진 구성:

    1. 클러스터 또는 작업 그룹을 생성한 서비스를 선택합니다. 그런 다음 사용할 클러스터 또는 작업 그룹을 선택합니다.

    2. 인증 방법을 선택하고 필요한 필드를 제공합니다.

    3. 메타데이터를 저장할 데이터 스토어를 선택합니다. 그런 다음 데이터베이스 이름을 선택하거나 입력합니다.

    4. (선택 사항) 필요에 따라 쿼리 구성을 수정합니다. 다양한 구성에 대한 자세한 내용은이 주제의 시작 부분을 참조하세요.

    5. Next(다음)를 선택합니다.

  6. 지식 기반 구성을 검토하고 필요에 따라 섹션을 편집합니다. 지식 기반을 생성하도록 확인합니다.

Amazon Bedrock API를 사용하여 구조화된 데이터 스토어에 연결하려면 Agents for Amazon Bedrock 빌드 타임 엔드포인트와 함께 CreateKnowledgeBase 요청을 다음 일반 요청 본문과 함께 전송합니다.

{ "name": "string", "roleArn": "string", "knowledgeBaseConfiguration": { "type": "SQL", "sqlKnowledgeBaseConfiguration": SqlKnowledgeBaseConfiguration }, "description": "string", "clientToken": "string", "tags": { "string": "string" } }

다음 필드는 필수입니다.

필드 기본 설명
명칭 지식 기반 이름
roleArn 적절한 권한이 있는 지식 기반 서비스 역할입니다. 콘솔을 사용하여 적절한 권한이 있는 서비스 역할을 자동으로 생성할 수 있습니다.
knowledgeBaseConfiguration 지식 기반에 대한 구성을 포함합니다. 구조화된 데이터베이스의 경우를 SQL로 지정type하고 sqlKnowledgeBaseConfiguration 필드를 포함합니다.

다음 필드는 선택 사항입니다.

필드 사용
설명 지식 기반에 대한 설명을 포함합니다.
clientToken API 요청이 한 번만 완료되도록 합니다. 자세한 내용은 Ensuring idempotency를 참조하세요.
tags 태그를 흐름에 연결합니다. 자세한 내용은 Amazon Bedrock 리소스 태그 지정 단원을 참조하십시오.

는 사용하는 쿼리 엔진에 SQLKnowledgeBaseConfiguration 따라 다릅니다. Amazon Redshift의 경우 type 필드를 로 지정REDSHIFT하고 RedshiftConfiguration에 매핑되는 redshiftConfiguration 필드를 포함합니다. RedshiftConfiguration의 경우 다음 필드를 구성합니다.

다음과 같은 유형의 쿼리 엔진을 구성할 수 있습니다.

Amazon Redshift 데이터베이스가 전용 컴퓨팅 노드에 프로비저닝된 경우 queryEngineConfiguration 필드 값은 다음 형식의 RedshiftQueryEngineConfiguration이어야 합니다.

{ "type": "PROVISIONED", "provisionedConfiguration": { "clusterIdentifier": "string", "authConfiguration": RedshiftProvisionedAuthConfiguration }, }

clusterIdentifier 필드에 클러스터의 ID를 지정합니다. RedshiftProvisionedAuthConfiguration은 사용 중인 권한 부여 유형에 따라 다릅니다. 권한 부여 방법과 일치하는 탭을 선택합니다.

IAM role

IAM 역할로 권한을 부여하는 경우 추가 필드 없이 RedshiftProvisionedAuthConfiguration의 유형IAM으로만를 지정해야 합니다.

{ "type": "IAM" }
Temporary credentials user name

데이터베이스 사용자 이름으로 권한을 부여하는 경우를 type 로 지정USERNAME하고의 databaseUser 필드에 사용자 이름을 지정합니다RedshiftProvisionedAuthConfig.

{ "type": "USERNAME", "databaseUser": "string" }
AWS Secrets Manager

로 권한을 부여한 경우 AWS Secrets Manager를 type 로 지정USERNAME_PASSWORD하고의 usernamePasswordSecretArn 필드에 보안 암호의 ARN을 지정합니다RedshiftProvisionedAuthConfig.

{ "type": "USERNAME_PASSWORD", "usernamePasswordSecretArn": "string" }

Amazon Redshift Serverless를 사용하는 경우 queryConfiguration필드 값은 다음 형식의 RedshiftQueryEngineConfiguration이어야 합니다.

{ "type": "SERVERLESS", "serverlessConfiguration": { "workgroupArn": "string", "authConfiguration": } }

workgroupArn 필드에 작업 그룹의 ARN을 지정합니다. RedshiftServerlessAuthConfiguration은 사용 중인 권한 부여 유형에 따라 다릅니다. 권한 부여 방법과 일치하는 탭을 선택합니다.

IAM role

IAM 역할로 권한을 부여하는 경우 추가 필드가 RedshiftServerlessAuthConfiguration 없는의 유형IAM으로만를 지정해야 합니다.

{ "type": "IAM" }
AWS Secrets Manager

로 권한을 부여한 경우 AWS Secrets Manager를 type 로 지정USERNAME_PASSWORD하고의 usernamePasswordSecretArn 필드에 보안 암호의 ARN을 지정합니다RedshiftServerlessAuthConfiguration.

{ "type": "USERNAME_PASSWORD", "usernamePasswordSecretArn": "string" }

이 필드는 단일 RedshiftQueryEngineStorageConfiguration이 포함된 배열에 매핑되며,이 배열의 형식은 데이터가 저장되는 위치에 따라 다릅니다.

데이터가에 저장되어 있는 경우 AWS Glue Data Catalog는 다음 형식이어야 RedshiftQueryEngineStorageConfiguration 합니다.

{ "type": "AWS_DATA_CATALOG", "awsDataCatalogConfiguration": { "tableNames": ["string"] } }

지식 기반을 연결하려는 각 테이블의 이름을 tableNames 매핑되는 배열에 추가합니다.

참고

데이터베이스 간 쿼리()에 설명된 패턴으로 테이블 이름을 입력합니다${databaseName}.${tableName}. 를 지정하여 모든 테이블을 포함할 수 있습니다${databaseName.*}.

데이터가 Amazon Redshift 데이터베이스에 저장되는 경우는 다음 형식이어야 RedshiftQueryEngineStorageConfiguration 합니다.

{ "type": "string", "redshiftConfiguration": { "databaseName": "string" } }

databaseName 필드에 Amazon Redshift 데이터베이스의 이름을 지정합니다.

참고

데이터베이스 간 쿼리()에 설명된 패턴으로 테이블 이름을 입력합니다${databaseName}.${tableName}. 를 지정하여 모든 테이블을 포함할 수 있습니다${databaseName.*}.

Amazon SageMaker AI Lakehouse를 통해 데이터베이스를 탑재하는 경우 데이터베이스 이름은 ${db}@${schema} 형식입니다.

이 필드는 데이터를 쿼리하는 방법을 구성하는 데 사용할 수 있는 다음 QueryGenerationConfiguration에 매핑됩니다.

{ "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 객체에 매핑되므로 필요한 만큼 다음 옵션을 구성할 수 있습니다.

중요

생성 컨텍스트를 포함하는 경우 쿼리 엔진은 SQL을 생성할 때 이를 적용하기 위해 최선의 노력을 기울입니다. 생성 컨텍스트는 비결정적이며 모델 정확도를 개선하기 위한 용도로만 사용됩니다. 정확성을 보장하려면 생성된 SQL 쿼리를 확인합니다.

포함할 수 있는 생성 컨텍스트에 대한 자세한 내용은 다음 섹션을 확장하세요.

데이터베이스 쿼리를 위한 SQL 생성의 정확도를 개선하기 위해 짧은 테이블 또는 열 이름보다 더 많은 컨텍스트를 제공하는 테이블 또는 열에 대한 설명을 제공할 수 있습니다. 다음을 수행할 수 있습니다.

  • 테이블에 대한 설명을 추가하려면 tables 배열에 QueryGenerationTable 객체를 포함합니다. 다음 예제와 같이 해당 객체에서 name 필드에 테이블의 이름과 description 필드에 설명을 지정합니다.

    { "name": "database.schema.tableA", "description": "Description for Table A" }
  • 열에 대한 설명을 추가하려면 tables 배열에 QueryGenerationTable 객체를 포함합니다. 해당 객체에서 name 필드에 테이블 이름을 지정하고 QueryGenerationColumn의 배열에 매핑되는 columns 필드를 포함합니다. 다음 예제와 같이 QueryGenerationColumn 객체에 name 필드에 열의 이름과 description 필드에 설명을 포함합니다.

    { "name": "database.schema.tableA.columnA", "columns": [ { "name": "Column A", "description": "Description for Column A" } ] }
  • 다음 예제와 같이 테이블과 테이블의 열에 대한 설명을 추가할 수 있습니다.

    { "name": "database.schema.tableA", "description": "Description for Table A", "columns": [ { "name": "database.schema.tableA.columnA", "description": "Description for Column A" } ] }
    참고

    데이터베이스 간 쿼리에 설명된 패턴으로 테이블 및 열 이름을 입력합니다. 데이터베이스가에 있는 경우 AWS Glue Data Catalog형식은 입니다awsdatacatalog.gluedatabase.table.

QueryGenerationTable 및 QueryGenerationColumn QueryGenerationColumn 객체의 inclusion 필드를 사용하여 SQL을 생성할 때 포함하거나 제외할 테이블 또는 열을 제안할 수 있습니다. inclusion 필드에 다음 값 중 하나를 지정할 수 있습니다.

  • 포함 - SQL을 생성할 때 지정한 테이블 또는 열만 컨텍스트로 포함됩니다.

  • EXCLUDE - 지정한 테이블 또는 열은 SQL을 생성할 때 컨텍스트로 제외됩니다.

다음과 같은 방법으로 테이블 또는 열을 포함할지 제외할지 여부를 지정할 수 있습니다.

  • 테이블을 포함하거나 제외하려면 tables 배열에 QueryGenerationTable 객체를 포함합니다. 다음 예제와 inclusion 같이 해당 객체에서 name 필드에 테이블의 이름과 필드에 테이블을 포함할지 또는 제외할지를 지정합니다.

    { "name": "database.schema.tableA", "inclusion": "EXCLUDE" }

    쿼리 엔진은 SQL 생성을 위한 추가 컨텍스트Table A에를 추가하지 않습니다.

  • 열을 포함하거나 제외하려면 tables 배열에 QueryGenerationTable 객체를 포함합니다. 해당 객체에서 name 필드에 테이블 이름을 지정하고 QueryGenerationColumn의 배열에 매핑되는 columns 필드를 포함합니다. 다음 예제와 inclusion 같이 QueryGenerationColumn 객체에서 name 필드에 열의 이름과 필드에 열 이름을 포함할지 제외할지 여부를 포함합니다.

    { "name": "database.schema.tableA", "columns": [ { "name": "database.schema.tableA.columnA", "inclusion": "EXCLUDE" } ] }

    SQL 생성은 SQL 생성 시 컨텍스트Column ATable A에서의를 무시합니다.

  • 다음 예제와 같이 포함 또는 제외를 지정할 때 테이블과 열을 결합할 수 있습니다.

    { "name": "database.schema.tableA", "inclusion": "INCLUDE", "columns": [ { "name": "database.schema.tableA.columnA", "inclusion": "EXCLUDE" } ] }

    SQL 생성에는가 포함되지Table A만 SQL 생성을 위한 컨텍스트를 추가할 때는 해당 Column A 내에서 제외됩니다.

중요

테이블 및 열 제외는 가드레일을 대체하지 않습니다. 이러한 테이블 및 열 포함 및 제외는 모델이 SQL을 생성할 때 고려할 추가 컨텍스트로 사용됩니다.

쿼리 엔진이 사용자 쿼리를 SQL 쿼리로 변환하는 정확도를 높이려면 쿼리 엔진의 예제를 QueryGenerationContext 객체의 curatedQueries 필드에 제공하여 CuratedQuery 객체 배열에 매핑할 수 있습니다. 각 객체는 다음 필드를 포함합니다.

  • naturalLanguage - 자연어 쿼리의 예입니다.

  • sql - 자연어 쿼리에 해당하는 SQL 쿼리입니다.