Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Memperkaya dokumen Anda selama konsumsi
catatan
Dukungan fitur bervariasi menurut jenis indeks dan pencarian API yang digunakan. Untuk melihat apakah fitur ini didukung untuk jenis indeks dan penelusuran yang API Anda gunakan, lihat Jenis indeks.
Anda dapat mengubah bidang atau atribut metadata konten dan dokumen selama proses penyerapan dokumen. Dengan Amazon Kendra fitur Custom Document Enrichment, Anda dapat membuat, memodifikasi, atau menghapus atribut dan konten dokumen saat Anda memasukkan dokumen ke dalamnya. Amazon Kendra Ini berarti Anda dapat memanipulasi dan menelan data Anda sesuai kebutuhan.
Fitur ini memberi Anda kendali atas bagaimana dokumen Anda diperlakukan dan dicerna Amazon Kendra. Misalnya, Anda dapat menggosok informasi yang dapat diidentifikasi secara pribadi dalam metadata dokumen sambil memasukkan dokumen Anda ke dalamnya. Amazon Kendra
Cara lain Anda dapat menggunakan fitur ini adalah dengan menjalankan fungsi AWS Lambda Lambda untuk menjalankan Optical Character Recognition OCR () pada gambar, terjemahan pada teks, dan tugas lain untuk menyiapkan data untuk pencarian atau analisis. Misalnya, Anda dapat memanggil fungsi untuk dijalankan OCR pada gambar. Fungsi ini dapat menafsirkan teks dari gambar dan memperlakukan setiap gambar sebagai dokumen tekstual. Sebuah perusahaan yang menerima survei pelanggan melalui pos dan menyimpan survei ini sebagai gambar dapat menelan gambar-gambar ini sebagai dokumen tekstual ke dalam. Amazon Kendra Perusahaan kemudian dapat mencari informasi survei pelanggan yang berharga di Amazon Kendra.
Anda dapat menggunakan operasi dasar untuk diterapkan sebagai penguraian pertama data Anda, dan kemudian menggunakan fungsi Lambda untuk menerapkan operasi yang lebih kompleks pada data Anda. Misalnya, Anda dapat menggunakan operasi dasar untuk menghapus semua nilai di bidang metadata dokumen 'Customer_ID', dan kemudian menerapkan fungsi Lambda untuk mengekstrak teks dari gambar teks dalam dokumen.
Cara kerja Pengayaan Dokumen Kustom
Keseluruhan proses Pengayaan Dokumen Kustom adalah sebagai berikut:
-
Anda mengonfigurasi Pengayaan Dokumen Kustom saat membuat atau memperbarui sumber data, atau mengindeks dokumen Anda secara langsung. Amazon Kendra
-
Amazon Kendra menerapkan konfigurasi inline atau logika dasar untuk mengubah data Anda. Untuk informasi selengkapnya, lihat Operasi dasar untuk mengubah metadata.
-
Jika Anda memilih untuk mengonfigurasi manipulasi data lanjutan, Amazon Kendra dapat menerapkannya pada dokumen asli, mentah atau pada dokumen terstruktur dan terurai. Untuk informasi selengkapnya, lihat Fungsi Lambda: ekstrak dan ubah metadata atau konten.
-
Dokumen Anda yang diubah dicerna. Amazon Kendra
Kapan pun dalam proses ini, jika konfigurasi Anda tidak valid, akan Amazon Kendra menimbulkan kesalahan.
Saat Anda menelepon CreateDataSource, UpdateDataSource, atau BatchPutDocumentAPIs, Anda memberikan konfigurasi Pengayaan Dokumen Kustom Anda. Jika Anda meneleponBatchPutDocument
, Anda harus mengonfigurasi Pengayaan Dokumen Kustom dengan setiap permintaan. Jika Anda menggunakan konsol, Anda memilih indeks Anda dan kemudian pilih Pengayaan dokumen untuk mengonfigurasi Pengayaan Dokumen Kustom.
Jika Anda menggunakan pengayaan Dokumen di konsol, Anda dapat memilih untuk hanya mengonfigurasi operasi dasar atau hanya fungsi Lambda atau keduanya, seperti yang dapat Anda gunakan. API Anda dapat memilih Berikutnya dalam langkah-langkah konsol untuk memilih untuk tidak mengonfigurasi operasi dasar dan hanya fungsi Lambda, termasuk apakah akan diterapkan ke data asli (pra-ekstraksi) atau terstruktur (pasca-ekstraksi). Anda hanya dapat menyimpan konfigurasi Anda dengan menyelesaikan semua langkah di konsol. Konfigurasi dokumen Anda tidak disimpan jika Anda tidak menyelesaikan semua langkah.
Operasi dasar untuk mengubah metadata
Anda dapat memanipulasi bidang dokumen dan konten menggunakan logika dasar. Ini termasuk menghapus nilai dalam bidang, memodifikasi nilai dalam bidang menggunakan kondisi, atau membuat bidang. Untuk manipulasi lanjutan yang melampaui apa yang dapat Anda manipulasi menggunakan logika dasar, panggil fungsi Lambda. Untuk informasi selengkapnya, lihat Fungsi Lambda: ekstrak dan ubah metadata atau konten.
Untuk menerapkan logika dasar, Anda menentukan bidang target yang ingin Anda manipulasi menggunakan DocumentAttributeTargetobjek. Anda memberikan kunci atribut. Misalnya, kunci 'Departemen' adalah bidang atau atribut yang menyimpan semua nama departemen yang terkait dengan dokumen. Anda juga dapat menentukan nilai yang akan digunakan di bidang target jika kondisi tertentu terpenuhi. Anda mengatur kondisi menggunakan DocumentAttributeConditionobjek. Misalnya, jika bidang 'Sumber_ URI 'berisi' keuangan 'dalam URI nilainya, maka isi terlebih dahulu bidang target' Departemen 'dengan nilai target' Keuangan 'untuk dokumen tersebut. Anda juga dapat menghapus nilai-nilai atribut dokumen target.
Untuk menerapkan logika dasar menggunakan konsol, pilih indeks Anda dan kemudian pilih Pengayaan dokumen di menu navigasi. Buka Konfigurasi operasi dasar untuk menerapkan manipulasi dasar ke bidang dan konten dokumen Anda.
Berikut ini adalah contoh menggunakan logika dasar untuk menghapus semua nomor identifikasi pelanggan di bidang dokumen yang disebut 'Customer_ID'.
Contoh 1: Menghapus nomor identifikasi pelanggan yang terkait dengan dokumen
Data sebelum manipulasi dasar diterapkan.
Dokumen_ID | Body_Text | ID Pelanggan |
---|---|---|
1 | Lorem Ipsum. | CID1234 |
2 | Lorem Ipsum. | CID1235 |
3 | Lorem Ipsum. | CID1236 |
Data setelah manipulasi dasar diterapkan.
Dokumen_ID | Body_Text | ID Pelanggan |
---|---|---|
1 | Lorem Ipsum. | |
2 | Lorem Ipsum. | |
3 | Lorem Ipsum. |
Berikut ini adalah contoh penggunaan logika dasar untuk membuat bidang yang disebut 'Departemen' dan isi bidang ini dengan nama departemen berdasarkan informasi dari bidang 'Sumber_ 'URI. Ini menggunakan kondisi bahwa jika bidang 'Sumber_ URI 'berisi' keuangan 'dalam URI nilainya, maka isi terlebih dahulu bidang target' Departemen 'dengan nilai target' Keuangan 'untuk dokumen tersebut.
Contoh 2: Membuat bidang 'Departemen' dan mengisinya dengan nama departemen yang terkait dengan dokumen menggunakan kondisi.
Data sebelum manipulasi dasar diterapkan.
Dokumen_ID | Body_Text | Sumber_ URI |
---|---|---|
1 | Lorem Ipsum. | keuangan/1 |
2 | Lorem Ipsum. | keuangan/2 |
3 | Lorem Ipsum. | keuangan/3 |
Data setelah manipulasi dasar diterapkan.
Dokumen_ID | Body_Text | Sumber_ URI | Departemen |
---|---|---|---|
1 | Lorem Ipsum. | keuangan/1 | Keuangan |
2 | Lorem Ipsum. | keuangan/2 | Keuangan |
3 | Lorem Ipsum. | keuangan/3 | Keuangan |
catatan
Amazon Kendra tidak dapat membuat bidang dokumen target jika belum dibuat sebagai bidang indeks. Setelah Anda membuat bidang indeks Anda, Anda dapat membuat bidang dokumen menggunakanDocumentAttributeTarget
. Amazon Kendra kemudian memetakan bidang metadata dokumen yang baru Anda buat ke bidang indeks Anda.
Kode berikut adalah contoh konfigurasi manipulasi data dasar untuk menghapus nomor identifikasi pelanggan yang terkait dengan dokumen.
Fungsi Lambda: ekstrak dan ubah metadata atau konten
Anda dapat memanipulasi bidang dokumen dan konten menggunakan fungsi Lambda. Ini berguna jika Anda ingin melampaui logika dasar dan menerapkan manipulasi data tingkat lanjut. Misalnya, menggunakan Optical Character Recognition (OCR), yang menafsirkan teks dari gambar, dan memperlakukan setiap gambar sebagai dokumen tekstual. Atau, mengambil tanggal-waktu saat ini di zona waktu tertentu dan memasukkan tanggal-waktu di mana ada nilai kosong untuk bidang tanggal.
Anda dapat menerapkan logika dasar terlebih dahulu dan kemudian menggunakan fungsi Lambda untuk memanipulasi data Anda lebih lanjut, atau sebaliknya. Anda juga dapat memilih untuk hanya menerapkan fungsi Lambda.
Amazon Kendra dapat memanggil fungsi Lambda untuk menerapkan manipulasi data lanjutan selama proses konsumsi sebagai bagian dari Anda. CustomDocumentEnrichmentConfiguration Anda menentukan peran yang menyertakan izin untuk menjalankan fungsi Lambda dan mengakses Amazon S3 bucket untuk menyimpan output manipulasi data IAM Anda—lihat peran akses.
Amazon Kendra dapat menerapkan fungsi Lambda pada dokumen asli Anda, dokumen mentah atau pada dokumen terstruktur dan diuraikan. Anda dapat mengonfigurasi fungsi Lambda yang mengambil data asli atau mentah Anda dan menerapkan manipulasi data Anda menggunakan. PreExtractionHookConfiguration Anda juga dapat mengonfigurasi fungsi Lambda yang mengambil dokumen terstruktur Anda dan menerapkan manipulasi data Anda menggunakan. PostExtractionHookConfiguration Amazon Kendra mengekstrak metadata dokumen dan teks untuk menyusun dokumen Anda. Fungsi Lambda Anda harus mengikuti struktur permintaan dan respons wajib. Untuk informasi selengkapnya, lihat Kontrak data untuk fungsi Lambda.
Untuk mengonfigurasi fungsi Lambda di konsol, pilih indeks Anda dan kemudian pilih Pengayaan dokumen di menu navigasi. Buka Konfigurasi fungsi Lambda untuk mengonfigurasi fungsi Lambda.
Anda hanya dapat mengonfigurasi satu fungsi Lambda untuk PreExtractionHookConfiguration
dan dan hanya satu fungsi Lambda untuk. PostExtractionHookConfiguration
Namun, fungsi Lambda Anda dapat memanggil fungsi lain yang dibutuhkannya. Anda dapat mengkonfigurasi keduanya PreExtractionHookConfiguration
dan PostExtractionHookConfiguration
atau salah satunya. Fungsi Lambda Anda untuk tidak PreExtractionHookConfiguration
boleh melebihi waktu berjalan 5 menit dan fungsi Lambda Anda untuk PostExtractionHookConfiguration
tidak boleh melebihi waktu berjalan 1 menit. Mengkonfigurasi Pengayaan Dokumen Kustom secara alami membutuhkan waktu lebih lama untuk menyerap dokumen Anda Amazon Kendra daripada jika Anda tidak mengonfigurasinya.
Anda dapat mengonfigurasi Amazon Kendra untuk menjalankan fungsi Lambda hanya jika kondisi terpenuhi. Misalnya, Anda dapat menentukan kondisi bahwa jika ada nilai tanggal-waktu kosong, maka Amazon Kendra harus memanggil fungsi yang menyisipkan tanggal-waktu saat ini.
Berikut ini adalah contoh menggunakan fungsi Lambda untuk menjalankan OCR menafsirkan teks dari gambar dan menyimpan teks ini dalam bidang yang disebut 'Document_Image_Text'.
Contoh 1: Mengekstrak teks dari gambar untuk membuat dokumen tekstual
Data sebelum manipulasi lanjutan diterapkan.
Dokumen_ID | Document_Image |
---|---|
1 | image_1.png |
2 | image_2.png |
3 | image_3.png |
Data setelah manipulasi lanjutan diterapkan.
Dokumen_ID | Document_Image | Document_Image_Text |
---|---|---|
1 | image_1.png | Tanggapan survei yang dikirim |
2 | image_2.png | Tanggapan survei yang dikirim |
3 | image_3.png | Tanggapan survei yang dikirim |
Berikut ini adalah contoh menggunakan fungsi Lambda untuk menyisipkan tanggal-waktu saat ini untuk nilai tanggal kosong. Ini menggunakan kondisi bahwa jika nilai bidang tanggal adalah 'null', maka ganti ini dengan tanggal-waktu saat ini.
Contoh 2: Mengganti nilai kosong di bidang Last_Updated dengan tanggal-waktu saat ini.
Data sebelum manipulasi lanjutan diterapkan.
Dokumen_ID | Body_Text | Terakhir_Diperbarui |
---|---|---|
1 | Lorem Ipsum. | Januari 1, 2020 |
2 | Lorem Ipsum. | |
3 | Lorem Ipsum. | 1 Juli 2020 |
Data setelah manipulasi lanjutan diterapkan.
Dokumen_ID | Body_Text | Terakhir_Diperbarui |
---|---|---|
1 | Lorem Ipsum. | Januari 1, 2020 |
2 | Lorem Ipsum. | 1 Desember 2021 |
3 | Lorem Ipsum. | 1 Juli 2020 |
Kode berikut adalah contoh konfigurasi fungsi Lambda untuk manipulasi data lanjutan pada data asli mentah.
Kontrak data untuk fungsi Lambda
Fungsi Lambda Anda untuk manipulasi data tingkat lanjut berinteraksi dengan kontrak Amazon Kendra data. Kontrak adalah struktur permintaan dan respons wajib dari fungsi Lambda Anda. Jika fungsi Lambda Anda tidak mengikuti struktur ini, maka akan Amazon Kendra menimbulkan kesalahan.
Fungsi Lambda Anda untuk PreExtractionHookConfiguration
harus mengharapkan struktur permintaan berikut:
{ "version": <str>, "dataBlobStringEncodedInBase64": <str>, //In the case of a data blob "s3Bucket": <str>, //In the case of an S3 bucket "s3ObjectKey": <str>, //In the case of an S3 bucket "metadata": <Metadata> }
metadata
Struktur, yang meliputi CustomDocumentAttribute
struktur, adalah sebagai berikut:
{ "attributes": [<CustomDocumentAttribute<] } CustomDocumentAttribute { "name": <str>, "value": <CustomDocumentAttributeValue> } CustomDocumentAttributeValue { "stringValue": <str>, "integerValue": <int>, "longValue": <long>, "stringListValue": list<str>, "dateValue": <str> }
Fungsi Lambda Anda untuk PreExtractionHookConfiguration
harus mematuhi struktur respons berikut:
{ "version": <str>, "dataBlobStringEncodedInBase64": <str>, //In the case of a data blob "s3ObjectKey": <str>, //In the case of an S3 bucket "metadataUpdates": [<CustomDocumentAttribute>] }
Fungsi Lambda Anda untuk PostExtractionHookConfiguration
harus mengharapkan struktur permintaan berikut:
{ "version": <str>, "s3Bucket": <str>, "s3ObjectKey": <str>, "metadata": <Metadata> }
Fungsi Lambda Anda untuk PostExtractionHookConfiguration
harus mematuhi struktur respons berikut:
PostExtractionHookConfiguration Lambda Response { "version": <str>, "s3ObjectKey": <str>, "metadataUpdates": [<CustomDocumentAttribute>] }
Dokumen Anda yang diubah diunggah ke bucket Anda Amazon S3 . Dokumen yang diubah harus mengikuti format yang ditunjukkan. Format dokumen terstruktur
Format dokumen terstruktur
Amazon Kendra mengunggah dokumen terstruktur Anda ke Amazon S3 bucket yang diberikan. Dokumen terstruktur mengikuti format ini:
Kendra document { "textContent": <TextContent> } TextContent { "documentBodyText": <str> }
Contoh fungsi Lambda yang mematuhi kontrak data
Kode Python berikut adalah contoh fungsi Lambda yang menerapkan manipulasi lanjutan bidang metadata _authors
_document_title
, dan isi isi pada dokumen mentah atau asli.
Dalam hal isi tubuh berada dalam ember Amazon S3
import json import boto3 s3 = boto3.client("s3") # Lambda function for advanced data manipulation def lambda_handler(event, context): # Get the value of "S3Bucket" key name or item from the given event input s3_bucket = event.get("s3Bucket") # Get the value of "S3ObjectKey" key name or item from the given event input s3_object_key = event.get("s3ObjectKey") content_object_before_CDE = s3.get_object(Bucket = s3_bucket, Key = s3_object_key) content_before_CDE = content_object_before_CDE["Body"].read().decode("utf-8"); content_after_CDE = "CDEInvolved " + content_before_CDE # Get the value of "metadata" key name or item from the given event input metadata = event.get("metadata") # Get the document "attributes" from the metadata document_attributes = metadata.get("attributes") s3.put_object(Bucket = s3_bucket, Key = "dummy_updated_kendra_document", Body=json.dumps(content_after_CDE)) return { "version": "v0", "s3ObjectKey": "dummy_updated_kendra_document", "metadataUpdates": [ {"name":"_document_title", "value":{"stringValue":"title_from_pre_extraction_lambda"}}, {"name":"_authors", "value":{"stringListValue":["author1", "author2"]}} ] }
Dalam kasus konten tubuh yang berada di gumpalan data
import json import boto3 import base64 # Lambda function for advanced data manipulation def lambda_handler(event, context): # Get the value of "dataBlobStringEncodedInBase64" key name or item from the given event input data_blob_string_encoded_in_base64 = event.get("dataBlobStringEncodedInBase64") # Decode the data blob string in UTF-8 data_blob_string = base64.b64decode(data_blob_string_encoded_in_base64).decode("utf-8") # Get the value of "metadata" key name or item from the given event input metadata = event.get("metadata") # Get the document "attributes" from the metadata document_attributes = metadata.get("attributes") new_data_blob = "This should be the modified data in the document by pre processing lambda ".encode("utf-8") return { "version": "v0", "dataBlobStringEncodedInBase64": base64.b64encode(new_data_blob).decode("utf-8"), "metadataUpdates": [ {"name":"_document_title", "value":{"stringValue":"title_from_pre_extraction_lambda"}}, {"name":"_authors", "value":{"stringListValue":["author1", "author2"]}} ] }
Kode Python berikut adalah contoh fungsi Lambda yang menerapkan manipulasi lanjutan dari bidang metadata _authors
_document_title
, dan isi isi pada dokumen terstruktur atau diurai.
import json import boto3 import time s3 = boto3.client("s3") # Lambda function for advanced data manipulation def lambda_handler(event, context): # Get the value of "S3Bucket" key name or item from the given event input s3_bucket = event.get("s3Bucket") # Get the value of "S3ObjectKey" key name or item from the given event input s3_key = event.get("s3ObjectKey") # Get the value of "metadata" key name or item from the given event input metadata = event.get("metadata") # Get the document "attributes" from the metadata document_attributes = metadata.get("attributes") kendra_document_object = s3.get_object(Bucket = s3_bucket, Key = s3_key) kendra_document_string = kendra_document_object['Body'].read().decode('utf-8') kendra_document = json.loads(kendra_document_string) kendra_document["textContent"]["documentBodyText"] = "Changing document body to a short sentence." s3.put_object(Bucket = s3_bucket, Key = "dummy_updated_kendra_document", Body=json.dumps(kendra_document)) return { "version" : "v0", "s3ObjectKey": "dummy_updated_kendra_document", "metadataUpdates": [ {"name": "_document_title", "value":{"stringValue": "title_from_post_extraction_lambda"}}, {"name": "_authors", "value":{"stringListValue":["author1", "author2"]}} ] }