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:
-
Pilih mesin kueri dan pilih opsi yang sesuai dengan gudang data Anda:
-
Amazon Redshift Disediakan
-
Amazon Redshift Tanpa Server
-
-
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.
-
-
Pilih Database Amazon Redshift atau AWS Glue Data Catalog sebagai penyimpanan data Anda.
-
(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. |
SQLKnowledgeBaseConfiguration
Tergantung 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:
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:
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.
generationContext
Bidang 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 diname
bidang dan deskripsi didescription
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 diname
bidang dan sertakancolumns
bidang, yang memetakan ke array QueryGenerationColumn. Dalam sebuahQueryGenerationColumn
objek, sertakan nama kolom diname
bidang dan deskripsi didescription
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 adalah
awsdatacatalog.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 diname
bidang dan apakah akan menyertakan atau mengecualikannya diinclusion
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 diname
bidang dan sertakancolumns
bidang, yang memetakan ke array QueryGenerationColumn. Dalam sebuahQueryGenerationColumn
objek, sertakan nama kolom diname
bidang dan apakah akan menyertakan atau mengecualikannya diinclusion
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 mengecualikanColumn 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.