使用 Amazon Bedrock 和 Amazon Neptune 來發現非結構化財務資料中的隱藏連接
該儲存庫包含用於部署原型解決方案的程式碼,該解決方案演示瞭如何將生成式 AI 和知識圖結合起來創建可擴展的、事件驅動的無伺服器系統來處理金融服務的非結構化資料。此解決方案可以幫助組織中的資產管理者發現其投資組合中隱藏的聯繫,並提供易於使用的範例使用者介面來消費金融新聞並了解其與投資組合的聯繫。
業務用例
資產管理公司通常投資於其投資組合中的大量公司,他們需要能夠追蹤與這些公司相關的任何新聞,因為這些新聞將幫助他們領先於市場動向,識別投資機會,並更好地管理他們的投資文件夾。
一般來說,新聞追蹤可以透過使用被投資公司名稱來設定一個簡單的基於關鍵字的新聞提醒來輕鬆完成,但當新聞事件不直接影響被投資公司時,這會變得越來越困難。例如,影響可能是針對被投資公司的供應商,這可能會擾亂該公司的供應鏈。或者,影響可能會影響您所投資公司的客戶的客戶。如果這些公司的收入集中於少數關鍵客戶,這可能會對您的投資產生負面的財務影響。
這種二階或三階影響很難識別,更難以追蹤。透過這種自動化解決方案,資產管理者可以建立圍繞其投資組合的關係的知識圖,然後利用這些知識從最新新聞中得出相關性和見解。
建築學
階躍函數圖(從第 4 點開始)
解決方案流程(逐步)
- 將官方代理商/年度/10k 報告 (.PDF) 上傳到 Amazon S3 儲存桶。
- 可以從 CloudFormation 控制台 - 主堆疊輸出 -「IngestionBucket」檢索要上傳到的 S3 儲存桶的名稱
- 請注意,使用的報告應該是正式發布的報告,以最大限度地減少知識圖中包含不準確的數據(而不是新聞/小報)。
- S3 事件通知觸發 AWS Lambda 函數,該函數將 S3 儲存桶/檔案名稱傳送至 Amazon Simple Queue Service 佇列 (FIFO)。
- 使用 FIFO 佇列是為了確保報告攝取過程按順序執行,以減少將重複資料引入知識圖譜的可能性。
- Amazon EventBridge 基於時間的事件每分鐘執行一次以呼叫 AWS Lambda 函數。此函數將從 SQS 檢索下一個可用佇列訊息並非同步啟動 AWS Step Function 的執行。
- 階躍函數狀態機執行一系列任務,透過提取關鍵資訊並將其插入知識圖中來處理上傳的文件。
- 任務
- 使用 Amazon Textract,從 Amazon S3 中的代理程式/年度/10k 報告檔案 (PDF) 中提取文字內容,並將其拆分為多個較小的文字區塊進行處理。將文字區塊儲存在 Amazon DynamoDB 中。
- 在 Amazon Bedrock 上使用 Anthropic 的 Claude v3 Sonnet,處理前幾個文字區塊以確定報告所指的主要實體以及相關屬性(例如產業)。
- 使用 Amazon Bedrock 從 DynamoDB 檢索文字區塊,並針對每個文字區塊呼叫 lambda 函數來擷取實體(公司/個人)及其與主實體的關係(客戶/供應商/合作夥伴/競爭對手/董事)。
- 整合所有擷取的訊息
- 使用 Amazon Bedrock 過濾掉雜訊/不相關實體(即「消費者」等通用術語)。
- 使用 Amazon Bedrock 透過使用擷取的資訊針對知識圖中的相似實體清單進行推理來消除歧義。如果該實體不存在,則插入它。否則,使用知識圖中已存在的實體。插入提取的所有關係。
- 透過刪除 SQS 佇列訊息和 S3 檔案來執行清理。
- 此步驟完成後,您的知識圖就會更新並可供使用。
- 使用者造訪基於 React 的 Web 應用程式來查看富含實體/情感/連結路徑資訊的新聞文章。
- 可以從 CloudFormation 控制台複製 Web 應用程式的 URL - web 應用程式堆疊輸出 - “WebApplicationURL”
- 由於這是用於演示目的的範例解決方案,使用者透過點擊右上角的齒輪圖示來指定 Web 應用程式上的 API 端點、API 金鑰和新聞 API 金鑰。
- 可以從 CloudFormation 控制台 - 主堆疊輸出 - “APIEndpoint”複製 API 端點。
- API 金鑰可以從 API Gateway API 金鑰控制台 - 主堆疊複製。
- 建立帳戶後,可以免費從 NewsAPI.org 取得新聞 API 金鑰。
- 填寫值後點選“刷新設定”按鈕。
- 使用 Web 應用程序,使用者指定要監視的連線路徑上的躍點數(預設 N=2)。
- 為此,請點擊右上角的齒輪圖標,然後指定 N 的值。
- 使用者使用 Web 應用程式指定要追蹤的實體清單。
- 為此,請點擊右上角的齒輪圖標,然後切換「感興趣」開關,將相應的實體標記為「感興趣=是/否」。
- 這是重要的一步,必須在處理任何新聞文章之前完成。
- 要產生虛構新聞,用戶點擊「產生樣本新聞」按鈕即可產生 10 個樣本財經新聞,其中的隨機內容將輸入到新聞攝取過程中。
- 內容是使用 Amazon Bedrock 產生的,純粹是虛構。
- 要下載實際新聞,用戶點擊「下載最新新聞」按鈕即可下載今天發生的熱門新聞(由 NewsAPI.org 提供支援)。
- 將新聞 (.TXT) 上傳到 S3 儲存桶。
- 可以從 CloudFormation 控制台 - 主堆疊輸出 -“NewsBucket”檢索要上傳到的 S3 儲存桶的名稱
- 步驟#8 或#9 已自動將新聞上傳到S3 儲存桶,但您也可以建立與首選新聞提供者(例如AWS Data Exchange 或任何第三方新聞提供者)的集成,以將新聞文章作為文件放入S3 儲存桶中。
- 新聞資料檔案內容的格式應為:{dd mmm yyyy}{title}{news content}
- S3 事件通知將 S3 儲存桶/檔案名稱傳送至 SQS(標準),SQS 會觸發多個 lambda 函數並行處理新聞資料。
- 使用 Amazon Bedrock,lambda 函數提取新聞中提到的實體以及所提到實體的任何相關資訊、關係和情緒。
- 然後,它會對照知識圖進行檢查,並使用 Amazon Bedrock 透過使用新聞和知識圖中的可用資訊進行推理來執行消歧操作,以識別相應的實體。
- 一旦找到實體,它就會搜尋並傳回連接到知識圖中標記為 INTERESTED=YES 且距離 N=2 跳以內的實體的任何連接路徑。
- Web 應用程式每 1 秒自動刷新一次,以提取最新的一組已處理新聞以顯示在 Web 應用程式上。
React Web 應用程式 - 設定
圖形瀏覽器
該儲存庫還部署了 Graph Explorer (github/aws/graphexplorer),這是一個基於 React 的 Web 應用程序,使用戶能夠可視化提取的實體和關係。
- 若要存取 Graph Explorer,請從 CloudFormation 控制台擷取 URL - 主堆疊輸出 - “GraphExplorer”
- 存取 Web 應用程式時,您將收到瀏覽器潛在安全風險的警告,因為該網站使用的憑證是自簽署的。您可以繼續進行。若要消除警告,請閱讀此內容。
- 啟動後,應用程式將自動連接到AWS Neptune資料庫並同步其資料。您可以隨時點擊刷新圖示來重新同步資料。
- 點選右上角的「Open Graph Explorer」開始視覺化知識圖譜。
- 有關 Graph Explorer 的更多信息,請訪問 github/aws/graphexplorer。
- 請注意,解決方案中不需要 Graph Explorer,但它可以讓您更輕鬆地探索提取的關係。
示範 - Graph Explorer 入門
開始使用-graph-explorer.mp4
這是另一個有關 Graph Explorer 功能的視訊演示:視訊演示鏈接
Graph Explorer - 知識圖譜
(使用 Graph Explorer 工具對 Amazon Neptune 圖形資料庫進行視覺化探索)
部署說明
該存儲庫提供了一個 CDK 應用程序,它將在兩個 CDK 堆疊上部署整個原型解決方案:
- 主應用程式堆疊(「主堆疊」)可部署到具有所需服務和 Amazon Bedrock 模型的任何區域(例如 us-east-1、us-west-2)。
- Web 應用程式堆疊(「webapp 堆疊」)只能部署到us-east-1,因為它需要 AWS WAF。
您可以將兩個堆疊部署到不同的區域或同一區域(即 us-east-1)。
使用的 AWS 服務
- 亞馬遜基岩
- 亞馬遜海王星
- 亞馬遜文本
- 亞馬遜動態資料庫
- AWS 步進函數
- AWS Lambda
- 亞馬遜簡單佇列服務 (SQS)
- 亞馬遜事件橋
- 亞馬遜簡單儲存服務(S3)
- 亞馬遜雲端前
- AWS 網路應用防火牆
- 亞馬遜彈性運算雲端 (EC2)
- 亞馬遜專有網絡
- 亞馬遜 API 網關
- AWS 身分和存取管理
先決條件
- Amazon Bedrock - 您將需要造訪 Anthropic Claude v3 Sonnet。要在 Amazon Bedrock 中設定模型訪問,請閱讀本文。
- Python - 您需要 Python 3 及更高版本。
- 節點 - 您需要 v18.0.0 及更高版本。
- Docker - 您需要使用 Docker Buildx v24.0.0 及更高版本,並執行 docker 守護程式。
設定虛擬環境
要在 MacOS 和 Linux 上手動建立 virtualenv:
初始化過程完成並建立 virtualenv 後,您可以使用以下步驟啟動 virtualenv。
$ source .venv/bin/activate
如果你是Windows平台,你可以像這樣啟動virtualenv:
% .venvScriptsactivate.bat
啟動 virtualenv 後,您可以安裝所需的依賴項。
$ pip install -r requirements.txt
預部署
如果這是您第一次透過 CDK 將程式碼部署到您的 AWS 帳戶,您需要先在 us-east-1 以及您要部署到的區域中引導您的 AWS 帳戶。否則,您可以跳過此步驟。
$ cdk bootstrap aws:///us-east-1 aws:///
然後繼續運行以下命令:
- 建立基於 React 的 Web 應用程式
- 下載建立 AWS Lambda 層所需的 python 依賴項
- 複製自訂庫(connectionsinsights)
部署
部署解決方案(大約需要 30 分鐘):
清理
銷毀解決方案:
如果由於 S3 儲存桶不會為空而導致刪除失敗,這可能是由於在 cdk 銷毀過程中清空 S3 儲存桶後,存取日誌檔案寫入了這些儲存桶。如果發生這種情況,只需清空這些儲存桶並再次重新執行清理命令即可。