此範例案例描述來自公用 RSS 新聞摘要的文件的大量內嵌與近即時分析管線。 此範例使用 Azure 認知服務,根據文字翻譯、臉部辨識和情緒偵測來提供實用的深入解析。 具體而言,圖片和自然語言處理步驟會根據 Azure 服務匯流排,在傳訊管線中連接在一起。 管線的輸出是包含深入解析或分析的通知。
架構
下載此架構的 Visio 檔案。
資料流程
資料會流經解決方案,如下所示:
RSS 新聞摘要可做為從文件或文章取得資料的產生器。 例如使用文章時,資料通常會包含標題、新聞項目原始本文的摘要,有時則包含圖片。
產生器或內嵌流程會將文章與任何相關聯的映像插入 Azure Cosmos DB 集合中。
通知會觸發 Azure Functions 中的內嵌函式,以將文章文字儲存在 Azure Cosmos DB 中,文章圖片 (如果有的話) 則會儲存在 Azure Blob 儲存體中。 文章接著會傳遞至下一個佇列。
翻譯函式是由佇列事件觸發。 此函式會使用 Azure AI 服務的翻譯文字 API 來偵測語言、視需要翻譯,以及從本文和標題收集情緒、關鍵片語和實體。 接著會將文章傳遞至下一個佇列。
偵測函式會從佇列文章觸發。 此函式會使用電腦視覺服務來偵測相關聯圖片中的物件、地標和文字,然後將文章傳遞至下一個佇列。
臉部函式會從佇列文章觸發。 此函式會使用 Azure 臉部 API 服務來偵測相關聯圖片中臉部的性別和年齡,然後將文章傳遞至下一個佇列。
當所有函式都完成時,會觸發 notify 函式。 此函式會載入文章的已處理記錄並掃描,以取得您想要的任何結果。 如果找到,則會標示內容,並將通知傳送至您選擇的系統。
在每個處理步驟中,函式會將結果寫入 Azure Cosmos DB。 最後,資料可以視需要使用。 例如,您可以用來增強商務程式、尋找新客戶,或找出客戶滿意度問題。
元件
此範例會使用下列 Azure 元件清單。
Azure 儲存體可用來保存與文章相關聯的原始圖片和影片檔案。 使用 Azure App Service 建立次要儲存體帳戶,並用來裝載 Azure 函式程式碼和記錄。
Azure Cosmos DB 會保存文章文字、圖片和影片追蹤資訊。 Azure AI 服務步驟的結果也會儲存在這裡。
Azure Functions 會執行用來回應佇列訊息並轉換傳入內容的函式程式碼。 Azure App Service 會裝載函式程式碼,並以序列方式處理記錄。 此案例包含五個功能:內嵌、轉換、偵測物件、臉部和通知。
Azure 服務匯流排會裝載函式所使用的 Azure 服務匯流排佇列。
Azure AI 服務會根據電腦視覺服務、臉部 API 和翻譯文字機器翻譯服務的實作,為管線提供 AI。
Azure Application Insights 提供分析,協助您診斷問題並了解應用程式的功能。
替代項目
您可以針對此資料流程使用主題和訂用帳戶模式,而不是使用以佇列通知和 Azure Functions 為基礎的模式。 Azure 服務匯流排主題可用來平行處理文章的各個部分,而不是在此範例中完成的序列處理。 如需更多資訊,請比較佇列和主題。
使用 Azure Logic Apps 來實作函式程式碼,並實作記錄層級鎖定,例如 Redlock 演算法所提供的鎖定 (在 Azure Cosmos DB 支援部分文件更新前需用於平行處理)。 如需詳細資訊,請比較 Functions 和 Logic Apps。
使用自定義的 AI 元件而非現有的 Azure 服務來實作此架構。 例如,使用自定義模型擴充管線,以偵測圖片中的特定人員,而不是在此範例中收集的一般人員計數、性別和年齡資料。 若要搭配此架構使用自定義機器學習或 AI 模型,請將模型建置為 RESTful 端點,以便從 Azure Functions 呼叫模型。
使用不同的輸入機制,而不是 RSS 摘要。 使用多個產生器或內嵌流程來饋送 Azure Cosmos DB 和 Azure 儲存體。
Azure 認知搜尋是 Azure 搜尋服務中的 AI 功能,也可用來從圖片、Blob 和其他非結構化資料來源擷取文字。
案例詳細資料
此案例包含英文、俄文和德文新聞摘要的範例,但您可以輕鬆地沿用到其他 RSS 摘要和其他語言。 為了方便部署,資料收集、處理和分析完全以 Azure 服務為基礎。
潛在使用案例
雖然此案例是以處理 RSS 摘要為基礎,但與您需要進行下列處理的任何文件、網站或文章相關:
- 將文字翻譯成您選擇的語言。
- 尋找數位內容中的關鍵片語、實體和使用者情緒。
- 偵測與數位文章相關聯之圖片中的物件、文字和地標。
- 在與數位內容相關聯的圖片中依性別和年齡偵測人員。
考量
這些考量能實作 Azure Well-Architected Framework 的支柱,其為一組指導原則,可以用來改善工作負載的品質。 如需更多資訊,請參閱 Microsoft Azure 結構完善的架構。
為了簡單起見,此範例案例只會使用來自 Azure AI 服務的一些可用 API 和服務。 例如,您可以使用文字分析 API 來分析圖片中的文字。 此案例中的目標語言假設為英文,但您可以將輸入變更為任何支援的語言。
安全性
安全性可提供保證,以避免刻意攻擊和濫用您寶貴的資料和系統。 如需詳細資訊,請參閱安全性的設計檢閱檢查清單。
Azure Cosmos DB 會透過 Microsoft 提供的 C# SDK,使用安全的連線和共用存取簽章。 沒有其他外部面向的表面區域。 詳細了解 Azure Cosmos DB 的安全性最佳做法。
成本最佳化
成本最佳化是關於考慮如何減少不必要的費用,並提升營運效率。 如需詳細資訊,請參閱成本最佳化的設計檢閱檢查清單。
Azure Cosmos DB 功能強大,但在此部署中會產生最高的成本。 您可以重構提供的 Azure Functions 程式碼,以使用另一個儲存體解決方案。
Azure Functions 的定價會根據其執行的方案而有所不同。
卓越營運
卓越營運涵蓋部署應用程式並使其持續在生產環境中執行的作業流程。 如需詳細資訊,請參閱卓越營運的設計檢閱檢查清單。
此解決方案會使用 Application Insights 來收集效能和記錄資訊。 Application Insights 的執行個體會與此部署所需的其他服務相同資源群組中的部署來建立。
若要檢視解決方案所產生的記錄:
前往 Azure 入口網站,然後瀏覽至針對部署所建立的資源群組。
選取 Application Insights 執行個體。
從 [Application Insights] 區段,瀏覽至 [調查\搜尋] 並搜尋資料。
效能效率
效能效率可讓您的工作負載進行調整,以有效率的方式符合使用者對其放置的需求。 有關詳細資訊,請參閱效能效率的設計審核清單。
Azure Functions 調整取決於您使用的主控方案。 此解決方案假設使用量方案,其中計算能力會在需要時自動設定給函式。 您只需在函數運行時付費。 另一個選項是使用專用方案,這可讓您在各層之間調整以設定不同數量的資源。
使用 Azure Cosmos DB 時,關鍵是在夠多的分割區索引鍵之間大致均勻地分配工作負載。 容器可以儲存的資料總量,或容器可支援的總輸送量沒有限制。
部署此案例
注意
您必須擁有現有的 Azure 帳戶。 如尚未擁有 Azure 訂用帳戶,請在開始之前先建立免費帳戶。
此案例的所有程式碼都可以在 GitHub 存放庫中找到。 此存放庫包含用來建置產生器應用程式的原始程式碼,此應用程式會提供此示範的管線。
下一步
- 選擇 Azure 中的分析資料存放區
- 在 Azure 中選擇資料分析技術
- 在 Azure 中選擇巨量資料儲存體技術
- Azure Blob 儲存體簡介
- 歡迎使用 Azure Cosmos DB
- Azure Functions 簡介
相關資源
其他分析架構: