

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Buat basis pengetahuan dengan menghubungkan ke penyimpanan data terstruktur
<a name="knowledge-base-structured-create"></a>

Untuk menghubungkan basis pengetahuan ke penyimpanan data terstruktur, Anda menentukan komponen berikut:
+ 

**Konfigurasi mesin kueri**  
Konfigurasi untuk layanan komputasi yang akan mengeksekusi query SQL yang dihasilkan. Mesin kueri digunakan untuk mengonversi kueri pengguna bahasa alami menjadi kueri SQL yang dapat digunakan untuk mengekstrak data dari penyimpanan data Anda. Anda dapat memilih Amazon Redshift sebagai mesin kueri Anda. Saat memilih konfigurasi ini, Anda harus menentukan:
  + Metadata koneksi komputasi seperti ID cluster atau ARN workgroup tergantung pada mesin kueri yang dipilih.
  + Metode otentikasi untuk menggunakan mesin kueri, yang dapat menggunakan peran layanan IAM dengan izin yang sesuai, pengguna database mesin kueri, atau AWS Secrets Manager rahasia yang ditautkan ke kredenal database Anda.
+ 

**Konfigurasi penyimpanan**  
Konfigurasi untuk penyimpanan data yang berisi data Anda. Anda dapat terhubung ke Amazon Redshift Provisioned atau Amazon Redshift Tanpa Server dan menggunakan Amazon Redshift atau sebagai penyimpanan data Anda. AWS Glue Data Catalog 
+ 

**(Opsional) Konfigurasi kueri**  
Anda dapat menggunakan konfigurasi kueri opsional untuk meningkatkan akurasi pembuatan SQL:
  + **Waktu kueri maksimum** — Jumlah waktu setelah waktu kueri habis.
  + **Deskripsi** — Menyediakan metadata atau informasi tambahan tentang tabel atau kolom. Anda dapat menyertakan deskripsi tabel atau kolom, catatan penggunaan, atau atribut tambahan apa pun. Deskripsi yang Anda tambahkan dapat meningkatkan pembuatan kueri SQL dengan memberikan konteks dan informasi tambahan tentang struktur tabel atau kolom.
  + **Inklusi dan Pengecualian** - Menentukan satu set tabel atau kolom untuk dimasukkan atau dikecualikan untuk generasi SQL. Bidang ini sangat penting jika Anda ingin membatasi cakupan kueri SQL ke subset yang ditentukan dari tabel atau kolom yang tersedia. Opsi ini dapat membantu mengoptimalkan proses pembuatan dengan mengurangi referensi tabel atau kolom yang tidak perlu.

    Jika Anda menentukan inklusi, semua tabel dan kolom lainnya diabaikan. Jika Anda menentukan pengecualian, tabel dan kolom yang Anda tentukan akan diabaikan.
**catatan**  
Inklusi dan pengecualian bukan pengganti pagar pembatas dan hanya dimaksudkan untuk meningkatkan akurasi model.
  + **Kueri yang dikuratori** — Satu set contoh pertanyaan dan jawaban yang telah ditentukan sebelumnya. Pertanyaan ditulis sebagai kueri bahasa alami (NLQ) dan jawaban adalah kueri SQL yang sesuai. Contoh-contoh ini membantu proses pembuatan SQL dengan memberikan contoh jenis kueri yang harus dihasilkan. Mereka berfungsi sebagai titik referensi untuk meningkatkan akurasi dan relevansi output SQL generatif.

Perluas bagian yang sesuai dengan kasus penggunaan Anda:

## Gunakan konsol
<a name="knowledge-base-structured-create-console"></a>

Untuk menyambung ke penyimpanan data terstruktur menggunakan Konsol Manajemen AWS, lakukan hal berikut:

1. Masuk ke Konsol Manajemen AWS dengan identitas IAM yang memiliki izin untuk menggunakan konsol Amazon Bedrock. Kemudian, buka konsol Amazon Bedrock di [https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock).

1. Di panel navigasi kiri, pilih **Basis pengetahuan**.

1. Di bagian **Basis pengetahuan**, pilih **Buat** dan kemudian pilih **Basis pengetahuan dengan penyimpanan data terstruktur**.

1. Siapkan detail berikut untuk basis pengetahuan:

   1. (Opsional) Ubah nama default dan berikan deskripsi untuk basis pengetahuan Anda.

   1. Pilih mesin kueri yang akan digunakan untuk mengambil data dari penyimpanan data Anda.

   1. Pilih peran layanan IAM dengan izin yang tepat untuk membuat dan mengelola basis pengetahuan ini. Anda dapat membiarkan Amazon Bedrock membuat peran layanan atau memilih peran khusus yang telah Anda buat. Untuk informasi selengkapnya tentang membuat peran kustom, lihat[Siapkan mesin kueri dan izin Anda untuk membuat basis pengetahuan dengan penyimpanan data terstruktur](knowledge-base-prereq-structured.md).

   1. (Opsional) Tambahkan tag untuk dikaitkan dengan basis pengetahuan Anda. Untuk informasi selengkapnya, lihat [Menandai sumber daya Amazon Bedrock](tagging.md).

   1. Pilih **Berikutnya**.

1. Konfigurasikan mesin kueri Anda:

   1. Pilih layanan tempat Anda membuat cluster atau workgroup. Kemudian pilih cluster atau workgroup yang akan digunakan.

   1. Pilih metode otentikasi dan berikan bidang yang diperlukan.

   1. Pilih penyimpanan data untuk menyimpan metadata Anda. Kemudian, pilih atau masukkan nama database.

   1. (Opsional) Ubah konfigurasi kueri seperlunya. Lihat awal topik ini untuk informasi lebih lanjut tentang konfigurasi yang berbeda.

   1. Pilih **Berikutnya**.

1. Tinjau konfigurasi basis pengetahuan Anda dan edit bagian apa pun yang diperlukan. Konfirmasikan untuk membuat basis pengetahuan Anda.

## Gunakan API
<a name="knowledge-base-structured-create-api"></a>

Untuk menyambung ke penyimpanan data terstruktur menggunakan Amazon Bedrock API, kirim [CreateKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateKnowledgeBase.html)permintaan dengan [titik akhir waktu build Agen untuk Amazon Bedrock](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt) dengan badan permintaan umum berikut:

```
{
    "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"
    }
}
```

Bidang berikut diperlukan.


****  

| Bidang | Deskripsi dasar | 
| --- | --- | 
| Nama | Nama untuk basis pengetahuan | 
| roleArn | [Peran layanan basis pengetahuan](kb-permissions.md) dengan izin yang tepat. Anda dapat menggunakan konsol untuk secara otomatis membuat peran layanan dengan izin yang tepat. | 
| knowledgeBaseConfiguration | Berisi konfigurasi untuk basis pengetahuan. Untuk database terstruktur, tentukan SQL sebagai type dan sertakan sqlKnowledgeBaseConfiguration bidang. | 

Bidang berikut adalah opsional.


****  

| Bidang | Gunakan | 
| --- | --- | 
| deskripsi | Untuk memasukkan deskripsi untuk basis pengetahuan. | 
| clientToken | Untuk memastikan permintaan API selesai hanya sekali. Untuk informasi selengkapnya, lihat [Memastikan idempotensi](https://docs.aws.amazon.com/ec2/latest/devguide/ec2-api-idempotency.html). | 
| tag | Untuk mengaitkan tag dengan aliran. Untuk informasi selengkapnya, lihat [Menandai sumber daya Amazon Bedrock](tagging.md). | 

`SQLKnowledgeBaseConfiguration`Tergantung pada mesin kueri yang Anda gunakan. Untuk Amazon Redshift, tentukan `type` bidang sebagai `REDSHIFT` dan sertakan `redshiftConfiguration` bidang, yang memetakan ke file. [RedshiftConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_RedshiftConfiguration.html) Untuk [RedshiftConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_RedshiftConfiguration.html), Anda mengkonfigurasi bidang berikut:

### queryEngineConfiguration
<a name="w2aac28c10c27c15b9b3c17b1"></a>

Anda dapat mengonfigurasi jenis mesin kueri berikut:

#### Amazon Redshift Disediakan
<a name="w2aac28c10c27c15b9b3c17b1b5b1"></a>

Jika database Amazon Redshift Anda disediakan pada node komputasi khusus, nilai `queryEngineConfiguration` bidang harus dalam format berikut: [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)
    },
}
```

Tentukan ID cluster di `clusterIdentifier` lapangan. [RedshiftProvisionedAuthConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_RedshiftProvisionedAuthConfiguration.html)Tergantung pada jenis otorisasi yang Anda gunakan. Pilih tab yang cocok dengan metode otorisasi Anda:

------
#### [ IAM role ]

Jika Anda mengotorisasi dengan peran IAM Anda, Anda hanya perlu menentukan `IAM` sebagai jenis di bidang [RedshiftProvisionedAuthConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_RedshiftProvisionedAuthConfiguration.html)tanpa tambahan.

```
{
    "type": "IAM"
}
```

------
#### [ Temporary credentials user name ]

Jika Anda mengotorisasi dengan nama pengguna database, tentukan `type` sebagai `USERNAME` dan tentukan nama pengguna di `databaseUser` bidang di`RedshiftProvisionedAuthConfig`:

```
{
    "type": "USERNAME",
    "databaseUser": "string"
}
```

------
#### [ AWS Secrets Manager ]

Jika Anda mengotorisasi dengan AWS Secrets Manager, tentukan `type` sebagai `USERNAME_PASSWORD` dan tentukan ARN rahasia di bidang `usernamePasswordSecretArn` di: `RedshiftProvisionedAuthConfig`

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

------

#### Amazon Redshift Tanpa Server
<a name="w2aac28c10c27c15b9b3c17b1b5b3"></a>

Jika Anda menggunakan Amazon Redshift Tanpa Server, nilai `queryConfiguration` bidang harus [RedshiftQueryEngineConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_RedshiftQueryEngineConfiguration.html)dalam format berikut:

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

Tentukan ARN dari workgroup Anda di lapangan. `workgroupArn` [RedshiftServerlessAuthConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_RedshiftServerlessAuthConfiguration.html)Tergantung pada jenis otorisasi yang Anda gunakan. Pilih tab yang cocok dengan metode otorisasi Anda:

------
#### [ IAM role ]

Jika Anda mengotorisasi dengan peran IAM Anda, Anda hanya perlu menentukan `IAM` sebagai jenis di bidang `RedshiftServerlessAuthConfiguration` tanpa tambahan.

```
{
    "type": "IAM"
}
```

------
#### [ AWS Secrets Manager ]

Jika Anda mengotorisasi dengan AWS Secrets Manager, tentukan `type` sebagai `USERNAME_PASSWORD` dan tentukan ARN rahasia di bidang `usernamePasswordSecretArn` di: `RedshiftServerlessAuthConfiguration`

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

------

### StorageConfigurations
<a name="w2aac28c10c27c15b9b3c17b3"></a>

Bidang ini memetakan ke array yang berisi satu [RedshiftQueryEngineStorageConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_RedshiftQueryEngineStorageConfiguration.html), yang formatnya bergantung pada tempat data Anda disimpan.

#### AWS Glue Data Catalog
<a name="w2aac28c10c27c15b9b3c17b3b5b1"></a>

Jika data Anda disimpan AWS Glue Data Catalog, `RedshiftQueryEngineStorageConfiguration` harus dalam format berikut:

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

Tambahkan nama setiap tabel yang ingin Anda hubungkan dengan basis pengetahuan Anda dalam array yang `tableNames` dipetakan.

**catatan**  
Masukkan nama tabel dalam pola yang dijelaskan dalam [kueri Cross-database ()`${databaseName}.${tableName}`.](https://docs.aws.amazon.com/redshift/latest/dg/cross-database-overview.html) Anda dapat memasukkan semua tabel dengan menentukan. `${databaseName.*}`

#### Basis data Amazon Redshift
<a name="w2aac28c10c27c15b9b3c17b3b5b3"></a>

Jika data Anda disimpan dalam database Amazon Redshift, `RedshiftQueryEngineStorageConfiguration` seharusnya dalam format berikut:

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

Tentukan nama database Amazon Redshift Anda di bidang. `databaseName`

**catatan**  
Masukkan nama tabel dalam pola yang dijelaskan dalam [kueri Cross-database ()`${databaseName}.${tableName}`.](https://docs.aws.amazon.com/redshift/latest/dg/cross-database-overview.html) Anda dapat memasukkan semua tabel dengan menentukan. `${databaseName.*}`

Jika database Anda dipasang melalui Amazon SageMaker AI Lakehouse, nama database ada dalam format. *\$1\$1db\$1@\$1\$1schema\$1*

### queryGenerationConfiguration
<a name="w2aac28c10c27c15b9b3c17b5"></a>

Bidang ini memetakan ke hal-hal berikut [QueryGenerationConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_QueryGenerationConfiguration.html)yang dapat Anda gunakan untuk mengonfigurasi bagaimana data Anda ditanyakan:

```
{
    "executionTimeoutSeconds": number,
    "generationContext": {
        "tables": [
            {
                "name": "string",
                "description": "string",
                "inclusion": "string",
                "columns": [
                    {
                        "name": "string",
                        "description": "string",
                        "inclusion": "string"
                    },
                    ...
                ]
            },
            ...
        ],
        "curatedQueries": [
            {
                "naturalLanguage": "string",
                "sql": "string"
            },
            ...
        ]
    }
}
```

Jika Anda ingin kueri habis waktu, tentukan durasi batas waktu dalam detik di `executionTimeoutSeconds` bidang.

`generationContext`Bidang memetakan ke [QueryGenerationContext](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_QueryGenerationContext.html)objek di mana Anda dapat mengonfigurasi sebanyak mungkin opsi berikut yang Anda butuhkan.

**penting**  
Jika Anda menyertakan konteks generasi, mesin kueri melakukan upaya terbaik untuk menerapkannya saat membuat SQL. Konteks generasi tidak deterministik dan hanya dimaksudkan untuk meningkatkan akurasi model. Untuk memastikan akurasi, verifikasi kueri SQL yang dihasilkan.

Untuk informasi tentang konteks pembuatan yang dapat Anda sertakan, perluas bagian berikut:

#### Tambahkan deskripsi untuk tabel atau kolom dalam database
<a name="w2aac28c10c27c15b9b3c17b5c15b1"></a>

Untuk meningkatkan akurasi pembuatan SQL untuk menanyakan database, Anda dapat memberikan deskripsi untuk tabel atau kolom yang menyediakan lebih banyak konteks daripada nama tabel atau kolom pendek. Anda dapat melakukan tindakan berikut:
+ Untuk menambahkan deskripsi untuk tabel, sertakan [QueryGenerationTable](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_QueryGenerationTable.html)objek dalam `tables` array. Dalam objek itu, tentukan nama tabel di `name` bidang dan deskripsi di `description` bidang, seperti pada contoh berikut:

  ```
  {
      "name": "database.schema.tableA",
      "description": "Description for Table A"
  }
  ```
+ Untuk menambahkan deskripsi untuk kolom, sertakan [QueryGenerationTable](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_QueryGenerationTable.html)objek dalam `tables` array. Dalam objek itu, tentukan nama tabel di `name` bidang dan sertakan `columns` bidang, yang memetakan ke array [QueryGenerationColumn](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_QueryGenerationColumn.html). Dalam sebuah `QueryGenerationColumn` objek, sertakan nama kolom di `name` bidang dan deskripsi di `description` bidang, seperti pada contoh berikut:

  ```
  {
      "name": "database.schema.tableA",
      "columns": [
          {
              "name": "Column A",
              "description": "Description for Column A"
          }
      ]
  }
  ```
+ Anda dapat menambahkan deskripsi untuk tabel dan kolom di dalamnya, seperti pada contoh berikut:

  ```
  {
      "name": "database.schema.tableA",
      "description": "Description for Table A",
      "columns": [
          {
              "name": "columnA",
              "description": "Description for Column A"
          }
      ]
  }
  ```
**catatan**  
Masukkan nama tabel dan kolom dalam pola yang dijelaskan dalam [kueri lintas basis data](https://docs.aws.amazon.com/redshift/latest/dg/cross-database-overview.html). Jika database Anda masuk AWS Glue Data Catalog, formatnya adalah`awsdatacatalog.gluedatabase.table`.

#### Sertakan atau kecualikan tabel atau kolom dalam database
<a name="w2aac28c10c27c15b9b3c17b5c15b3"></a>

Anda dapat menyarankan tabel atau kolom untuk menyertakan atau mengecualikan saat membuat SQL dengan menggunakan `inclusion` bidang di [QueryGenerationTable](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_QueryGenerationTable.html)dan [QueryGenerationColumn](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_QueryGenerationColumn.html)objek. Anda dapat menentukan salah satu nilai berikut di `inclusion` bidang:
+ INCLUDE - Hanya tabel atau kolom yang Anda tentukan disertakan sebagai konteks saat menghasilkan SQL.
+ EXCLUDE - Tabel atau kolom yang Anda tentukan dikecualikan sebagai konteks saat menghasilkan SQL.

Anda dapat menentukan apakah akan menyertakan atau mengecualikan tabel atau kolom dengan cara berikut:
+ Untuk menyertakan atau mengecualikan tabel, sertakan [QueryGenerationTable](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_QueryGenerationTable.html)objek dalam `tables` array. Dalam objek itu, tentukan nama tabel di `name` bidang dan apakah akan menyertakan atau mengecualikannya di `inclusion` bidang, seperti pada contoh berikut:

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

  Mesin kueri tidak menambahkan `Table A` konteks tambahan untuk menghasilkan SQL.
+ Untuk menyertakan atau mengecualikan kolom, sertakan [QueryGenerationTable](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_QueryGenerationTable.html)objek dalam `tables` array. Dalam objek itu, tentukan nama tabel di `name` bidang dan sertakan `columns` bidang, yang memetakan ke array [QueryGenerationColumn](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_QueryGenerationColumn.html). Dalam sebuah `QueryGenerationColumn` objek, sertakan nama kolom di `name` bidang dan apakah akan menyertakan atau mengecualikannya di `inclusion` bidang, seperti pada contoh berikut:

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

  Generasi SQL mengabaikan `Column A` `Table A` dalam konteks saat menghasilkan SQL.
+ Anda dapat menggabungkan tabel dan kolom saat menentukan inklusi atau pengecualian, seperti pada contoh berikut:

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

  Generasi SQL termasuk`Table A`, tetapi mengecualikan `Column A` di dalamnya saat menambahkan konteks untuk menghasilkan SQL.

**penting**  
Pengecualian tabel dan kolom bukan pengganti pagar pembatas. Inklusi dan pengecualian tabel dan kolom ini digunakan sebagai konteks tambahan untuk model untuk dipertimbangkan saat menghasilkan SQL.

#### Berikan contoh mesin kueri pemetaan bahasa alami ke kueri SQL
<a name="w2aac28c10c27c15b9b3c17b5c15b5"></a>

Untuk meningkatkan akurasi mesin kueri dalam mengonversi kueri pengguna menjadi kueri SQL, Anda dapat memberikan contoh di `curatedQueries` bidang di [QueryGenerationContext](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_QueryGenerationContext.html)objek, yang memetakan ke array objek. [CuratedQuery](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CuratedQuery.html) Setiap objek berisi bidang-bidang berikut:
+ NaturalLanguage — Contoh kueri dalam bahasa alami.
+ sql — Query SQL yang sesuai dengan query bahasa alami.