Buat basis pengetahuan yang terhubung ke penyimpanan data terstruktur - Amazon Bedrock

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

Buat basis pengetahuan yang terhubung ke penyimpanan data terstruktur

Pangkalan Pengetahuan Amazon Bedrock dapat mengakses data yang disimpan di penyimpanan data terstruktur berikut melalui mesin kueri Amazon Redshift:

  • Amazon Redshift

  • AWS Glue Data Catalog (AWS Lake Formation)

Untuk membuat basis pengetahuan dan menghubungkannya ke penyimpanan data terstruktur, Anda melakukan hal berikut:

  1. Pilih mesin kueri dan pilih opsi yang sesuai dengan gudang data Anda:

    • Amazon Redshift Disediakan

    • Amazon Redshift Tanpa Server

  2. Pilih salah satu metode otentikasi berikut untuk menggunakan mesin kueri:

    • IAM — Otentikasi dengan kredensil IAM.

    • Nama pengguna kredensil sementara — Otentikasi melalui nama pengguna database (tidak tersedia untuk Redshift Tanpa Server).

    • AWS Secrets Manager — Otentikasi melalui rahasia.

  3. Pilih Database Amazon Redshift atau AWS Glue Data Catalog sebagai penyimpanan data Anda.

  4. (Opsional) Tetapkan konfigurasi kueri 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.

Untuk menyambung ke penyimpanan data terstruktur, kirim CreateKnowledgeBasepermintaan dengan titik akhir waktu pembuatan Agen untuk Amazon Bedrock dengan badan permintaan umum berikut:

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

Bidang berikut diperlukan.

Bidang Deskripsi dasar
Nama Nama untuk basis pengetahuan
roleArn Peran layanan basis pengetahuan 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.
tag Untuk mengaitkan tag dengan aliran. Untuk informasi selengkapnya, lihat Menandai sumber daya Amazon Bedrock.

SQLKnowledgeBaseConfigurationTergantung pada mesin kueri yang Anda gunakan. Untuk Amazon Redshift, tentukan type bidang sebagai REDSHIFT dan sertakan redshiftConfiguration bidang, yang dipetakan ke file. RedshiftConfiguration Untuk RedshiftConfiguration, Anda mengkonfigurasi bidang berikut:

Anda dapat mengonfigurasi jenis mesin kueri berikut:

Jika database Amazon Redshift Anda disediakan pada node komputasi khusus, nilai queryEngineConfiguration bidang harus dalam format berikut: RedshiftQueryEngineConfiguration

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

Tentukan ID cluster di clusterIdentifier lapangan. RedshiftProvisionedAuthConfigurationTergantung 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 RedshiftProvisionedAuthConfigurationtanpa 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 diRedshiftProvisionedAuthConfig:

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

Jika Anda menggunakan Amazon Redshift Tanpa Server, nilai queryConfiguration bidang harus RedshiftQueryEngineConfigurationdalam format berikut:

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

Tentukan ARN dari workgroup Anda di lapangan. workgroupArn RedshiftServerlessAuthConfigurationTergantung 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" }

Bidang ini memetakan ke array yang berisi satu RedshiftQueryEngineStorageConfiguration, yang formatnya bergantung pada tempat data Anda disimpan.

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}. Anda dapat memasukkan semua tabel dengan menentukan. ${databaseName.*}

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}. Anda dapat memasukkan semua tabel dengan menentukan. ${databaseName.*}

Jika database Anda dipasang melalui Amazon SageMaker AI Lakehouse, nama database ada dalam format. ${db}@${schema}

Bidang ini memetakan ke hal-hal berikut QueryGenerationConfigurationyang 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.

generationContextBidang memetakan ke QueryGenerationContextobjek 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:

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 QueryGenerationTableobjek 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 QueryGenerationTableobjek dalam tables array. Dalam objek itu, tentukan nama tabel di name bidang dan sertakan columns bidang, yang memetakan ke array QueryGenerationColumn. Dalam sebuah QueryGenerationColumn objek, sertakan nama kolom di name bidang dan deskripsi di description bidang, seperti pada contoh berikut:

    { "name": "database.schema.tableA.columnA", "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": "database.schema.tableA.columnA", "description": "Description for Column A" } ] }
    catatan

    Masukkan nama tabel dan kolom dalam pola yang dijelaskan dalam kueri lintas basis data. Jika database Anda masuk AWS Glue Data Catalog, formatnya adalahawsdatacatalog.gluedatabase.table.

Anda dapat menyarankan tabel atau kolom untuk menyertakan atau mengecualikan saat membuat SQL dengan menggunakan inclusion bidang di QueryGenerationTabledan QueryGenerationColumnobjek. 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 QueryGenerationTableobjek 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 QueryGenerationTableobjek dalam tables array. Dalam objek itu, tentukan nama tabel di name bidang dan sertakan columns bidang, yang memetakan ke array QueryGenerationColumn. 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 termasukTable 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.

Untuk meningkatkan akurasi mesin kueri dalam mengonversi kueri pengguna menjadi kueri SQL, Anda dapat memberikan contoh di curatedQueries bidang di QueryGenerationContextobjek, yang memetakan ke array objek. CuratedQuery Setiap objek berisi bidang-bidang berikut:

  • NaturalLanguage — Contoh kueri dalam bahasa alami.

  • sql — Query SQL yang sesuai dengan query bahasa alami.