เปิดเผยการเชื่อมต่อที่ซ่อนอยู่ในข้อมูลทางการเงินที่ไม่มีโครงสร้างโดยใช้ Amazon Bedrock และ Amazon Neptune
พื้นที่เก็บข้อมูลนี้มีโค้ดเพื่อปรับใช้โซลูชันต้นแบบที่สาธิตวิธีการรวม Generative AI และกราฟความรู้เพื่อสร้างระบบไร้เซิร์ฟเวอร์ที่ปรับขนาดได้ ขับเคลื่อนด้วยเหตุการณ์ เพื่อประมวลผลข้อมูลที่ไม่มีโครงสร้างสำหรับบริการทางการเงิน โซลูชันนี้สามารถช่วยให้ผู้จัดการสินทรัพย์ในองค์กรของคุณค้นพบการเชื่อมต่อที่ซ่อนอยู่ในพอร์ตการลงทุนของตน และมอบตัวอย่างอินเทอร์เฟซผู้ใช้ที่ใช้งานง่ายเพื่อรับข่าวสารทางการเงินและทำความเข้าใจความเชื่อมโยงกับพอร์ตการลงทุนของตน
กรณีการใช้งานทางธุรกิจ
โดยทั่วไปผู้จัดการสินทรัพย์จะลงทุนในบริษัทจำนวนมากในพอร์ตการลงทุนของตน และพวกเขาจำเป็นต้องติดตามข่าวสารที่เกี่ยวข้องกับบริษัทเหล่านั้นได้ เนื่องจากข่าวเหล่านี้จะช่วยให้พวกเขาก้าวนำหน้าความเคลื่อนไหวของตลาด ระบุโอกาสในการลงทุน และจัดการการลงทุนได้ดียิ่งขึ้น ผลงาน
โดยทั่วไป การติดตามข่าวสารสามารถทำได้ง่ายโดยการตั้งค่าการแจ้งเตือนข่าวตามคำสำคัญแบบง่ายๆ โดยใช้ชื่อบริษัทที่ได้รับการลงทุน แต่จะยากขึ้นเรื่อยๆ เมื่อเหตุการณ์ข่าวไม่ส่งผลกระทบโดยตรงต่อบริษัทที่ได้รับการลงทุน ตัวอย่างเช่น ผลกระทบอาจเกิดขึ้นกับซัพพลายเออร์ของบริษัทที่ได้รับการลงทุนซึ่งอาจส่งผลกระทบต่อห่วงโซ่อุปทานของบริษัท หรือผลกระทบอาจเกิดกับลูกค้าของลูกค้าของบริษัทที่ลงทุนของคุณ หากบริษัทเหล่านี้มีรายได้กระจุกตัวอยู่กับลูกค้าหลักบางราย อาจส่งผลเสียทางการเงินต่อการลงทุนของคุณ
ผลกระทบของลำดับที่สองหรือสามดังกล่าวนั้นยากต่อการระบุและติดตามได้ยากยิ่งขึ้น ด้วยโซลูชันอัตโนมัตินี้ ผู้จัดการสินทรัพย์สามารถสร้างกราฟความรู้ของความสัมพันธ์รอบพอร์ตการลงทุนของตน จากนั้นใช้ความรู้นี้เพื่อดึงความสัมพันธ์และข้อมูลเชิงลึกจากข่าวสารล่าสุด
สถาปัตยกรรม
กราฟฟังก์ชันขั้นตอน (จากจุดที่ #4)
การไหลของโซลูชัน (ทีละขั้นตอน)
- อัปโหลดรายงานพร็อกซีอย่างเป็นทางการ/รายปี/10,000 รายการ (.PDF) ไปยังบัคเก็ต Amazon S3
- ชื่อของบัคเก็ต S3 ที่จะอัปโหลดสามารถดึงข้อมูลจากคอนโซล CloudFormation - เอาต์พุตสแต็กหลัก - "IngestionBucket"
- โปรดทราบว่ารายงานที่ใช้ควรเป็นรายงานที่เผยแพร่อย่างเป็นทางการเพื่อลดการรวมข้อมูลที่ไม่ถูกต้องลงในกราฟความรู้ของคุณ (ซึ่งตรงข้ามกับข่าว/แท็บลอยด์)
- การแจ้งเตือนเหตุการณ์ S3 จะทริกเกอร์ฟังก์ชัน AWS Lambda ซึ่งจะส่งบัคเก็ต/ชื่อไฟล์ S3 ไปยัง Amazon Simple Queue Service Queue (FIFO)
- การใช้คิว FIFO คือเพื่อให้แน่ใจว่ากระบวนการนำเข้ารายงานจะดำเนินการตามลำดับ เพื่อลดโอกาสที่จะนำข้อมูลที่ซ้ำกันเข้าสู่กราฟความรู้ของคุณ
- เหตุการณ์ตามเวลาของ Amazon EventBridge จะทำงานทุกนาทีเพื่อเรียกใช้ฟังก์ชัน AWS Lambda ฟังก์ชันจะดึงข้อความคิวถัดไปที่มีอยู่จาก SQS และเริ่มการดำเนินการ AWS Step Function แบบอะซิงโครนัส
- เครื่องสถานะฟังก์ชันขั้นตอนจะดำเนินการผ่านชุดงานเพื่อประมวลผลเอกสารที่อัปโหลดโดยแยกข้อมูลสำคัญออกแล้วแทรกลงในกราฟความรู้ของคุณ
- งาน
- การใช้ Amazon Textract แยกเนื้อหาข้อความออกจากไฟล์รายงานพร็อกซี/รายปี/10k (PDF) ใน Amazon S3 และแยกออกเป็นชิ้นข้อความเล็กๆ หลายชิ้นเพื่อการประมวลผล จัดเก็บชิ้นข้อความใน Amazon DynamoDB
- การใช้ Claude v3 Sonnet ของ Anthropic บน Amazon Bedrock ประมวลผลส่วนข้อความสองสามส่วนแรกเพื่อระบุเอนทิตีหลักที่รายงานอ้างถึง ร่วมกับคุณลักษณะที่เกี่ยวข้อง (เช่น อุตสาหกรรม)
- ดึงส่วนข้อความจาก DynamoDB และเรียกใช้ฟังก์ชัน lambda สำหรับแต่ละส่วนข้อความเพื่อแยกเอนทิตี (บริษัท/บุคคล) และความสัมพันธ์ (ลูกค้า/ซัพพลายเออร์/หุ้นส่วน/คู่แข่ง/ผู้อำนวยการ) ไปยังเอนทิตีหลักโดยใช้ Amazon Bedrock
- รวบรวมข้อมูลที่แยกออกมาทั้งหมด
- กรองเสียงรบกวน/เอนทิตีที่ไม่เกี่ยวข้อง (เช่น คำทั่วไป เช่น "ผู้บริโภค") โดยใช้ Amazon Bedrock
- ใช้ Amazon Bedrock เพื่อดำเนินการแก้ไขความกำกวมโดยให้เหตุผลโดยใช้ข้อมูลที่แยกออกมาเทียบกับรายการเอนทิตีที่คล้ายกันจากกราฟความรู้ หากไม่มีเอนทิตี ให้แทรกเข้าไป มิฉะนั้น ให้ใช้เอนทิตีที่มีอยู่แล้วในกราฟความรู้ แทรกความสัมพันธ์ทั้งหมดที่แยกออกมา
- ดำเนินการล้างข้อมูลโดยการลบข้อความคิว SQS และไฟล์ S3
- เมื่อขั้นตอนนี้เสร็จสิ้น กราฟความรู้ของคุณจะได้รับการอัปเดตและพร้อมใช้งาน
- ผู้ใช้เข้าถึงเว็บแอปพลิเคชันที่ใช้ React เพื่อดูบทความข่าวที่อัดแน่นไปด้วยข้อมูลเอนทิตี/ความรู้สึก/เส้นทางการเชื่อมต่อ
- URL สำหรับเว็บแอปพลิเคชันสามารถคัดลอกได้จากคอนโซล CloudFormation - เอาต์พุตสแต็กของ webapp - "WebApplicationURL"
- เนื่องจากนี่เป็นโซลูชันตัวอย่างเพื่อการสาธิต ผู้ใช้จึงระบุจุดสิ้นสุด API, คีย์ API และคีย์ News API บนเว็บแอปพลิเคชันโดยคลิกที่ไอคอนรูปเฟืองที่มุมขวาบน
- ตำแหน่งข้อมูล API สามารถคัดลอกได้จากคอนโซล CloudFormation - เอาต์พุตสแต็กหลัก - "APIEndpoint"
- สามารถคัดลอกคีย์ API ได้จากคอนโซลคีย์ API ของ API Gateway - สแต็กหลัก
- สามารถรับรหัส News API ได้จาก NewsAPI.org หลังจากที่คุณสร้างบัญชีฟรี
- คลิกที่ปุ่ม "รีเฟรชการตั้งค่า" หลังจากกรอกค่าแล้ว
- เมื่อใช้เว็บแอปพลิเคชัน ผู้ใช้จะระบุจำนวนฮ็อพ (ค่าเริ่มต้น N=2) บนเส้นทางการเชื่อมต่อที่จะตรวจสอบ
- โดยคลิกที่ไอคอนรูปเฟืองที่มุมขวาบน จากนั้นระบุค่าของ N
- เมื่อใช้เว็บแอปพลิเคชัน ผู้ใช้จะระบุรายการเอนทิตีที่จะติดตาม
- โดยคลิกไอคอนรูปเฟืองที่มุมขวาบน จากนั้นสลับสวิตช์ "สนใจ" ซึ่งทำเครื่องหมายเอนทิตีที่เกี่ยวข้องเป็น INTERESTED=YES/NO
- นี่เป็นขั้นตอนสำคัญ และจะต้องดำเนินการก่อนที่จะประมวลผลบทความข่าวใดๆ
- ในการสร้างข่าวสมมติ ผู้ใช้คลิกปุ่ม "สร้างข่าวตัวอย่าง" เพื่อสร้างข่าวการเงินตัวอย่าง 10 รายการพร้อมเนื้อหาแบบสุ่มที่จะป้อนเข้าสู่กระบวนการนำเข้าข่าว
- เนื้อหาถูกสร้างขึ้นโดยใช้ Amazon Bedrock และเป็นเพียงเรื่องสมมติเท่านั้น
- หากต้องการดาวน์โหลดข่าวจริง ผู้ใช้คลิกที่ปุ่ม "ดาวน์โหลดข่าวล่าสุด" เพื่อดาวน์โหลดข่าวเด่นที่เกิดขึ้นวันนี้ (สนับสนุนโดย NewsAPI.org)
- อัปโหลดข่าวสาร (.TXT) ไปยังบัคเก็ต S3
- ชื่อของบัคเก็ต S3 ที่จะอัปโหลดสามารถดึงข้อมูลจากคอนโซล CloudFormation - เอาต์พุตสแต็กหลัก - "NewsBucket"
- ขั้นตอนที่ #8 หรือ #9 ได้อัปโหลดข่าวสารไปยังบัคเก็ต S3 โดยอัตโนมัติ แต่คุณยังสามารถสร้างการผสานรวมกับผู้ให้บริการข่าวสารที่คุณต้องการ เช่น AWS Data Exchange หรือผู้ให้บริการข่าวสารบุคคลที่สาม เพื่อปล่อยบทความข่าวเป็นไฟล์ลงในบัคเก็ต S3
- เนื้อหาไฟล์ข้อมูลข่าวควรอยู่ในรูปแบบ: {dd mmm yyyy}{title}{news content}
- การแจ้งเตือนเหตุการณ์ S3 จะส่งบัคเก็ต/ชื่อไฟล์ S3 ไปยัง SQS (มาตรฐาน) ซึ่งจะทริกเกอร์ฟังก์ชัน lambda หลายฟังก์ชันเพื่อประมวลผลข้อมูลข่าวสารแบบขนาน
- เมื่อใช้ Amazon Bedrock ฟังก์ชัน lambda จะแยกเอนทิตีที่กล่าวถึงในข่าว พร้อมด้วยข้อมูล ความสัมพันธ์ และความรู้สึกที่เกี่ยวข้องของเอนทิตีที่กล่าวถึง
- จากนั้นจะตรวจสอบกับกราฟความรู้และใช้ Amazon Bedrock เพื่อแก้ไขความกำกวมโดยให้เหตุผลโดยใช้ข้อมูลที่มีอยู่จากข่าวและจากภายในกราฟความรู้เพื่อระบุเอนทิตีที่เกี่ยวข้อง
- เมื่อระบุตำแหน่งเอนทิตีแล้ว จากนั้นจะค้นหาและส่งกลับเส้นทางการเชื่อมต่อที่เชื่อมต่อกับเอนทิตีที่ทำเครื่องหมายด้วย INTERESTED=YES ในกราฟความรู้ที่อยู่ภายใน N=2 hops
- เว็บแอปพลิเคชันจะรีเฟรชอัตโนมัติทุกๆ 1 วินาทีเพื่อดึงชุดข่าวที่ประมวลผลล่าสุดออกมาแสดงบนเว็บแอปพลิเคชัน
ตอบสนองเว็บแอปพลิเคชัน - การตั้งค่า
นักสำรวจกราฟ
พื้นที่เก็บข้อมูลนี้ยังปรับใช้ Graph Explorer (github/aws/graphexplorer) ซึ่งเป็นเว็บแอปพลิเคชันที่ใช้ React ซึ่งช่วยให้ผู้ใช้สามารถเห็นภาพเอนทิตีและความสัมพันธ์ที่แยกออกมาได้
- หากต้องการเข้าถึง Graph Explorer ให้ดึง URL จากคอนโซล CloudFormation - เอาต์พุตสแต็กหลัก - "GraphExplorer"
- เมื่อเข้าถึงเว็บแอปพลิเคชัน คุณจะได้รับคำเตือนเกี่ยวกับความเสี่ยงด้านความปลอดภัยที่อาจเกิดขึ้นบนเบราว์เซอร์ของคุณ เนื่องจากใบรับรองที่ใช้สำหรับไซต์นั้นมีการลงนามด้วยตนเอง คุณสามารถดำเนินการต่อไปได้ หากต้องการกำจัดคำเตือน โปรดอ่านข้อความนี้
- เมื่อเปิดตัวแล้ว แอปพลิเคชันจะเชื่อมต่อกับฐานข้อมูล AWS Neptune โดยอัตโนมัติและซิงโครไนซ์ข้อมูล คุณสามารถคลิกไอคอนรีเฟรชได้ตลอดเวลาเพื่อซิงโครไนซ์ข้อมูลอีกครั้ง
- คลิกที่ "Open Graph Explorer" ที่ด้านบนขวาเพื่อเริ่มแสดงภาพกราฟความรู้
- ไปที่ github/aws/graphexplorer เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับ Graph Explorer
- โปรดทราบว่าไม่จำเป็นต้องใช้ Graph Explorer ในฐานะส่วนหนึ่งของโซลูชัน แต่ช่วยให้คุณสำรวจความสัมพันธ์ที่แยกออกมาได้ง่ายขึ้น
การสาธิต - เริ่มต้นใช้งาน Graph Explorer
เริ่มต้นใช้งานกราฟ explorer.mp4
นี่คือวิดีโอสาธิตอื่นเกี่ยวกับคุณสมบัติของ Graph Explorer: ลิงก์ไปยังวิดีโอสาธิต
Graph Explorer - กราฟความรู้
(การสำรวจฐานข้อมูลกราฟ Amazon Neptune ด้วยภาพโดยใช้เครื่องมือ Graph Explorer)
คำแนะนำในการปรับใช้
พื้นที่เก็บข้อมูลนี้มีแอปพลิเคชัน CDK ที่จะปรับใช้โซลูชันต้นแบบทั้งหมดบนสแต็ก CDK สองสแต็ก:
- สแต็กแอปพลิเคชันหลัก ("สแต็กหลัก") ซึ่งสามารถปรับใช้กับภูมิภาคใดก็ได้ (เช่น us-east-1, us-west-2) ที่มีบริการที่จำเป็นและโมเดล Amazon Bedrock
- เว็บแอปพลิเคชันสแต็ก ("webapp stack") ที่สามารถปรับใช้กับ us-east-1 ได้เท่านั้น เนื่องจากต้องใช้ AWS WAF
คุณสามารถปรับใช้ทั้งสองสแต็กในภูมิภาคที่แตกต่างกันหรือในภูมิภาคเดียวกัน (เช่น us-east-1)
บริการของ AWS ที่ใช้
- อเมซอน ข้อเท็จจริง
- อเมซอน ดาวเนปจูน
- สารสกัดจากอเมซอน
- อเมซอน ไดนาโมดีบี
- ฟังก์ชั่นขั้นตอน AWS
- AWS แลมบ์ดา
- Amazon Simple Queue Service (SQS)
- อเมซอน EventBridge
- Amazon Simple Storage Service (S3)
- อเมซอน คลาวด์ฟรอนต์
- AWS WAF
- Amazon Elastic Compute Cloud (EC2)
- อเมซอน วีพีซี
- เกตเวย์ Amazon API
- AWS Identity และการจัดการการเข้าถึง
ข้อกำหนดเบื้องต้น
- Amazon Bedrock - คุณจะต้องเข้าถึง Anthropic Claude v3 Sonnet หากต้องการตั้งค่าการเข้าถึงโมเดลใน Amazon Bedrock โปรดอ่านข้อความนี้
- Python - คุณจะต้องใช้ Python 3 ขึ้นไป
- โหนด - คุณจะต้องใช้เวอร์ชัน 18.0.0 ขึ้นไป
- นักเทียบท่า - คุณจะต้องใช้เวอร์ชัน 24.0.0 ขึ้นไปพร้อมกับ Docker Buildx และให้ docker daemon ทำงานอยู่
ตั้งค่า virtualenv
หากต้องการสร้าง virtualenv บน MacOS และ Linux ด้วยตนเอง:
หลังจากกระบวนการเริ่มต้นเสร็จสิ้นและสร้าง virtualenv แล้ว คุณสามารถใช้ขั้นตอนต่อไปนี้เพื่อเปิดใช้งาน virtualenv ของคุณ
$ source .venv/bin/activate
หากคุณเป็นแพลตฟอร์ม Windows คุณจะเปิดใช้งาน virtualenv ดังนี้:
% .venvScriptsactivate.bat
เมื่อเปิดใช้งาน virtualenv แล้ว คุณจะสามารถติดตั้งการขึ้นต่อกันที่จำเป็นได้
$ pip install -r requirements.txt
ก่อนการปรับใช้งาน
หากนี่เป็นครั้งแรกที่คุณปรับใช้โค้ดผ่าน CDK กับบัญชี AWS ของคุณ คุณจะต้องบูตบัญชี AWS ของคุณก่อนทั้ง us-east-1 และภูมิภาคที่คุณกำลังปรับใช้ด้วย มิฉะนั้น คุณสามารถข้ามขั้นตอนนี้ได้
$ cdk bootstrap aws:///us-east-1 aws:///
จากนั้นดำเนินการรันคำสั่งด้านล่างเพื่อ:
- สร้างเว็บแอปพลิเคชันแบบ React
- ดาวน์โหลดการพึ่งพา Python ที่จำเป็นสำหรับการสร้าง AWS Lambda Layer
- คัดลอกไลบรารีที่กำหนดเอง (connectionsinsights)
ปรับใช้
หากต้องการปรับใช้โซลูชัน (ใช้เวลาประมาณ 30 นาที):
ทำความสะอาด
หากต้องการทำลายโซลูชัน:
หากคุณพบความล้มเหลวในการลบเนื่องจากบัคเก็ต S3 ไม่ว่างเปล่า อาจเป็นเพราะการเข้าถึงไฟล์บันทึกที่เขียนลงในบัคเก็ต S3 หลังจากที่พวกมันถูกทำให้ว่างเปล่าโดยเป็นส่วนหนึ่งของกระบวนการทำลาย cdk หากเกิดเหตุการณ์เช่นนี้ ให้ล้างที่เก็บข้อมูลเหล่านั้นให้ว่างแล้วรันคำสั่งล้างข้อมูลอีกครั้ง