Mengungkap Koneksi Tersembunyi dalam Data Keuangan Tidak Terstruktur menggunakan Amazon Bedrock dan Amazon Neptune
Repositori ini berisi kode untuk menerapkan solusi prototipe yang menunjukkan bagaimana AI Generatif dan grafik pengetahuan dapat digabungkan untuk menciptakan sistem tanpa server yang skalabel, berbasis peristiwa, untuk memproses data tidak terstruktur untuk layanan keuangan. Solusi ini dapat membantu manajer aset di organisasi Anda mengungkap hubungan tersembunyi dalam portofolio investasi mereka dan memberikan contoh antarmuka pengguna yang mudah digunakan untuk membaca berita keuangan dan memahami hubungannya dengan portofolio investasi mereka.
Kasus Penggunaan Bisnis
Manajer aset umumnya berinvestasi di sejumlah besar perusahaan dalam portofolionya, dan mereka harus mampu memantau setiap berita terkait perusahaan tersebut karena berita ini akan membantu mereka tetap terdepan dalam pergerakan pasar, mengidentifikasi peluang investasi, dan mengelola investasi mereka dengan lebih baik. portofolio.
Umumnya, pelacakan berita dapat dilakukan dengan mudah dengan menyiapkan peringatan berita berbasis kata kunci sederhana menggunakan nama perusahaan investee, namun hal ini menjadi semakin sulit jika peristiwa berita tersebut tidak berdampak langsung pada perusahaan investee. Misalnya dampaknya dapat terjadi pada pemasok perusahaan investee yang berpotensi mengganggu rantai pasokan perusahaan. Atau dampaknya dapat terjadi pada pelanggan dari pelanggan perusahaan investee Anda. Jika pendapatan perusahaan-perusahaan ini terkonsentrasi pada beberapa pelanggan utama, hal ini berpotensi menimbulkan dampak finansial negatif terhadap investasi Anda.
Dampak tingkat kedua atau ketiga ini sulit diidentifikasi dan bahkan lebih sulit dilacak. Dengan solusi otomatis ini, manajer aset dapat membuat grafik pengetahuan tentang hubungan seputar portofolio investasi mereka, dan kemudian menggunakan pengetahuan ini untuk menarik korelasi & wawasan dari berita terbaru.
Arsitektur
Grafik Fungsi Langkah (dari poin #4)
Alur solusi (langkah demi langkah)
- Unggah laporan proksi/tahunan/10 ribu resmi (.PDF) ke bucket Amazon S3.
- Nama bucket S3 yang akan diunggah dapat diambil dari konsol CloudFormation - keluaran tumpukan utama - "IngestionBucket"
- Perhatikan bahwa laporan yang digunakan harus merupakan laporan yang dipublikasikan secara resmi untuk meminimalkan penyertaan data yang tidak akurat ke dalam grafik pengetahuan Anda (dibandingkan dengan berita/tabloid).
- Pemberitahuan peristiwa S3 memicu fungsi AWS Lambda yang mengirimkan nama bucket/file S3 ke Amazon Simple Queue Service Queue (FIFO).
- Penggunaan antrean FIFO adalah untuk memastikan bahwa proses penyerapan laporan dilakukan secara berurutan untuk mengurangi kemungkinan memasukkan data duplikat ke dalam grafik pengetahuan Anda.
- Peristiwa berbasis waktu Amazon EventBridge berjalan setiap menit untuk memanggil fungsi AWS Lambda. Fungsi ini akan mengambil pesan antrean berikutnya yang tersedia dari SQS dan memulai eksekusi AWS Step Function secara asinkron.
- Mesin status fungsi langkah dijalankan melalui serangkaian tugas untuk memproses dokumen yang diunggah dengan mengekstrak informasi penting dan memasukkannya ke dalam grafik pengetahuan Anda.
- Tugas
- Dengan menggunakan Amazon Textract, ekstrak konten teks dari file laporan proksi/tahunan/10k (PDF) di Amazon S3 dan bagi menjadi beberapa potongan teks yang lebih kecil untuk diproses. Simpan potongan teks di Amazon DynamoDB.
- Menggunakan Claude v3 Sonnet Anthropic di Amazon Bedrock, proses beberapa potongan teks pertama untuk menentukan entitas utama yang dirujuk laporan, bersama dengan atribut yang relevan (misalnya industri).
- Mengambil potongan teks dari DynamoDB dan untuk setiap potongan teks, memanggil fungsi lambda untuk mengekstrak entitas (perusahaan/orang), dan hubungannya (pelanggan/pemasok/mitra/pesaing/direktur) ke entitas utama menggunakan Amazon Bedrock.
- Konsolidasikan semua informasi yang diekstraksi
- Memfilter kebisingan/entitas yang tidak relevan (yaitu istilah umum seperti "konsumen") menggunakan Amazon Bedrock.
- Gunakan Amazon Bedrock untuk melakukan disambiguasi dengan melakukan penalaran menggunakan informasi yang diekstrak terhadap daftar entitas serupa dari grafik pengetahuan. Jika entitas tidak ada, masukkan entitas tersebut. Jika tidak, gunakan entitas yang sudah ada di grafik pengetahuan. Menyisipkan semua hubungan yang diekstraksi.
- Lakukan pembersihan dengan menghapus pesan antrian SQS & file S3.
- Setelah langkah ini selesai, grafik pengetahuan Anda diperbarui dan siap digunakan.
- Pengguna mengakses aplikasi web berbasis React untuk melihat artikel berita yang diperkaya dengan informasi entitas/sentimen/jalur koneksi.
- URL untuk aplikasi web dapat disalin dari konsol CloudFormation - keluaran tumpukan aplikasi web - "WebApplicationURL"
- Karena ini adalah contoh solusi untuk tujuan demo, pengguna menentukan titik akhir API, kunci API, dan kunci API Berita pada aplikasi web dengan mengklik ikon roda gigi di sudut kanan atas.
- Titik akhir API dapat disalin dari konsol CloudFormation - keluaran tumpukan utama - "APIEndpoint".
- Kunci API dapat disalin dari konsol Kunci API Gateway - tumpukan utama.
- Kunci API Berita dapat diperoleh dari NewsAPI.org setelah Anda membuat akun secara gratis.
- Klik tombol "Segarkan Pengaturan" setelah mengisi nilainya.
- Dengan menggunakan aplikasi web, pengguna menentukan jumlah hop (default N=2) pada jalur koneksi yang akan dipantau.
- Untuk melakukannya, klik ikon roda gigi di pojok kanan atas lalu tentukan nilai N.
- Dengan menggunakan aplikasi web, pengguna menentukan daftar entitas yang akan dilacak.
- Untuk melakukannya, klik ikon roda gigi di sudut kanan atas dan kemudian alihkan tombol "Tertarik" yang menandai entitas terkait sebagai TERTARIK=YA/TIDAK.
- Ini merupakan langkah penting dan harus dilakukan sebelum artikel berita diproses.
- Untuk menghasilkan berita fiksi, pengguna mengklik tombol "Hasilkan Contoh Berita" untuk menghasilkan 10 contoh berita keuangan dengan konten acak untuk dimasukkan ke dalam proses penyerapan berita.
- Konten dibuat menggunakan Amazon Bedrock dan murni fiksi.
- Untuk mendownload berita aktual, pengguna mengklik tombol "Unduh Berita Terbaru" untuk mendownload berita terpopuler yang terjadi hari ini (didukung oleh NewsAPI.org).
- Unggah berita (.TXT) ke keranjang S3.
- Nama bucket S3 yang akan diunggah dapat diambil dari konsol CloudFormation - keluaran tumpukan utama - "NewsBucket"
- Langkah #8 atau #9 telah mengunggah berita ke bucket S3 secara otomatis, namun Anda juga dapat membangun integrasi ke penyedia berita pilihan Anda seperti AWS Data Exchange atau penyedia berita pihak ketiga mana pun untuk memasukkan artikel berita sebagai file ke dalam bucket S3.
- Konten file data berita harus diformat sebagai: {dd mmm yyyy}{title}{konten berita
- Pemberitahuan peristiwa S3 mengirimkan nama bucket/file S3 ke SQS (standar) yang memicu beberapa fungsi lambda untuk memproses data berita secara paralel.
- Dengan menggunakan Amazon Bedrock, fungsi lambda mengekstrak entitas yang disebutkan dalam berita bersama dengan informasi, hubungan & sentimen terkait dari entitas yang disebutkan.
- Kemudian memeriksa grafik pengetahuan dan menggunakan Amazon Bedrock untuk melakukan disambiguasi dengan menggunakan alasan menggunakan informasi yang tersedia dari berita dan dari dalam grafik pengetahuan untuk mengidentifikasi entitas terkait.
- Setelah entitas ditemukan, entitas kemudian mencari dan mengembalikan jalur koneksi apa pun yang terhubung ke entitas yang ditandai dengan INTERESTED=YES dalam grafik pengetahuan yang berada dalam jarak N=2 lompatan.
- Aplikasi web disegarkan secara otomatis setiap 1 detik untuk mengeluarkan kumpulan berita terbaru yang telah diproses untuk ditampilkan di aplikasi web.
Bereaksi Aplikasi Web - Pengaturan
Penjelajah Grafik
Repositori ini juga menerapkan Graph Explorer (github/aws/graphexplorer) yang merupakan aplikasi web berbasis React yang memungkinkan pengguna untuk memvisualisasikan entitas & hubungan yang diekstraksi.
- Untuk mengakses Graph Explorer, ambil URL dari konsol CloudFormation - keluaran tumpukan utama - "GraphExplorer"
- Saat mengakses aplikasi web, Anda akan menerima peringatan tentang potensi risiko keamanan pada browser Anda karena sertifikat yang digunakan untuk situs tersebut ditandatangani sendiri. Anda dapat terus melanjutkan. Untuk menghilangkan peringatan tersebut, baca ini.
- Setelah diluncurkan, aplikasi akan secara otomatis terhubung ke database AWS Neptune dan menyinkronkan datanya. Anda dapat mengklik ikon segarkan kapan saja untuk menyinkronkan ulang data.
- Klik "Buka Penjelajah Grafik" di kanan atas untuk mulai memvisualisasikan grafik pengetahuan.
- Buka github/aws/graphexplorer untuk informasi lebih lanjut tentang Graph Explorer.
- Perhatikan bahwa Graph Explorer tidak diperlukan sebagai bagian dari solusi namun memudahkan Anda menjelajahi hubungan yang diekstraksi.
Demo - Memulai Graph Explorer
memulai-dengan-graph-explorer.mp4
Berikut ini demo video lainnya tentang fitur Graph Explorer: tautan ke demo video
Penjelajah Grafik - Grafik Pengetahuan
(eksplorasi visual database grafik Amazon Neptune menggunakan alat Graph Explorer)
Instruksi Penerapan
Repositori ini menyediakan aplikasi CDK yang akan menyebarkan seluruh solusi prototipe melalui dua tumpukan CDK:
- tumpukan aplikasi utama ("tumpukan utama") yang dapat diterapkan ke wilayah mana pun (misalnya us-east-1, us-west-2) yang memiliki layanan yang diperlukan dan model Amazon Bedrock.
- tumpukan aplikasi web ("tumpukan webapp") yang hanya dapat diterapkan ke us-east-1 karena memerlukan AWS WAF.
Anda dapat menyebarkan kedua tumpukan tersebut ke wilayah berbeda, atau ke wilayah yang sama (yaitu us-east-1).
Layanan AWS digunakan
- Batuan Dasar Amazon
- Amazon Neptunus
- Teks Amazon
- Amazon DynamoDB
- Fungsi Langkah AWS
- AWS Lambda
- Layanan Antrean Sederhana Amazon (SQS)
- Amazon EventBridge
- Layanan Penyimpanan Sederhana Amazon (S3)
- Amazon CloudFront
- AWSWAF
- Amazon Elastic Compute Cloud (EC2)
- VPC Amazon
- Gerbang API Amazon
- AWS Identitas dan Manajemen Akses
Prasyarat
- Amazon Bedrock - Anda memerlukan akses ke Anthropic Claude v3 Sonnet. Untuk mengatur akses model di Amazon Bedrock, baca ini.
- Python - Anda memerlukan Python 3 dan lebih tinggi.
- Node - Anda memerlukan v18.0.0 dan lebih tinggi.
- Docker - Anda memerlukan v24.0.0 dan yang lebih baru dengan Docker Buildx, dan menjalankan daemon buruh pelabuhan.
Siapkan virtualenv
Untuk membuat virtualenv secara manual di MacOS dan Linux:
Setelah proses init selesai dan virtualenv dibuat, Anda dapat menggunakan langkah berikut untuk mengaktifkan virtualenv Anda.
$ source .venv/bin/activate
Jika Anda adalah platform Windows, Anda akan mengaktifkan virtualenv seperti ini:
% .venvScriptsactivate.bat
Setelah virtualenv diaktifkan, Anda dapat menginstal dependensi yang diperlukan.
$ pip install -r requirements.txt
Pra-penerapan
Jika ini adalah pertama kalinya Anda menerapkan kode melalui CDK ke Akun AWS Anda, Anda harus melakukan bootstrap terlebih dahulu pada akun AWS Anda di us-east-1 dan juga wilayah tempat Anda menerapkannya. Jika tidak, Anda dapat melewati langkah ini.
$ cdk bootstrap aws:///us-east-1 aws:///
Kemudian lanjutkan untuk menjalankan perintah di bawah ini untuk:
- membangun aplikasi web berbasis React
- unduh dependensi python yang diperlukan untuk membuat Lapisan AWS Lambda
- salin perpustakaan khusus (connectionsinsights)
Menyebarkan
Untuk menerapkan solusi (dibutuhkan sekitar 30 menit):
Membersihkan
Untuk menghancurkan solusinya:
Jika Anda mengalami kegagalan penghapusan karena bucket S3 tidak kosong, hal ini mungkin disebabkan oleh akses file log yang ditulis ke bucket S3 setelah dikosongkan sebagai bagian dari proses penghancuran cdk. Jika ini terjadi, kosongkan saja keranjang tersebut dan jalankan kembali perintah pembersihan.